@ gcV ߢ>b @ @gcV >tUَ@ @gcV TN8@ gcV 꼇w@ gcV ܻ{Ww@ gcV ߔ@ gcV UqX@ @gcV ZȠ0@ @gcV dBj@ @gcV 3`!֨@ @gcV )!ZH@ @gcV 5c@ @gcV ͂Ԙ@ `gcV AhAo@ `gcV ?胀 ڀ@ gcV ^ݪ0@ gcV !0w8@ p$gcV -َ@ P%gcV 0| H@ &gcV Z@ 0(gcV 2z <@ (gcV jտ<@ 0 gcV @ ath Q fcV `$gcV 0 0$gcV q fcV &gcV `fcV P'gcV D V 7V V 7V Wb U V U ` ! @ 0gcV 'gcV `fcV 0 gcV V @ V 7V V 7V Wb U V U <@ 0gcV @%gcV 퍘 <@ 0gcV )gcV ! @ 0 %gcV @ # 0 gcV * dom\node DgcV 0gcV 1 fcV 0gcV fcV 0gcV fcV 0gcV q fcV 0gcV 1 `.gcV 0gcV p P >gcV @ 0gcV `+gcV A .gcV 6gcV 2z <@ 6gcV jտ<@ )f ` gcV Л wk˛fcV Ϡ*o!TfcV .v frfcV G<!`fcV BgIpfcV P P P+gcV 0@ 0gcV @ -gcV .gcV 0gcV @ P-gcV Q .gcV 0gcV -gcV 0 )gcV $ Dom\Document Q fcV ngcV 0gcV -gcV .gcV gcV 0 P .gcV @ 0gcV fcV .gcV gcV 0gcV BKcV .gcV 1 gcV 0gcV 0fcV @/gcV gcV 0gcV fcV /gcV gcV ins' ) { // If future versions of WordPress change this filter's behavior, our behavior should stay consistent. return; } if ( ! \is_array( $old_value ) || ! \is_array( $new_value ) ) { return; } $auto_updates_are_enabled = $this->are_auto_updates_enabled( self::WPSEO_FREE_PLUGIN_ID, $new_value ); $auto_updates_were_enabled = $this->are_auto_updates_enabled( self::WPSEO_FREE_PLUGIN_ID, $old_value ); if ( $auto_updates_are_enabled === $auto_updates_were_enabled ) { // Auto-updates for Yoast SEO have stayed the same, so have neither been enabled or disabled. return; } $auto_updates_have_been_enabled = $auto_updates_are_enabled && ! $auto_updates_were_enabled; if ( $auto_updates_have_been_enabled ) { $this->enable_auto_updates_for_addons( $new_value ); return; } else { $this->disable_auto_updates_for_addons( $new_value ); return; } if ( ! $auto_updates_are_enabled ) { return; } $auto_updates_have_been_removed = false; foreach ( self::ADD_ON_PLUGIN_FILES as $addon ) { if ( ! $this->are_auto_updates_enabled( $addon, $new_value ) ) { $auto_updates_have_been_removed = true; break; } } if ( $auto_updates_have_been_removed ) { $this->enable_auto_updates_for_addons( $new_value ); } } /** * Trigger a change in the auto update detection whenever a new Yoast addon is activated. * * @param string $plugin The plugin that is activated. * * @return void */ public function maybe_toggle_auto_updates_for_new_install( $plugin ) { $not_a_yoast_addon = ! \in_array( $plugin, self::ADD_ON_PLUGIN_FILES, true ); if ( $not_a_yoast_addon ) { return; } $enabled_auto_updates = \get_site_option( 'auto_update_plugins' ); $this->toggle_auto_updates_for_add_ons( 'auto_update_plugins', $enabled_auto_updates, [] ); } /** * Enables auto-updates for all addons. * * @param string[] $auto_updated_plugins The current list of auto-updated plugins. */ protected function enable_auto_updates_for_addons( $auto_updated_plugins ) { $plugins = \array_unique( \array_merge( $auto_updated_plugins, self::ADD_ON_PLUGIN_FILES ) ); \update_site_option( 'auto_update_plugins', $plugins ); } /** * Disables auto-updates for all addons. * * @param string[] $auto_updated_plugins The current list of auto-updated plugins. */ protected function disable_auto_updates_for_addons( $auto_updated_plugins ) { $plugins = \array_values( \array_diff( $auto_updated_plugins, self::ADD_ON_PLUGIN_FILES ) ); \update_site_option( 'auto_update_plugins', $plugins ); } /** * Checks whether auto updates for a plugin are enabled. * * @param string $plugin_id The plugin ID. * @param array $auto_updated_plugins The array of auto updated plugins. * * @return bool Whether auto updates for a plugin are enabled. */ protected function are_auto_updates_enabled( $plugin_id, $auto_updated_plugins ) { if ( $auto_updated_plugins === false || ! \is_array( $auto_updated_plugins ) ) { return false; } return \in_array( $plugin_id, $auto_updated_plugins, true ); } }