%PDF- %PDF-
Direktori : /home/tradesc/www/relax/wp-content/plugins/wp-rocket/inc/deprecated/ |
Current File : /home/tradesc/www/relax/wp-content/plugins/wp-rocket/inc/deprecated/3.6.php |
<?php defined( 'ABSPATH' ) || exit; /** * Require deprecated classes. */ require_once __DIR__ . '/DeprecatedClassTrait.php'; require_once __DIR__ . '/Engine/Optimization/QueryString/Remove.php'; require_once __DIR__ . '/Engine/Optimization/QueryString/RemoveSubscriber.php'; /** * Class aliases. */ class_alias( '\WP_Rocket\Engine\Admin\Beacon\ServiceProvider', '\WP_Rocket\ServiceProvider\Beacon' ); class_alias( '\WP_Rocket\Engine\HealthCheck\HealthCheck', '\WP_Rocket\Engine\Admin\HealthCheck' ); class_alias( '\WP_Rocket\Engine\Optimization\ServiceProvider', '\WP_Rocket\ServiceProvider\Optimization_Subscribers' ); class_alias( '\WP_Rocket\Engine\Optimization\IEConditionalSubscriber', '\WP_Rocket\Subscriber\Optimization\IE_Conditionals_Subscriber' ); class_alias( '\WP_Rocket\ThirdParty\Plugins\Smush', '\WP_Rocket\Subscriber\Third_Party\Plugins\Smush_Subscriber' ); class_alias( '\WP_Rocket\Engine\Capabilities\Subscriber', '\WP_Rocket\Subscriber\Plugin\Capabilities_Subscriber' ); /** * Generate the content of advanced-cache.php file. * * @since 3.6 deprecated * @since 3.5.5 Uses rocket_get_constant() for constants. * @since 2.1 Add filter rocket_advanced_cache_file. * @since 2.0.3 * * @return string $buffer The content of avanced-cache.php file */ function get_rocket_advanced_cache_file() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\Engine\Cache\AdvancedCache::get_advanced_cache_content()' ); $buffer = "<?php\n"; $buffer .= "defined( 'ABSPATH' ) || exit;\n\n"; // Add a constant to be sure this is our file. $buffer .= "define( 'WP_ROCKET_ADVANCED_CACHE', true );\n\n"; $buffer .= "if ( ! defined( 'WP_ROCKET_CONFIG_PATH' ) ) {\n"; $buffer .= "\tdefine( 'WP_ROCKET_CONFIG_PATH', WP_CONTENT_DIR . '/wp-rocket-config/' );\n"; $buffer .= "}\n\n"; // Include the Mobile Detect class if we have to create a different caching file for mobile. if ( is_rocket_generate_caching_mobile_files() ) { $vendor_path = rocket_get_constant( 'WP_ROCKET_VENDORS_PATH' ); $buffer .= "if ( file_exists( '" . $vendor_path . "classes/class-rocket-mobile-detect.php' ) && ! class_exists( 'Rocket_Mobile_Detect' ) ) {\n"; $buffer .= "\tinclude_once '" . $vendor_path . "classes/class-rocket-mobile-detect.php';\n"; $buffer .= "}\n\n"; } // Register a class autoloader and include the process file. $buffer .= "if ( version_compare( phpversion(), '" . rocket_get_constant( 'WP_ROCKET_PHP_VERSION' ) . "' ) >= 0 ) {\n\n"; // Class autoloader. $autoloader = rocket_direct_filesystem()->get_contents( rocket_get_constant( 'WP_ROCKET_INC_PATH' ) . 'process-autoloader.php' ); if ( $autoloader ) { $autoloader = preg_replace( '@^<\?php\s*@', '', $autoloader ); $autoloader = str_replace( [ "\n", "\n\t\n" ], [ "\n\t", "\n\n" ], trim( $autoloader ) ); $autoloader = str_replace( 'WP_ROCKET_PATH', "'" . rocket_get_constant( 'WP_ROCKET_PATH' ) . "'", $autoloader ); $buffer .= "\t$autoloader\n\n"; } // Initialize the Cache class and process. $buffer .= "\t" . 'if ( ! class_exists( \'\WP_Rocket\Buffer\Cache\' ) ) { if ( ! defined( \'DONOTROCKETOPTIMIZE\' ) ) { define( \'DONOTROCKETOPTIMIZE\', true ); // WPCS: prefix ok. } return; } $rocket_config_class = new \WP_Rocket\Buffer\Config( [ \'config_dir_path\' => \'' . rocket_get_constant( 'WP_ROCKET_CONFIG_PATH' ) . '\', ] ); ( new \WP_Rocket\Buffer\Cache( new \WP_Rocket\Buffer\Tests( $rocket_config_class ), $rocket_config_class, [ \'cache_dir_path\' => \'' . rocket_get_constant( 'WP_ROCKET_CACHE_PATH' ) . '\', ] ) )->maybe_init_process();' . "\n"; $buffer .= "} else {\n"; // Add a constant to provent include issue. $buffer .= "\tdefine( 'WP_ROCKET_ADVANCED_CACHE_PROBLEM', true );\n"; $buffer .= "}\n"; /** * Filter the content of advanced-cache.php file. * * @since 2.1 * * @param string $buffer The content that will be printed in advanced-cache.php. */ return (string) apply_filters( 'rocket_advanced_cache_file', $buffer ); } /** * This warning is displayed when the advanced-cache.php file isn't writeable * * @since 3.6 deprecated * @since 2.0 */ function rocket_warning_advanced_cache_permissions() { _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\Engine\Cache\AdvancedCache::notice_permissions()' ); $advanced_cache_file = WP_CONTENT_DIR . '/advanced-cache.php'; if ( current_user_can( 'rocket_manage_options' ) && ! rocket_direct_filesystem()->is_writable( $advanced_cache_file ) && ( ! defined( 'WP_ROCKET_ADVANCED_CACHE' ) || ! WP_ROCKET_ADVANCED_CACHE ) && rocket_valid_key() ) { $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { return; } $message = rocket_notice_writing_permissions( basename( WP_CONTENT_DIR ) . '/advanced-cache.php' ); rocket_notice_html( [ 'status' => 'error', 'dismissible' => '', 'message' => $message, 'dismiss_button' => __FUNCTION__, 'readonly_content' => get_rocket_advanced_cache_file(), ] ); } } /** * This warning is displayed when the advanced-cache.php file isn't ours * * @since 3.6 Deprecated * @since 2.2 */ function rocket_warning_advanced_cache_not_ours() { _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\Engine\Cache\AdvancedCache::notice_content_not_ours()' ); if ( ! ( 'plugins.php' === $GLOBALS['pagenow'] && isset( $_GET['activate'] ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended && current_user_can( 'rocket_manage_options' ) && ! defined( 'WP_ROCKET_ADVANCED_CACHE' ) && ( defined( 'WP_CACHE' ) && WP_CACHE ) && get_rocket_option( 'version' ) === WP_ROCKET_VERSION && rocket_valid_key() ) { $message = rocket_notice_writing_permissions( basename( WP_CONTENT_DIR ) . '/advanced-cache.php' ); rocket_notice_html( [ 'status' => 'error', 'dismissible' => '', 'message' => $message, ] ); } } /** * Exclude fusion styles from cache busting to prevent cache dir issues * * @deprecated 3.6 * @author Remy Perona * * @param array $excluded_files An array of excluded files. * @return array */ function rocket_exclude_avada_dynamic_css( $excluded_files ) { _deprecated_function( __FUNCTION__ . '()', '3.6' ); $upload_dir = wp_upload_dir(); $excluded_files[] = rocket_clean_exclude_file( $upload_dir['baseurl'] . '/fusion-styles/(.*)' ); return $excluded_files; } /** * Excludes Uncode JS files from remove query strings * * @deprecated 3.6 * @since 3.3.3 * @author Remy Perona * * @param array $exclude_busting Array of CSS and JS filepaths to be excluded. * @return array */ function rocket_exclude_busting_uncode( $exclude_busting ) { _deprecated_function( __FUNCTION__ . '()', '3.6' ); // CSS files. $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/css/style.css' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/css/uncode-icons.css' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/css/style-custom.css' ); // JS files. $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/init.js' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/min/init.min.js' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/app.js' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/app.min.js' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/plugins.js' ); $exclude_busting[] = rocket_clean_exclude_file( get_template_directory_uri() . '/library/js/plugins.min.js' ); return $exclude_busting; } /** * Purge the cache when the beaver builder layout is updated to update the minified files content & URL * * @deprecated 3.6 * @since 2.9 Also clear the cache busting folder * @since 2.8.6 */ function rocket_beaver_builder_clean_domain() { _deprecated_function( __FUNCTION__ . '()', '3.6', 'WP_Rocket\ThirdParty\Plugins\PageBuilder\BeaverBuilder::purge_cache' ); rocket_clean_minify(); rocket_clean_domain(); } /** * Returns paths used for cache busting * * @since 2.9 * @deprecated 3.6 * @author Remy Perona * * @param string $filename name of the cache busting file. * @param string $extension file extension. * @return array Array of paths used for cache busting */ function rocket_get_cache_busting_paths( $filename, $extension ) { _deprecated_function( __FUNCTION__ . '()', '3.6' ); $blog_id = get_current_blog_id(); $cache_busting_path = WP_ROCKET_CACHE_BUSTING_PATH . $blog_id; $filename = rocket_realpath( rtrim( str_replace( [ ' ', '%20' ], '-', $filename ) ) ); $cache_busting_filepath = $cache_busting_path . $filename; $cache_busting_url = WP_ROCKET_CACHE_BUSTING_URL . $blog_id . $filename; switch ( $extension ) { case 'css': /** This filter is documented in inc/functions/minify.php */ $cache_busting_url = apply_filters( 'rocket_css_url', $cache_busting_url ); break; case 'js': /** This filter is documented in inc/functions/minify.php */ $cache_busting_url = apply_filters( 'rocket_js_url', $cache_busting_url ); break; } return [ 'bustingpath' => $cache_busting_path, 'filepath' => $cache_busting_filepath, 'url' => $cache_busting_url, ]; } /** * Caches SCCSS code & remove the default enqueued URL * * @since 2.9 * @deprecated 3.6 * * @author Remy Perona */ function rocket_cache_sccss() { _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\ThirdParty\Plugins\SimpleCustomCss::cache_sccss()' ); $sccss = rocket_get_cache_busting_paths( 'sccss.css', 'css' ); if ( ! file_exists( $sccss['filepath'] ) ) { rocket_sccss_create_cache_file( $sccss['bustingpath'], $sccss['filepath'] ); } if ( file_exists( $sccss['filepath'] ) ) { wp_enqueue_style( 'scss', $sccss['url'], '', filemtime( $sccss['filepath'] ) ); remove_action( 'wp_enqueue_scripts', 'sccss_register_style', 99 ); } } /** * Deletes & recreates cache for SCCSS code * * @since 2.9 * @deprecated 3.6 * * @author Remy Perona */ function rocket_delete_sccss_cache_file() { _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\ThirdParty\Plugins\SimpleCustomCss::update_cache_file()' ); $sccss = rocket_get_cache_busting_paths( 'sccss.css', 'css' ); array_map( 'unlink', glob( $sccss['bustingpath'] . 'sccss*.css' ) ); rocket_clean_domain(); rocket_sccss_create_cache_file( $sccss['bustingpath'], $sccss['filepath'] ); } /** * Returns the filename for SCSSS cache file * * @since 2.9 * @deprecated 3.6 * * @author Remy Perona * * @param string $filename filename. * @return string filename */ function rocket_sccss_cache_busting_filename( $filename ) { _deprecated_function( __FUNCTION__ . '()', '3.6' ); if ( false !== strpos( $filename, 'sccss' ) ) { return preg_replace( '/(?:.*)(sccss(?:.*))/i', '$1', $filename ); } return $filename; } /** * Creates the cache file for SCCSS code * * @since 2.9 * @deprecated 3.6 * * @author Remy Perona * * @param string $cache_busting_path Path to the cache busting directory. * @param string $cache_sccss_filepath Path to the sccss cache file. */ function rocket_sccss_create_cache_file( $cache_busting_path, $cache_sccss_filepath ) { _deprecated_function( __FUNCTION__ . '()', '3.6', '\WP_Rocket\ThirdParty\Plugins\SimpleCustomCss::create_cache_file()' ); $options = get_option( 'sccss_settings' ); $raw_content = isset( $options['sccss-content'] ) ? $options['sccss-content'] : ''; $content = wp_kses( $raw_content, [ '\'', '\"' ] ); $content = str_replace( '>', '>', $content ); if ( ! rocket_direct_filesystem()->is_dir( $cache_busting_path ) ) { rocket_mkdir_p( $cache_busting_path ); } rocket_put_content( $cache_sccss_filepath, $content ); } /** * This warning is displayed when the wp-config.php file isn't writable * * @since 3.6.1 deprecated * @since 2.0 */ function rocket_warning_wp_config_permissions() { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::notice_wp_config_permissions()' ); $config_file = rocket_find_wpconfig_path(); if ( ! ( 'plugins.php' === $GLOBALS['pagenow'] && isset( $_GET['activate'] ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended && current_user_can( 'rocket_manage_options' ) && ( ! rocket_direct_filesystem()->is_writable( $config_file ) && ( ! defined( 'WP_CACHE' ) || ! WP_CACHE ) ) && rocket_valid_key() ) { $boxes = get_user_meta( get_current_user_id(), 'rocket_boxes', true ); if ( in_array( __FUNCTION__, (array) $boxes, true ) ) { return; } $message = rocket_notice_writing_permissions( 'wp-config.php' ); rocket_notice_html( [ 'status' => 'error', 'dismissible' => '', 'message' => $message, 'dismiss_button' => __FUNCTION__, 'readonly_content' => '/** Enable Cache by ' . WP_ROCKET_PLUGIN_NAME . " */\r\ndefine( 'WP_CACHE', true );\r\n", ] ); } } /** * Try to find the correct wp-config.php file, support one level up in file tree. * * @since 3.6 deprecated * @since 2.1 * * @return string|bool The path of wp-config.php file or false if not found. */ function rocket_find_wpconfig_path() { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::find_wpconfig_path()' ); /** * Filter the wp-config's filename. * * @since 2.11 * * @param string $filename The WP Config filename, without the extension. */ $config_file_name = apply_filters( 'rocket_wp_config_name', 'wp-config' ); $abspath = rocket_get_constant( 'ABSPATH' ); $config_file = "{$abspath}{$config_file_name}.php"; $filesystem = rocket_direct_filesystem(); if ( $filesystem->exists( $config_file ) && $filesystem->is_writable( $config_file ) ) { return $config_file; } $abspath_parent = dirname( $abspath ) . DIRECTORY_SEPARATOR; $config_file_alt = "{$abspath_parent}{$config_file_name}.php"; if ( $filesystem->exists( $config_file_alt ) && $filesystem->is_writable( $config_file_alt ) && ! $filesystem->exists( "{$abspath_parent}wp-settings.php" ) ) { return $config_file_alt; } // No writable file found. return false; } /** * Define WP_CACHE to true if it's not defined yet. * * @since 3.6.1 deprecated * @since 2.6 */ function rocket_maybe_set_wp_cache_define() { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::maybe_set_wp_cache()' ); if ( defined( 'WP_CACHE' ) && ! WP_CACHE ) { set_rocket_wp_cache_define( true ); } } /** * Get all dates archives urls associated to a specific post. * * @since 3.6.1 deprecated * @since 1.0 * * @param int $post_id The post ID. * * @return array $urls List of dates URLs on success; else, an empty []. */ function get_rocket_post_dates_urls( $post_id ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\Purge::purge_dates_archives()' ); $time = get_the_time( 'Y-m-d', $post_id ); if ( empty( $time ) ) { return []; } // Extract and prep the year, month, and day. $date = explode( '-', $time ); $year = trailingslashit( get_year_link( $date[0] ) ); $month = trailingslashit( get_month_link( $date[0], $date[1] ) ); $urls = [ "{$year}index.html", "{$year}index.html_gzip", $year . $GLOBALS['wp_rewrite']->pagination_base, "{$month}index.html", "{$month}index.html_gzip", $month . $GLOBALS['wp_rewrite']->pagination_base, get_day_link( $date[0], $date[1], $date[2] ), ]; /** * Filter the list of dates URLs. * * @since 1.1.0 * * @param array $urls List of dates URLs. */ return (array) apply_filters( 'rocket_post_dates_urls', $urls ); } /** * Added or set the value of the WP_CACHE constant * * @since 3.6.1 deprecated * @since 2.0 * * @param bool $turn_it_on The value of WP_CACHE constant. * @return void */ function set_rocket_wp_cache_define( $turn_it_on ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\WPCache::set_wp_cache_constant()' ); // If WP_CACHE is already define, return to get a coffee. if ( ! rocket_valid_key() || ( $turn_it_on && defined( 'WP_CACHE' ) && WP_CACHE ) ) { return; } if ( defined( 'IS_PRESSABLE' ) && IS_PRESSABLE ) { return; } // Get path of the config file. $config_file_path = rocket_find_wpconfig_path(); if ( ! $config_file_path ) { return; } $filesystem = rocket_direct_filesystem(); // Get content of the config file. $config_file_contents = $filesystem->get_contents( $config_file_path ); // Get the value of WP_CACHE constant. $turn_it_on = $turn_it_on ? 'true' : 'false'; /** * Filter allow to change the value of WP_CACHE constant * * @since 2.1 * * @param string $turn_it_on The value of WP_CACHE constant. */ $turn_it_on = apply_filters( 'set_rocket_wp_cache_define', $turn_it_on ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals // Get WP_CACHE constant define. $constant = "define('WP_CACHE', $turn_it_on); // Added by WP Rocket"; // Lets find out if the constant WP_CACHE is defined or not. $wp_cache_found = preg_match( '/^define\(\s*\'WP_CACHE\',(.*)\)/m', $config_file_contents, $matches ); if ( ! $wp_cache_found ) { $config_file_contents = preg_replace( '/(<\?php)/i', "<?php\r\n{$constant}\r\n", $config_file_contents ); } elseif ( ! empty( $matches[1] ) && $matches[1] !== $turn_it_on ) { $config_file_contents = preg_replace( '/^define\(\s*\'WP_CACHE\',(.*)\).+/m', $constant, $config_file_contents ); } // Insert the constant in wp-config.php file. rocket_put_content( $config_file_path, $config_file_contents ); } /** * Get all terms archives urls associated to a specific post * * @since 3.6.1 deprecated * @since 1.0 * * @param int $post_id The post ID. * @return array $urls List of taxonomies URLs */ function get_rocket_post_terms_urls( $post_id ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\Engine\Cache\Purge::get_post_terms_urls()' ); $urls = []; $taxonomies = get_object_taxonomies( get_post_type( $post_id ), 'objects' ); foreach ( $taxonomies as $taxonomy ) { if ( ! $taxonomy->public || 'product_shipping_class' === $taxonomy->name ) { continue; } // Get the terms related to post. $terms = get_the_terms( $post_id, $taxonomy->name ); if ( empty( $terms ) ) { continue; } foreach ( $terms as $term ) { $term_url = get_term_link( $term->slug, $taxonomy->name ); if ( ! is_wp_error( $term_url ) ) { $urls[] = $term_url; } if ( ! is_taxonomy_hierarchical( $taxonomy->name ) ) { continue; } $ancestors = (array) get_ancestors( $term->term_id, $taxonomy->name ); foreach ( $ancestors as $ancestor ) { $ancestor_object = get_term( $ancestor, $taxonomy->name ); if ( ! $ancestor_object instanceof WP_Term ) { continue; } $ancestor_term_url = get_term_link( $ancestor_object->slug, $taxonomy->name ); if ( ! is_wp_error( $ancestor_term_url ) ) { $urls[] = $ancestor_term_url; } } } } /** * Filter the list of taxonomies URLs * * @since 1.1.0 * * @param array $urls List of taxonomies URLs */ return apply_filters( 'rocket_post_terms_urls', $urls ); } /** * Rules to serve gzip compressed CSS & JS files if they exists and client accepts gzip * * @since 3.6.0.3 deprecated * @since 3.6.0.2 Update rules used to prevent content encoding issue * @since 3.6 * @author Remy Perona * * @return string */ function rocket_get_compressed_assets_rules() { _deprecated_function( __FUNCTION__ . '()', '3.6.0.3' ); $rules = <<<HTACCESS <IfModule mod_headers.c> RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -f RewriteRule \.(css|js)$ %{REQUEST_URI}.gz [L] # Prevent mod_deflate double gzip RewriteRule \.gz$ - [E=no-gzip:1] <FilesMatch "\.gz$"> # Serve correct content types <IfModule mod_mime.c> # (1) RemoveType gz # Serve correct content types AddType text/css css.gz AddType text/javascript js.gz # Serve correct content charset AddCharset utf-8 .css.gz \ .js.gz </IfModule> # Force proxies to cache gzipped and non-gzipped files separately Header append Vary Accept-Encoding </FilesMatch> # Serve correct encoding type AddEncoding gzip .gz </IfModule> HTACCESS; return apply_filters( 'rocket_htaccess_compressed_assets', $rules ); } /** * Get list of CSS files to be excluded from async CSS. * * @since 3.6.2 deprecated * @since 2.10 * @author Remy Perona * * @return array An array of URLs for the CSS files to be excluded. */ function get_rocket_exclude_async_css() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals _deprecated_function( __FUNCTION__ . '()', '3.6.2', '\WP_Rocket\Engine\CriticalPath\CriticalCSS::get_exclude_async_css()' ); /** * Filter list of async CSS files * * @since 2.10 * @author Remy Perona * * @param array $exclude_async_css An array of URLs for the CSS files to be excluded. */ $exclude_async_css = (array) apply_filters( 'rocket_exclude_async_css', [] ); $exclude_async_css = array_filter( $exclude_async_css ); $exclude_async_css = array_flip( array_flip( $exclude_async_css ) ); return $exclude_async_css; } /** * Changes the text on the Varnish one-click block. * * @deprecated 3.6.1 * @since 3.0 * * @param array $settings Field settings data. * * @return array modified field settings data. */ function rocket_wpengine_varnish_field( $settings ) { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::varnish_addon_title' ); $settings['varnish_auto_purge']['title'] = sprintf( // Translators: %s = Hosting name. __( 'Your site is hosted on %s, we have enabled Varnish auto-purge for compatibility.', 'rocket' ), 'WP Engine' ); return $settings; } /** * Conflict with WP Engine caching system. * * @deprecated 3.6.1 * @since 2.6.4 * */ function rocket_stop_generate_caching_files_on_wpengine() { _deprecated_function( __FUNCTION__ . '()', '3.6.1' ); add_filter( 'do_rocket_generate_caching_files', '__return_false' ); } /** * Run WP Rocket preload bot after purged the Varnish cache via WP Engine Hosting. * * @deprecated 3.6.1 * @since 2.6.4 */ function rocket_run_rocket_bot_after_wpengine() { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::run_rocket_bot_after_wpengine' ); if ( wpe_param( 'purge-all' ) && defined( 'PWP_NAME' ) && check_admin_referer( PWP_NAME . '-config' ) ) { // Preload cache. run_rocket_bot(); run_rocket_sitemap_preload(); } } /** * Call the cache server to purge the cache with WP Engine hosting. * * @deprecated 3.6.1 * @since 2.6.4 */ function rocket_clean_wpengine() { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::clean_wpengine' ); if ( method_exists( 'WpeCommon', 'purge_memcached' ) ) { WpeCommon::purge_memcached(); } if ( method_exists( 'WpeCommon', 'purge_varnish_cache' ) ) { WpeCommon::purge_varnish_cache(); } } /** * Gets WP Engine CDN Domain. * * @deprecated 3.6.1 * @since 2.8.6 * * return string $cdn_domain the WP Engine CDN Domain. */ function rocket_get_wp_engine_cdn_domain() { _deprecated_function( __FUNCTION__ . '()', '3.6.1' ); global $wpe_netdna_domains, $wpe_netdna_domains_secure; $cdn_domain = ''; $is_ssl = ''; if ( isset( $_SERVER['HTTPS'] ) ) { $is_ssl = sanitize_text_field( wp_unslash( $_SERVER['HTTPS'] ) ); } if ( preg_match( '/^[oO][fF]{2}$/', $is_ssl ) ) { $is_ssl = false; // have seen this! } $native_schema = $is_ssl ? 'https' : 'http'; $domains = $wpe_netdna_domains; // Determine the CDN, if any. if ( $is_ssl ) { $domains = $wpe_netdna_domains_secure; } $wpengine = WpeCommon::instance(); $cdn_domain = $wpengine->get_cdn_domain( $domains, home_url(), $is_ssl ); if ( ! empty( $cdn_domain ) ) { $cdn_domain = $native_schema . '://' . $cdn_domain; } return $cdn_domain; } /** * Add WP Rocket footprint on Buffer. * * @deprecated 3.6.1 * @since 3.3.2 * * @param string $buffer HTML content. * * @return string HTML with WP Rocket footprint. */ function rocket_wpengine_add_footprint( $buffer ) { _deprecated_function( __FUNCTION__ . '()', '3.6.1', '\WP_Rocket\ThirdParty\Hostings\WPEngine::add_footprint' ); if ( ! preg_match( '/<\/html>/i', $buffer ) ) { return $buffer; } $footprint = defined( 'WP_ROCKET_WHITE_LABEL_FOOTPRINT' ) ? "\n" . '<!-- Optimized for great performance' : "\n" . '<!-- This website is like a Rocket, isn\'t it? Performance optimized by ' . WP_ROCKET_PLUGIN_NAME . '. Learn more: https://wp-rocket.me'; $footprint .= ' -->'; return $buffer . $footprint; } /** * Tell WP what to do when plugin is deactivated. * * @since 3.6.3 deprecated * @since 1.0 */ function rocket_deactivation() { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\Engine\Deactivation\Deactivation::deactivate_plugin' ); global $is_apache; $filesystem = rocket_direct_filesystem(); $wp_cache = new WPCache( $filesystem ); if ( ! isset( $_GET['rocket_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['rocket_nonce'] ), 'force_deactivation' ) ) { $causes = []; // .htaccess problem. if ( $is_apache && ! $filesystem->is_writable( get_home_path() . '.htaccess' ) ) { $causes[] = 'htaccess'; } // wp-config problem. if ( ! $wp_cache->find_wpconfig_path() && // This filter is documented in inc/Engine/Cache/WPCache.php. (bool) apply_filters( 'rocket_set_wp_cache_constant', true ) ) { $causes[] = 'wpconfig'; } if ( count( $causes ) ) { set_transient( get_current_user_id() . '_donotdeactivaterocket', $causes ); wp_safe_redirect( wp_get_referer() ); die(); } } // Delete config files. rocket_delete_config_file(); if ( ! count( glob( WP_ROCKET_CONFIG_PATH . '*.php' ) ) ) { // Delete All WP Rocket rules of the .htaccess file. flush_rocket_htaccess( true ); // Remove WP_CACHE constant in wp-config.php. $wp_cache->set_wp_cache_constant( false ); // Delete content of advanced-cache.php. rocket_put_content( WP_CONTENT_DIR . '/advanced-cache.php', '' ); } // Update customer key & licence. wp_remote_get( WP_ROCKET_WEB_API . 'pause-licence.php', [ 'blocking' => false, ] ); // Delete transients. delete_transient( 'rocket_check_licence_30' ); delete_transient( 'rocket_check_licence_1' ); delete_site_transient( 'update_wprocket_response' ); // Unschedule WP Cron events. wp_clear_scheduled_hook( 'rocket_facebook_tracking_cache_update' ); wp_clear_scheduled_hook( 'rocket_google_tracking_cache_update' ); wp_clear_scheduled_hook( 'rocket_cache_dir_size_check' ); /** * WP Rocket deactivation. * * @since 3.1.5 * @author Grégory Viguier */ do_action( 'rocket_deactivation' ); ( new Capabilities_Subscriber() )->remove_rocket_capabilities(); } /** * Tell WP what to do when plugin is activated. * * @since 3.6.3 * @since 1.1.0 */ function rocket_activation() { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\Engine\Activation\Activation::deactivate_plugin' ); ( new Capabilities_Subscriber() )->add_rocket_capabilities(); $filesystem = rocket_direct_filesystem(); $wp_cache = new WPCache( $filesystem ); // Last constants. define( 'WP_ROCKET_PLUGIN_NAME', 'WP Rocket' ); define( 'WP_ROCKET_PLUGIN_SLUG', sanitize_key( WP_ROCKET_PLUGIN_NAME ) ); if ( defined( 'SUNRISE' ) && SUNRISE === 'on' && function_exists( 'domain_mapping_siteurl' ) ) { require WP_ROCKET_INC_PATH . 'domain-mapping.php'; } require WP_ROCKET_FUNCTIONS_PATH . 'options.php'; require WP_ROCKET_FUNCTIONS_PATH . 'formatting.php'; require WP_ROCKET_FUNCTIONS_PATH . 'i18n.php'; require WP_ROCKET_FUNCTIONS_PATH . 'htaccess.php'; if ( rocket_valid_key() ) { // Add All WP Rocket rules of the .htaccess file. flush_rocket_htaccess(); // Add WP_CACHE constant in wp-config.php. $wp_cache->set_wp_cache_constant( true ); } // Create the cache folders (wp-rocket & min). rocket_init_cache_dir(); // Create the config folder (wp-rocket-config). rocket_init_config_dir(); // Create advanced-cache.php file. rocket_generate_advanced_cache_file( new AdvancedCache( WP_ROCKET_PATH . 'views/cache/', $filesystem ) ); /** * WP Rocket activation. * * @since 3.1.5 * @author Grégory Viguier */ do_action( 'rocket_activation' ); // Update customer key & licence. wp_remote_get( WP_ROCKET_WEB_API . 'activate-licence.php', [ 'blocking' => false, ] ); wp_remote_get( home_url(), [ 'timeout' => 0.01, 'blocking' => false, 'user-agent' => 'WP Rocket/Homepage Preload', 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound ] ); } /** * Excludes Divi's Salvatorre script from JS minification * * Exclude it to prevent an error after minification/concatenation * * @since 3.6.3 deprecated * @since 2.9 * @author Remy Perona * * @param Array $excluded_js An array of JS paths to be excluded. * @return Array the updated array of paths */ function rocket_exclude_js_divi( $excluded_js ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Themes\Divi::exclude_js' ); if ( defined( 'ET_BUILDER_URI' ) ) { $excluded_js[] = str_replace( home_url(), '', ET_BUILDER_URI ) . '/scripts/salvattore.min.js'; } return $excluded_js; } /** * Changes the text on the Varnish one-click block. * * @since 3.1 * * @param array $settings Field settings data. * * @return array modified field settings data. */ function rocket_o2switch_varnish_field( $settings ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_addon_title' ); // Translators: %s = Hosting name. $settings['varnish_auto_purge']['title'] = sprintf( __( 'Your site is hosted on %s, we have enabled Varnish auto-purge for compatibility.', 'rocket' ), 'o2switch' ); return $settings; } /** * Purge all the domain. * * @since 3.1 * * @param string $root The path of home cache file. * @param string $lang The current lang to purge. * @param string $url The home url. */ function rocket_o2switch_varnish_clean_domain( $root, $lang, $url ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_clean_domain' ); rocket_o2switch_varnish_http_purge( trailingslashit( $url ) . '?vregex' ); } /** * Purge a specific page. * * @since 3.1 * * @param string $url The url to purge. */ function rocket_o2switch_varnish_clean_file( $url ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_clean_file' ); rocket_o2switch_varnish_http_purge( trailingslashit( $url ) . '?vregex' ); } /** * Purge the homepage and its pagination. * * @since 3.1 * * @param string $root The path of home cache file. * @param string $lang The current lang to purge. */ function rocket_o2switch_varnish_clean_home( $root, $lang ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_clean_home' ); $home_url = trailingslashit( get_rocket_i18n_home_url( $lang ) ); $home_pagination_url = $home_url . trailingslashit( $GLOBALS['wp_rewrite']->pagination_base ) . '?vregex'; rocket_o2switch_varnish_http_purge( $home_url ); rocket_o2switch_varnish_http_purge( $home_pagination_url ); } /** * Send data to Varnish. * * @since 3.1 * * @param string $url The URL to purge. */ function rocket_o2switch_varnish_http_purge( $url ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::varnish_http_purge' ); $parse_url = get_rocket_parse_url( $url ); // This filter is documented in inc/functions/varnish.php. $headers = apply_filters( 'rocket_varnish_purge_headers', [ /** * Filters the host value passed in the request headers * * @since 2.8.15 * @param string The host */ 'host' => apply_filters( 'rocket_varnish_purge_request_host', $parse_url['host'] ), 'X-VC-Purge-Key' => O2SWITCH_VARNISH_PURGE_KEY, ] ); if ( 'vregex' === $parse_url['query'] ) { $headers['X-Purge-Regex'] = '.*'; } /** * Filter the Varnish IP to call * * @since 2.6.8 * * @param string The Varnish IP */ $varnish_ip = apply_filters( 'rocket_varnish_ip', [] ); if ( defined( 'WP_ROCKET_VARNISH_IP' ) && ! $varnish_ip ) { $varnish_ip = WP_ROCKET_VARNISH_IP; } /** * Filter the HTTP protocol (scheme) * * @since 2.7.3 * * @param string The HTTP protocol */ $scheme = apply_filters( 'rocket_varnish_http_purge_scheme', $parse_url['scheme'] ); $parse_url['host'] = ( $varnish_ip ) ? $varnish_ip : $parse_url['host']; $purgeme = $scheme . '://' . $parse_url['host'] . $parse_url['path']; wp_remote_request( $purgeme, [ 'method' => 'PURGE', 'blocking' => false, 'redirection' => 0, 'headers' => $headers, ] ); } /** * Remove expiration on HTML to prevent issue with Varnish cache. * * @since 3.1 * * @param string $rules htaccess rules. * * @return string Updated htaccess rules. */ function rocket_o2switch_remove_html_expire( $rules ) { _deprecated_function( __FUNCTION__ . '()', '3.6.3', '\WP_Rocket\ThirdParty\Hostings\O2Switch::remove_html_expire' ); $rules = preg_replace( '@\s*#\s*Your document html@', '', $rules ); $rules = preg_replace( '@\s*ExpiresByType text/html\s*"access plus \d+ (seconds|minutes|hour|week|month|year)"@', '', $rules ); return $rules; }