HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wpicare/wp-content/plugins/wp-rocket/inc/Engine/Cache/Config/ConfigSubscriber.php
<?php
namespace WP_Rocket\Engine\Cache\Config;

use WP_Rocket\Event_Management\Subscriber_Interface;
use WP_Rocket\Admin\Options_Data;
use WP_Rocket\Admin\Options;

/**
 * Subscriber for the Cache Config
 */
class ConfigSubscriber implements Subscriber_Interface {

	/**
	 * Options Data instance.
	 *
	 * @var Options_Data
	 */
	private $options;

	/**
	 * Options instance.
	 *
	 * @var Options
	 */
	private $options_api;

	/**
	 * Creates an instance of the Cache Config Subscriber.
	 *
	 * @param Options_Data $options     WP Rocket options instance.
	 * @param Options      $options_api Options instance.
	 */
	public function __construct( Options_Data $options, Options $options_api ) {
		$this->options     = $options;
		$this->options_api = $options_api;
	}

	/**
	 * Return an array of events that this subscriber wants to listen to.
	 *
	 * @return array
	 */
	public static function get_subscribed_events() {
		return [
			'permalink_structure_changed' => 'regenerate_config_file',
			'pre_update_option_' . rocket_get_constant( 'WP_ROCKET_SLUG', 'wp_rocket_settings' ) => [ 'change_cache_reject_uri_with_permalink', 10, 2 ],
		];
	}

	/**
	 * Returns a matching user added patterns with permalink structure
	 *
	 * @param array $patterns user pattern.
	 * @return array
	 */
	private function match_pattern_with_permalink_structure( array $patterns ): array {
		if ( empty( $patterns ) ) {
			return $patterns;
		}

		$patterns = array_map(
			function ( $uri ) {
				if ( false !== strpos( $uri, 'index.php' ) || '/' === $uri ) {
					return $uri;
				}

				return user_trailingslashit( $uri );
			},
			$patterns
			);

		return $patterns;
	}

	/**
	 * Regenerate config file.
	 *
	 * @return void
	 */
	public function regenerate_config_file() {
		$cache_reject_uri = $this->match_pattern_with_permalink_structure( $this->options->get( 'cache_reject_uri', [] ) );

		$this->options->set( 'cache_reject_uri', $cache_reject_uri );
		$this->options_api->set( 'settings', $this->options->get_options() );

		rocket_generate_config_file();
	}

	/**
	 * Modify cache_reject_uri values.
	 *
	 * @param mixed $value The new, unserialized option value.
	 * @param mixed $old_value The old option value.
	 * @return array
	 */
	public function change_cache_reject_uri_with_permalink( $value, $old_value ): array {
		if ( ! isset( $old_value['cache_reject_uri'], $value['cache_reject_uri'] ) ) {
			return $value;
		}

		if ( $old_value['cache_reject_uri'] === $value['cache_reject_uri'] ) {
			return $value;
		}

		$value['cache_reject_uri'] = $this->match_pattern_with_permalink_structure( $value['cache_reject_uri'] );
		return $value;
	}
}