0m9l9Jg99%9=9 R9i99y99T99,9 9@59999999Ц99@#: #: 9K9@9C9M9L(9A999D9990999xp9)9 999:99! 9O9tF9999'9w99`:919099$99999299C9C9 P9 _9(l90~989@9H9P99999999 9( /90>9 #:` #:899#: #:X"9b999y99k9q9V9s999w 9Q9 9 9 9 9 9 9 9 9 9 9#9V9 9 9 9J9 9 9 9 9 9!9 !9)9!9!!96 9;9W9&!9/!99!9G!99n9#M9P!9D9_9u999X9n9S!9M999W!909P9@9\!99,9,9^9,9,9,9-9-9$-9B-9T-9r-9^9-9_9-929-9X9%999-9999)9-9-9999h would make this write a silent no-op. remove_filter( 'default_option_' . self::PREVENT_REDIRECT_OPTION, '__return_true' ); // The return value also tells us the flag is ours, so a value stored by somebody // else is never removed on shutdown. $this->is_redirect_prevented = update_option( self::PREVENT_REDIRECT_OPTION, true ); if ( $this->is_redirect_prevented ) { // Ownership marker, never autoloaded: it is read only when a plugin is deleted. update_option( self::OWN_REDIRECT_OPTION, true, false ); } } /** * Record WPForms as the install source when Sugar Calendar Lite is activated. * * @since 2.0.1 * * @param string $plugin_basename Path to the activated plugin file relative to the plugins directory. */ public function maybe_record_source( $plugin_basename ) { if ( ! is_string( $plugin_basename ) || strpos( $plugin_basename, Helper::SLUG . '/' ) !== 0 ) { return; } $this->is_activated = true; update_option( self::SOURCE_OPTION, 'wpforms' ); } /** * Remove the redirect flag when our install never reached activation. * * The flag is written before activate_plugin() because Sugar Calendar reads it while * activating, but the request can still end without activation: a WP_Error from * activate_plugin(), or a user who may install plugins but not activate them. Leaving * the flag behind would silently skip the wizard of a later manual activation. * * @since 2.0.1 */ public function maybe_revert_prevent_redirect(): void { if ( ! $this->is_redirect_prevented || $this->is_activated ) { return; } delete_option( self::PREVENT_REDIRECT_OPTION ); delete_option( self::OWN_REDIRECT_OPTION ); } /** * Drop our redirect flag when Sugar Calendar is deleted. * * Sugar Calendar has no uninstall routine and treats the option as a permanent opt-out, * so the flag we wrote for one install would keep suppressing the setup wizard of any * later manual install. A flag stored by somebody else carries no ownership marker and stays. * * @since 2.0.1 * * @param string $plugin_file Path to the deleted plugin file relative to the plugins directory. * @param bool $deleted Whether the deletion succeeded. */ public function maybe_clean_prevent_redirect( $plugin_file, $deleted = true ): void { $folder = strtok( (string) $plugin_file, '/' ); if ( ! $deleted || ( $folder !== Helper::SLUG && $folder !== Helper::PRO_SLUG ) ) { return; } if ( ! get_option( self::OWN_REDIRECT_OPTION ) ) { return; } // The hook fires before delete_plugins() clears the plugins cache, and it fires once per // plugin, so both the cache and the resolved basename are refreshed before looking for a // remaining copy: Lite can sit next to Pro, which still needs the flag. wp_clean_plugins_cache( false ); if ( Helper::is_installed( true ) ) { return; } delete_option( self::PREVENT_REDIRECT_OPTION ); delete_option( self::OWN_REDIRECT_OPTION ); } } 2. September 2026 - fl.zema.de
Zum Inhalt springen
fl.zema.de
Zentrum für Mechatronik und Automatisierungstechnik
fl.zema.defl.zema.de
  • Über uns
  • Forschungsbereiche
  • Projekte
  • News
  • Veranstaltungen
  • Karriere
  • Kontakt
  • Über uns
  • Forschungsbereiche
  • Projekte
  • News
  • Veranstaltungen
  • Karriere
  • Kontakt

Einladung zur Abschlussveranstaltung: VProSaar

2. September 2026

Vier Jahre Forschung, ein Nachmittag voller…

Erfahren Sie mehr

Zertifiziertes Managementsystem nach
Meldesystem gemäß Hinweisgeberschutzgesetz
fl.zema.de
  • Impressum
  • Datenschutzerklärung
  • AGB
  • Ausschreibungen und Vergaben
  • Privatsphäre-Einstellungen ändern
  • Historie der Privatsphäre-Einstellungen
  • Einwilligungen widerrufen
Footer
Go to Top
de_DEDE
de_DEDE en_GBEN fr_FRFR
Cookie Consent mit Real Cookie Banner