Version Description
- Add
cache_enabler_settings_before_validationfilter hook (#298) - Add additional validation when creating cached files (#299)
- Add type casts to several filter hooks (#299)
- Update requirements check notices (#300)
- Update
advanced-cache.phpdrop-in file handling (#297)
Download this release
Release Info
| Developer | keycdn |
| Plugin | |
| Version | 1.8.6 |
| Comparing to | |
| See all releases | |
Code changes from version 1.8.5 to 1.8.6
- advanced-cache.php +6 -3
- cache-enabler.php +1 -1
- constants.php +10 -9
- inc/cache_enabler.class.php +66 -26
- inc/cache_enabler_disk.class.php +22 -15
- inc/cache_enabler_engine.class.php +6 -2
- readme.txt +7 -0
advanced-cache.php
CHANGED
|
@@ -3,11 +3,12 @@
|
|
| 3 |
* The advanced-cache.php drop-in file for Cache Enabler.
|
| 4 |
*
|
| 5 |
* The advanced-cache.php creation method uses this during the disk setup and
|
| 6 |
-
* requirements check. You can copy this file to the wp-content directory and
|
| 7 |
-
*
|
|
|
|
| 8 |
*
|
| 9 |
* @since 1.2.0
|
| 10 |
-
* @change 1.8.
|
| 11 |
*/
|
| 12 |
|
| 13 |
if ( ! defined( 'ABSPATH' ) ) {
|
|
@@ -30,4 +31,6 @@ if ( file_exists( $cache_enabler_constants_file ) ) {
|
|
| 30 |
Cache_Enabler_Engine::start_buffering();
|
| 31 |
}
|
| 32 |
}
|
|
|
|
|
|
|
| 33 |
}
|
| 3 |
* The advanced-cache.php drop-in file for Cache Enabler.
|
| 4 |
*
|
| 5 |
* The advanced-cache.php creation method uses this during the disk setup and
|
| 6 |
+
* requirements check. You can copy this file to the wp-content directory and edit
|
| 7 |
+
* the $cache_enabler_constants_file value as needed. It will be deleted if stale
|
| 8 |
+
* or abandoned.
|
| 9 |
*
|
| 10 |
* @since 1.2.0
|
| 11 |
+
* @change 1.8.6
|
| 12 |
*/
|
| 13 |
|
| 14 |
if ( ! defined( 'ABSPATH' ) ) {
|
| 31 |
Cache_Enabler_Engine::start_buffering();
|
| 32 |
}
|
| 33 |
}
|
| 34 |
+
} elseif ( __DIR__ === WP_CONTENT_DIR ) {
|
| 35 |
+
@unlink( __FILE__ );
|
| 36 |
}
|
cache-enabler.php
CHANGED
|
@@ -6,7 +6,7 @@ Description: Simple and fast WordPress caching plugin.
|
|
| 6 |
Author: KeyCDN
|
| 7 |
Author URI: https://www.keycdn.com
|
| 8 |
License: GPLv2 or later
|
| 9 |
-
Version: 1.8.
|
| 10 |
*/
|
| 11 |
|
| 12 |
/*
|
| 6 |
Author: KeyCDN
|
| 7 |
Author URI: https://www.keycdn.com
|
| 8 |
License: GPLv2 or later
|
| 9 |
+
Version: 1.8.6
|
| 10 |
*/
|
| 11 |
|
| 12 |
/*
|
constants.php
CHANGED
|
@@ -6,15 +6,16 @@
|
|
| 6 |
*/
|
| 7 |
|
| 8 |
$cache_enabler_constants = array(
|
| 9 |
-
'CACHE_ENABLER_VERSION'
|
| 10 |
-
'CACHE_ENABLER_MIN_PHP'
|
| 11 |
-
'CACHE_ENABLER_MIN_WP'
|
| 12 |
-
'CACHE_ENABLER_DIR'
|
| 13 |
-
'CACHE_ENABLER_FILE'
|
| 14 |
-
'CACHE_ENABLER_BASE'
|
| 15 |
-
'CACHE_ENABLER_CACHE_DIR'
|
| 16 |
-
'CACHE_ENABLER_SETTINGS_DIR'
|
| 17 |
-
'
|
|
|
|
| 18 |
);
|
| 19 |
|
| 20 |
foreach ( $cache_enabler_constants as $cache_enabler_constant_name => $cache_enabler_constant_value ) {
|
| 6 |
*/
|
| 7 |
|
| 8 |
$cache_enabler_constants = array(
|
| 9 |
+
'CACHE_ENABLER_VERSION' => '1.8.6',
|
| 10 |
+
'CACHE_ENABLER_MIN_PHP' => '5.6',
|
| 11 |
+
'CACHE_ENABLER_MIN_WP' => '5.1',
|
| 12 |
+
'CACHE_ENABLER_DIR' => __DIR__,
|
| 13 |
+
'CACHE_ENABLER_FILE' => __DIR__ . '/cache-enabler.php',
|
| 14 |
+
'CACHE_ENABLER_BASE' => ( function_exists( 'wp_normalize_path' ) ) ? plugin_basename( __DIR__ . '/cache-enabler.php' ) : null,
|
| 15 |
+
'CACHE_ENABLER_CACHE_DIR' => WP_CONTENT_DIR . '/cache/cache-enabler', // Without a trailing slash.
|
| 16 |
+
'CACHE_ENABLER_SETTINGS_DIR' => WP_CONTENT_DIR . '/settings/cache-enabler', // Without a trailing slash.
|
| 17 |
+
'CACHE_ENABLER_CONSTANTS_FILE' => __FILE__,
|
| 18 |
+
'CACHE_ENABLER_INDEX_FILE' => ABSPATH . 'index.php',
|
| 19 |
);
|
| 20 |
|
| 21 |
foreach ( $cache_enabler_constants as $cache_enabler_constant_name => $cache_enabler_constant_value ) {
|
inc/cache_enabler.class.php
CHANGED
|
@@ -341,7 +341,7 @@ final class Cache_Enabler {
|
|
| 341 |
* is activated, but in this case even if the backend was not truly updated.
|
| 342 |
*
|
| 343 |
* @since 1.5.0
|
| 344 |
-
* @change 1.8.
|
| 345 |
*
|
| 346 |
* @return array The new or current option value.
|
| 347 |
*/
|
|
@@ -357,8 +357,6 @@ final class Cache_Enabler {
|
|
| 357 |
|
| 358 |
$old_value = get_option( 'cache_enabler', array() );
|
| 359 |
$value = self::upgrade_settings( $old_value );
|
| 360 |
-
$value = wp_parse_args( self::get_default_settings( 'system' ), $value );
|
| 361 |
-
$value = wp_parse_args( $value, self::get_default_settings() );
|
| 362 |
$value = self::validate_settings( $value );
|
| 363 |
|
| 364 |
update_option( 'cache_enabler', $value );
|
|
@@ -957,24 +955,53 @@ final class Cache_Enabler {
|
|
| 957 |
* Get the default plugin settings.
|
| 958 |
*
|
| 959 |
* @since 1.5.0
|
| 960 |
-
* @
|
|
|
|
| 961 |
*
|
| 962 |
-
* @param string $settings_type (Optional) The default 'system' settings
|
|
|
|
| 963 |
* @return array Default plugin settings.
|
| 964 |
*/
|
| 965 |
-
private static function get_default_settings( $settings_type =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 966 |
|
| 967 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 968 |
'version' => (string) CACHE_ENABLER_VERSION,
|
| 969 |
'use_trailing_slashes' => (int) ( substr( get_option( 'permalink_structure' ), -1, 1 ) === '/' ),
|
| 970 |
'permalink_structure' => (string) self::get_permalink_structure(), // Deprecated in 1.8.0.
|
| 971 |
);
|
| 972 |
|
| 973 |
-
|
| 974 |
-
|
| 975 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 976 |
|
| 977 |
-
$
|
| 978 |
'cache_expires' => 0,
|
| 979 |
'cache_expiry_time' => 0,
|
| 980 |
'clear_site_cache_on_saved_post' => 0,
|
|
@@ -993,9 +1020,7 @@ final class Cache_Enabler {
|
|
| 993 |
'excluded_cookies' => '',
|
| 994 |
);
|
| 995 |
|
| 996 |
-
|
| 997 |
-
|
| 998 |
-
return $default_settings;
|
| 999 |
}
|
| 1000 |
|
| 1001 |
/**
|
|
@@ -1028,7 +1053,8 @@ final class Cache_Enabler {
|
|
| 1028 |
* This runs when self::update_backend() is called. An empty replacement value
|
| 1029 |
* means the setting will be removed.
|
| 1030 |
*
|
| 1031 |
-
* @since
|
|
|
|
| 1032 |
*
|
| 1033 |
* @param array $settings Plugin settings.
|
| 1034 |
* @return array The plugin settings after maybe being upgraded.
|
|
@@ -1053,6 +1079,7 @@ final class Cache_Enabler {
|
|
| 1053 |
$settings_names = array(
|
| 1054 |
// 1.4.0
|
| 1055 |
'excl_regexp' => 'excluded_page_paths',
|
|
|
|
| 1056 |
|
| 1057 |
// 1.5.0
|
| 1058 |
'expires' => 'cache_expiry_time',
|
|
@@ -2235,7 +2262,7 @@ final class Cache_Enabler {
|
|
| 2235 |
* Check plugin's requirements.
|
| 2236 |
*
|
| 2237 |
* @since 1.1.0
|
| 2238 |
-
* @change 1.8.
|
| 2239 |
*
|
| 2240 |
* @global string $wp_version WordPress version.
|
| 2241 |
*/
|
|
@@ -2276,12 +2303,12 @@ final class Cache_Enabler {
|
|
| 2276 |
printf(
|
| 2277 |
'<div class="notice notice-warning"><p>%s</p></div>',
|
| 2278 |
sprintf(
|
| 2279 |
-
// translators: 1. Cache Enabler 2. advanced-cache.php 3. wp-content/plugins/cache-enabler 4. wp-content
|
| 2280 |
esc_html__( '%1$s was unable to create the required %2$s drop-in file. You can manually create it by locating the sample file in the %3$s directory, editing it as needed, and then saving it in the %4$s directory.', 'cache-enabler' ),
|
| 2281 |
'<strong>Cache Enabler</strong>',
|
| 2282 |
'<code>advanced-cache.php</code>',
|
| 2283 |
-
'<code>' .
|
| 2284 |
-
'<code>' .
|
| 2285 |
)
|
| 2286 |
);
|
| 2287 |
}
|
|
@@ -2326,11 +2353,11 @@ final class Cache_Enabler {
|
|
| 2326 |
printf(
|
| 2327 |
'<div class="notice notice-warning"><p>%s</p></div>',
|
| 2328 |
sprintf(
|
| 2329 |
-
// translators: 1. Cache Enabler 2. 755 3. wp-content/cache 4. file permissions
|
| 2330 |
esc_html__( '%1$s requires write permissions %2$s in the %3$s directory. Please change the %4$s.', 'cache-enabler' ),
|
| 2331 |
'<strong>Cache Enabler</strong>',
|
| 2332 |
'<code>755</code>',
|
| 2333 |
-
'<code>' .
|
| 2334 |
sprintf(
|
| 2335 |
'<a href="%s" target="_blank" rel="nofollow noopener">%s</a>',
|
| 2336 |
'https://wordpress.org/support/article/changing-file-permissions/',
|
|
@@ -2452,14 +2479,29 @@ final class Cache_Enabler {
|
|
| 2452 |
* Validate plugin settings.
|
| 2453 |
*
|
| 2454 |
* @since 1.0.0
|
| 2455 |
-
* @change 1.8.
|
| 2456 |
*
|
| 2457 |
* @param array $settings Plugin settings.
|
| 2458 |
* @return array Validated plugin settings.
|
| 2459 |
*/
|
| 2460 |
public static function validate_settings( $settings ) {
|
| 2461 |
|
| 2462 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2463 |
'cache_expires' => (int) ( ! empty( $settings['cache_expires'] ) ),
|
| 2464 |
'cache_expiry_time' => absint( $settings['cache_expiry_time'] ),
|
| 2465 |
'clear_site_cache_on_saved_post' => (int) ( ! empty( $settings['clear_site_cache_on_saved_post'] ) ),
|
|
@@ -2476,9 +2518,7 @@ final class Cache_Enabler {
|
|
| 2476 |
'excluded_page_paths' => (string) self::validate_regex( $settings['excluded_page_paths'] ),
|
| 2477 |
'excluded_query_strings' => (string) self::validate_regex( $settings['excluded_query_strings'] ),
|
| 2478 |
'excluded_cookies' => (string) self::validate_regex( $settings['excluded_cookies'] ),
|
| 2479 |
-
);
|
| 2480 |
-
|
| 2481 |
-
$validated_settings = wp_parse_args( $validated_settings, self::get_default_settings( 'system' ) );
|
| 2482 |
|
| 2483 |
if ( ! empty( $settings['clear_site_cache_on_saved_settings'] ) ) {
|
| 2484 |
self::clear_site_cache();
|
| 341 |
* is activated, but in this case even if the backend was not truly updated.
|
| 342 |
*
|
| 343 |
* @since 1.5.0
|
| 344 |
+
* @change 1.8.6
|
| 345 |
*
|
| 346 |
* @return array The new or current option value.
|
| 347 |
*/
|
| 357 |
|
| 358 |
$old_value = get_option( 'cache_enabler', array() );
|
| 359 |
$value = self::upgrade_settings( $old_value );
|
|
|
|
|
|
|
| 360 |
$value = self::validate_settings( $value );
|
| 361 |
|
| 362 |
update_option( 'cache_enabler', $value );
|
| 955 |
* Get the default plugin settings.
|
| 956 |
*
|
| 957 |
* @since 1.5.0
|
| 958 |
+
* @since 1.8.6 The `$settings_type` parameter was updated to also accept 'user'.
|
| 959 |
+
* @change 1.8.6
|
| 960 |
*
|
| 961 |
+
* @param string $settings_type (Optional) The default plugin 'system' or 'user' settings, all default plugin
|
| 962 |
+
* settings otherwise.
|
| 963 |
* @return array Default plugin settings.
|
| 964 |
*/
|
| 965 |
+
private static function get_default_settings( $settings_type = '' ) {
|
| 966 |
+
|
| 967 |
+
switch ( $settings_type ) {
|
| 968 |
+
case 'system':
|
| 969 |
+
return self::get_default_system_settings();
|
| 970 |
+
case 'user':
|
| 971 |
+
return self::get_default_user_settings();
|
| 972 |
+
default:
|
| 973 |
+
return wp_parse_args( self::get_default_user_settings(), self::get_default_system_settings() );
|
| 974 |
+
}
|
| 975 |
+
}
|
| 976 |
|
| 977 |
+
/**
|
| 978 |
+
* Get the default plugin system settings.
|
| 979 |
+
*
|
| 980 |
+
* @since 1.8.6
|
| 981 |
+
*
|
| 982 |
+
* @return array Default plugin system settings.
|
| 983 |
+
*/
|
| 984 |
+
private static function get_default_system_settings() {
|
| 985 |
+
|
| 986 |
+
$default_system_settings = array(
|
| 987 |
'version' => (string) CACHE_ENABLER_VERSION,
|
| 988 |
'use_trailing_slashes' => (int) ( substr( get_option( 'permalink_structure' ), -1, 1 ) === '/' ),
|
| 989 |
'permalink_structure' => (string) self::get_permalink_structure(), // Deprecated in 1.8.0.
|
| 990 |
);
|
| 991 |
|
| 992 |
+
return $default_system_settings;
|
| 993 |
+
}
|
| 994 |
+
|
| 995 |
+
/**
|
| 996 |
+
* Get the default plugin user settings.
|
| 997 |
+
*
|
| 998 |
+
* @since 1.8.6
|
| 999 |
+
*
|
| 1000 |
+
* @return array Default plugin user settings.
|
| 1001 |
+
*/
|
| 1002 |
+
private static function get_default_user_settings() {
|
| 1003 |
|
| 1004 |
+
$default_user_settings = array(
|
| 1005 |
'cache_expires' => 0,
|
| 1006 |
'cache_expiry_time' => 0,
|
| 1007 |
'clear_site_cache_on_saved_post' => 0,
|
| 1020 |
'excluded_cookies' => '',
|
| 1021 |
);
|
| 1022 |
|
| 1023 |
+
return $default_user_settings;
|
|
|
|
|
|
|
| 1024 |
}
|
| 1025 |
|
| 1026 |
/**
|
| 1053 |
* This runs when self::update_backend() is called. An empty replacement value
|
| 1054 |
* means the setting will be removed.
|
| 1055 |
*
|
| 1056 |
+
* @since 1.8.0
|
| 1057 |
+
* @change 1.8.6
|
| 1058 |
*
|
| 1059 |
* @param array $settings Plugin settings.
|
| 1060 |
* @return array The plugin settings after maybe being upgraded.
|
| 1079 |
$settings_names = array(
|
| 1080 |
// 1.4.0
|
| 1081 |
'excl_regexp' => 'excluded_page_paths',
|
| 1082 |
+
'incl_attributes' => '',
|
| 1083 |
|
| 1084 |
// 1.5.0
|
| 1085 |
'expires' => 'cache_expiry_time',
|
| 2262 |
* Check plugin's requirements.
|
| 2263 |
*
|
| 2264 |
* @since 1.1.0
|
| 2265 |
+
* @change 1.8.6
|
| 2266 |
*
|
| 2267 |
* @global string $wp_version WordPress version.
|
| 2268 |
*/
|
| 2303 |
printf(
|
| 2304 |
'<div class="notice notice-warning"><p>%s</p></div>',
|
| 2305 |
sprintf(
|
| 2306 |
+
// translators: 1. Cache Enabler 2. advanced-cache.php 3. /path/to/wp-content/plugins/cache-enabler 4. /path/to/wp-content
|
| 2307 |
esc_html__( '%1$s was unable to create the required %2$s drop-in file. You can manually create it by locating the sample file in the %3$s directory, editing it as needed, and then saving it in the %4$s directory.', 'cache-enabler' ),
|
| 2308 |
'<strong>Cache Enabler</strong>',
|
| 2309 |
'<code>advanced-cache.php</code>',
|
| 2310 |
+
'<code>' . CACHE_ENABLER_DIR . '</code>',
|
| 2311 |
+
'<code>' . WP_CONTENT_DIR . '</code>'
|
| 2312 |
)
|
| 2313 |
);
|
| 2314 |
}
|
| 2353 |
printf(
|
| 2354 |
'<div class="notice notice-warning"><p>%s</p></div>',
|
| 2355 |
sprintf(
|
| 2356 |
+
// translators: 1. Cache Enabler 2. 755 3. /path/to/wp-content/cache 4. file permissions
|
| 2357 |
esc_html__( '%1$s requires write permissions %2$s in the %3$s directory. Please change the %4$s.', 'cache-enabler' ),
|
| 2358 |
'<strong>Cache Enabler</strong>',
|
| 2359 |
'<code>755</code>',
|
| 2360 |
+
'<code>' . $parent_dir . '</code>',
|
| 2361 |
sprintf(
|
| 2362 |
'<a href="%s" target="_blank" rel="nofollow noopener">%s</a>',
|
| 2363 |
'https://wordpress.org/support/article/changing-file-permissions/',
|
| 2479 |
* Validate plugin settings.
|
| 2480 |
*
|
| 2481 |
* @since 1.0.0
|
| 2482 |
+
* @change 1.8.6
|
| 2483 |
*
|
| 2484 |
* @param array $settings Plugin settings.
|
| 2485 |
* @return array Validated plugin settings.
|
| 2486 |
*/
|
| 2487 |
public static function validate_settings( $settings ) {
|
| 2488 |
|
| 2489 |
+
/**
|
| 2490 |
+
* Filters the plugin settings before being validated and added or maybe updated.
|
| 2491 |
+
*
|
| 2492 |
+
* This can be an empty array or not contain all plugin settings. It will depend
|
| 2493 |
+
* on if the plugin was just installed, the plugin version being upgraded from, or
|
| 2494 |
+
* the form submitted in the plugin settings page. The plugin system settings are
|
| 2495 |
+
* protected and cannot be overwritten.
|
| 2496 |
+
*
|
| 2497 |
+
* @since 1.8.6
|
| 2498 |
+
*
|
| 2499 |
+
* @param array $settings Plugin settings.
|
| 2500 |
+
*/
|
| 2501 |
+
$settings = (array) apply_filters( 'cache_enabler_settings_before_validation', $settings );
|
| 2502 |
+
$settings = wp_parse_args( $settings, self::get_default_settings( 'user' ) );
|
| 2503 |
+
|
| 2504 |
+
$validated_settings = wp_parse_args( array(
|
| 2505 |
'cache_expires' => (int) ( ! empty( $settings['cache_expires'] ) ),
|
| 2506 |
'cache_expiry_time' => absint( $settings['cache_expiry_time'] ),
|
| 2507 |
'clear_site_cache_on_saved_post' => (int) ( ! empty( $settings['clear_site_cache_on_saved_post'] ) ),
|
| 2518 |
'excluded_page_paths' => (string) self::validate_regex( $settings['excluded_page_paths'] ),
|
| 2519 |
'excluded_query_strings' => (string) self::validate_regex( $settings['excluded_query_strings'] ),
|
| 2520 |
'excluded_cookies' => (string) self::validate_regex( $settings['excluded_cookies'] ),
|
| 2521 |
+
), self::get_default_settings( 'system' ) );
|
|
|
|
|
|
|
| 2522 |
|
| 2523 |
if ( ! empty( $settings['clear_site_cache_on_saved_settings'] ) ) {
|
| 2524 |
self::clear_site_cache();
|
inc/cache_enabler_disk.class.php
CHANGED
|
@@ -61,7 +61,7 @@ final class Cache_Enabler_Disk {
|
|
| 61 |
* Create a static HTML file from the page contents received from the cache engine.
|
| 62 |
*
|
| 63 |
* @since 1.5.0
|
| 64 |
-
* @change 1.
|
| 65 |
*
|
| 66 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 67 |
*/
|
|
@@ -74,8 +74,8 @@ final class Cache_Enabler_Disk {
|
|
| 74 |
*
|
| 75 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 76 |
*/
|
| 77 |
-
$page_contents = apply_filters( 'cache_enabler_page_contents_before_store', $page_contents );
|
| 78 |
-
$page_contents = apply_filters_deprecated( 'cache_enabler_before_store', array( $page_contents ), '1.6.0', 'cache_enabler_page_contents_before_store' );
|
| 79 |
|
| 80 |
self::create_cache_file( $page_contents );
|
| 81 |
}
|
|
@@ -274,12 +274,16 @@ final class Cache_Enabler_Disk {
|
|
| 274 |
* Create the advanced-cache.php drop-in file.
|
| 275 |
*
|
| 276 |
* @since 1.8.0
|
| 277 |
-
* @change 1.8.
|
| 278 |
*
|
| 279 |
* @return string|bool Path to the created file, false on failure.
|
| 280 |
*/
|
| 281 |
public static function create_advanced_cache_file() {
|
| 282 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
$advanced_cache_sample_file = CACHE_ENABLER_DIR . '/advanced-cache.php';
|
| 284 |
|
| 285 |
if ( ! is_readable( $advanced_cache_sample_file ) ) {
|
|
@@ -288,13 +292,12 @@ final class Cache_Enabler_Disk {
|
|
| 288 |
|
| 289 |
$advanced_cache_file = WP_CONTENT_DIR . '/advanced-cache.php';
|
| 290 |
$advanced_cache_file_contents = file_get_contents( $advanced_cache_sample_file );
|
| 291 |
-
$advanced_cache_file_contents = str_replace( '/your/path/to/wp-content/plugins/cache-enabler', CACHE_ENABLER_DIR, $advanced_cache_file_contents );
|
| 292 |
|
| 293 |
-
|
| 294 |
-
|
| 295 |
-
}
|
| 296 |
|
| 297 |
-
$
|
|
|
|
| 298 |
|
| 299 |
return ( $advanced_cache_file_created === false ) ? false : $advanced_cache_file;
|
| 300 |
}
|
|
@@ -303,7 +306,7 @@ final class Cache_Enabler_Disk {
|
|
| 303 |
* Create a static HTML file.
|
| 304 |
*
|
| 305 |
* @since 1.5.0
|
| 306 |
-
* @change 1.8.
|
| 307 |
*
|
| 308 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 309 |
*/
|
|
@@ -327,6 +330,10 @@ final class Cache_Enabler_Disk {
|
|
| 327 |
$page_contents = self::converter( $page_contents );
|
| 328 |
}
|
| 329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 330 |
switch ( substr( $new_cache_file_name, -2, 2 ) ) {
|
| 331 |
case 'br':
|
| 332 |
$page_contents = brotli_compress( $page_contents );
|
|
@@ -1255,7 +1262,7 @@ final class Cache_Enabler_Disk {
|
|
| 1255 |
* and will attempt to update any existing directories accordingly.
|
| 1256 |
*
|
| 1257 |
* @since 1.7.0
|
| 1258 |
-
* @change 1.
|
| 1259 |
*
|
| 1260 |
* @param string $dir Directory path to create.
|
| 1261 |
* @return bool True if the directory either already exists or was created *and* has the
|
|
@@ -1271,7 +1278,7 @@ final class Cache_Enabler_Disk {
|
|
| 1271 |
* @param int $mode Mode that defines the access permissions for the created directory. The mode
|
| 1272 |
* must be an octal number, which means it should have a leading zero. Default is 0755.
|
| 1273 |
*/
|
| 1274 |
-
$mode_octal = apply_filters( 'cache_enabler_mkdir_mode', 0755 );
|
| 1275 |
$mode_string = decoct( $mode_octal ); // Get the last three digits (e.g. '755').
|
| 1276 |
$parent_dir = dirname( $dir );
|
| 1277 |
$fs = self::get_filesystem();
|
|
@@ -1411,7 +1418,7 @@ final class Cache_Enabler_Disk {
|
|
| 1411 |
* This handles converting inline image URLs for the WebP cache version.
|
| 1412 |
*
|
| 1413 |
* @since 1.7.0
|
| 1414 |
-
* @change 1.8.
|
| 1415 |
*
|
| 1416 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 1417 |
* @return string Page contents after maybe being converted.
|
|
@@ -1450,8 +1457,8 @@ final class Cache_Enabler_Disk {
|
|
| 1450 |
*
|
| 1451 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 1452 |
*/
|
| 1453 |
-
$converted_page_contents = apply_filters( 'cache_enabler_page_contents_after_webp_conversion', preg_replace_callback( $image_urls_regex, 'self::convert_webp', $page_contents ) );
|
| 1454 |
-
$converted_page_contents = apply_filters_deprecated( 'cache_enabler_disk_webp_converted_data', array( $converted_page_contents ), '1.6.0', 'cache_enabler_page_contents_after_webp_conversion' );
|
| 1455 |
|
| 1456 |
return $converted_page_contents;
|
| 1457 |
}
|
| 61 |
* Create a static HTML file from the page contents received from the cache engine.
|
| 62 |
*
|
| 63 |
* @since 1.5.0
|
| 64 |
+
* @change 1.8.6
|
| 65 |
*
|
| 66 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 67 |
*/
|
| 74 |
*
|
| 75 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 76 |
*/
|
| 77 |
+
$page_contents = (string) apply_filters( 'cache_enabler_page_contents_before_store', $page_contents );
|
| 78 |
+
$page_contents = (string) apply_filters_deprecated( 'cache_enabler_before_store', array( $page_contents ), '1.6.0', 'cache_enabler_page_contents_before_store' );
|
| 79 |
|
| 80 |
self::create_cache_file( $page_contents );
|
| 81 |
}
|
| 274 |
* Create the advanced-cache.php drop-in file.
|
| 275 |
*
|
| 276 |
* @since 1.8.0
|
| 277 |
+
* @change 1.8.6
|
| 278 |
*
|
| 279 |
* @return string|bool Path to the created file, false on failure.
|
| 280 |
*/
|
| 281 |
public static function create_advanced_cache_file() {
|
| 282 |
|
| 283 |
+
if ( ! is_writable( WP_CONTENT_DIR ) ) {
|
| 284 |
+
return false;
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
$advanced_cache_sample_file = CACHE_ENABLER_DIR . '/advanced-cache.php';
|
| 288 |
|
| 289 |
if ( ! is_readable( $advanced_cache_sample_file ) ) {
|
| 292 |
|
| 293 |
$advanced_cache_file = WP_CONTENT_DIR . '/advanced-cache.php';
|
| 294 |
$advanced_cache_file_contents = file_get_contents( $advanced_cache_sample_file );
|
|
|
|
| 295 |
|
| 296 |
+
$search = '/your/path/to/wp-content/plugins/cache-enabler/constants.php';
|
| 297 |
+
$replace = CACHE_ENABLER_CONSTANTS_FILE;
|
|
|
|
| 298 |
|
| 299 |
+
$advanced_cache_file_contents = str_replace( $search, $replace, $advanced_cache_file_contents );
|
| 300 |
+
$advanced_cache_file_created = file_put_contents( $advanced_cache_file, $advanced_cache_file_contents, LOCK_EX );
|
| 301 |
|
| 302 |
return ( $advanced_cache_file_created === false ) ? false : $advanced_cache_file;
|
| 303 |
}
|
| 306 |
* Create a static HTML file.
|
| 307 |
*
|
| 308 |
* @since 1.5.0
|
| 309 |
+
* @change 1.8.6
|
| 310 |
*
|
| 311 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 312 |
*/
|
| 330 |
$page_contents = self::converter( $page_contents );
|
| 331 |
}
|
| 332 |
|
| 333 |
+
if ( ! Cache_Enabler_Engine::is_cacheable( $page_contents ) ) {
|
| 334 |
+
return; // Filter, HTML minification, or WebP conversion failed.
|
| 335 |
+
}
|
| 336 |
+
|
| 337 |
switch ( substr( $new_cache_file_name, -2, 2 ) ) {
|
| 338 |
case 'br':
|
| 339 |
$page_contents = brotli_compress( $page_contents );
|
| 1262 |
* and will attempt to update any existing directories accordingly.
|
| 1263 |
*
|
| 1264 |
* @since 1.7.0
|
| 1265 |
+
* @change 1.8.6
|
| 1266 |
*
|
| 1267 |
* @param string $dir Directory path to create.
|
| 1268 |
* @return bool True if the directory either already exists or was created *and* has the
|
| 1278 |
* @param int $mode Mode that defines the access permissions for the created directory. The mode
|
| 1279 |
* must be an octal number, which means it should have a leading zero. Default is 0755.
|
| 1280 |
*/
|
| 1281 |
+
$mode_octal = (int) apply_filters( 'cache_enabler_mkdir_mode', 0755 );
|
| 1282 |
$mode_string = decoct( $mode_octal ); // Get the last three digits (e.g. '755').
|
| 1283 |
$parent_dir = dirname( $dir );
|
| 1284 |
$fs = self::get_filesystem();
|
| 1418 |
* This handles converting inline image URLs for the WebP cache version.
|
| 1419 |
*
|
| 1420 |
* @since 1.7.0
|
| 1421 |
+
* @change 1.8.6
|
| 1422 |
*
|
| 1423 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 1424 |
* @return string Page contents after maybe being converted.
|
| 1457 |
*
|
| 1458 |
* @param string $page_contents Page contents from the cache engine as raw HTML.
|
| 1459 |
*/
|
| 1460 |
+
$converted_page_contents = (string) apply_filters( 'cache_enabler_page_contents_after_webp_conversion', preg_replace_callback( $image_urls_regex, 'self::convert_webp', $page_contents ) );
|
| 1461 |
+
$converted_page_contents = (string) apply_filters_deprecated( 'cache_enabler_disk_webp_converted_data', array( $converted_page_contents ), '1.6.0', 'cache_enabler_page_contents_after_webp_conversion' );
|
| 1462 |
|
| 1463 |
return $converted_page_contents;
|
| 1464 |
}
|
inc/cache_enabler_engine.class.php
CHANGED
|
@@ -210,12 +210,16 @@ final class Cache_Enabler_Engine {
|
|
| 210 |
* Whether the contents from the output buffer can be cached.
|
| 211 |
*
|
| 212 |
* @since 1.5.0
|
| 213 |
-
* @change 1.8.
|
| 214 |
*
|
| 215 |
* @param string $contents Contents from the output buffer.
|
| 216 |
* @return bool True if contents from the output buffer are cacheable, false if not.
|
| 217 |
*/
|
| 218 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 219 |
|
| 220 |
$has_html_tag = ( stripos( $contents, '<html' ) !== false );
|
| 221 |
$has_html5_doctype = preg_match( '/^<!DOCTYPE.+html\s*>/i', ltrim( $contents ) );
|
| 210 |
* Whether the contents from the output buffer can be cached.
|
| 211 |
*
|
| 212 |
* @since 1.5.0
|
| 213 |
+
* @change 1.8.6
|
| 214 |
*
|
| 215 |
* @param string $contents Contents from the output buffer.
|
| 216 |
* @return bool True if contents from the output buffer are cacheable, false if not.
|
| 217 |
*/
|
| 218 |
+
public static function is_cacheable( $contents ) {
|
| 219 |
+
|
| 220 |
+
if ( ! is_string( $contents ) ) {
|
| 221 |
+
return false;
|
| 222 |
+
}
|
| 223 |
|
| 224 |
$has_html_tag = ( stripos( $contents, '<html' ) !== false );
|
| 225 |
$has_html5_doctype = preg_match( '/^<!DOCTYPE.+html\s*>/i', ltrim( $contents ) );
|
readme.txt
CHANGED
|
@@ -55,6 +55,13 @@ Cache Enabler captures page contents and saves it as a static HTML file on the s
|
|
| 55 |
|
| 56 |
== Changelog ==
|
| 57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
= 1.8.5 =
|
| 59 |
* Update required WordPress version from 5.5 to 5.1 (#295)
|
| 60 |
* Fix plugin upgrade process when disk settings are outdated and a frontend page is requested (#295)
|
| 55 |
|
| 56 |
== Changelog ==
|
| 57 |
|
| 58 |
+
= 1.8.6 =
|
| 59 |
+
* Add `cache_enabler_settings_before_validation` filter hook (#298)
|
| 60 |
+
* Add additional validation when creating cached files (#299)
|
| 61 |
+
* Add type casts to several filter hooks (#299)
|
| 62 |
+
* Update requirements check notices (#300)
|
| 63 |
+
* Update `advanced-cache.php` drop-in file handling (#297)
|
| 64 |
+
|
| 65 |
= 1.8.5 =
|
| 66 |
* Update required WordPress version from 5.5 to 5.1 (#295)
|
| 67 |
* Fix plugin upgrade process when disk settings are outdated and a frontend page is requested (#295)
|
