updated plugin W3 Total Cache
version 2.5.0
This commit is contained in:
@ -1,27 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* File: Util_Admin.php
|
||||
*
|
||||
* @package W3TC
|
||||
*/
|
||||
|
||||
namespace W3TC;
|
||||
|
||||
/**
|
||||
* Class: Util_Admin
|
||||
*/
|
||||
class Util_Admin {
|
||||
/**
|
||||
* Redirects when in WP Admin
|
||||
* Redirects when in WP Admin.
|
||||
*
|
||||
* @param array $params
|
||||
* @param bool $check_referrer
|
||||
* @param string $page
|
||||
* @static
|
||||
*
|
||||
* @param array $params Parameters.
|
||||
* @param bool $check_referrer Check referrer.
|
||||
* @param string $page Page.
|
||||
*/
|
||||
static public function redirect( $params = array(), $check_referrer = false, $page = '' ) {
|
||||
$url = Util_Request::get_string( 'redirect' );
|
||||
public static function redirect( $params = array(), $check_referrer = false, $page = '' ) {
|
||||
$url = Util_Request::get_string( 'redirect' );
|
||||
$page_url = Util_Request::get_string( 'page' );
|
||||
if ( $url == '' ) {
|
||||
if ( $check_referrer && !empty( $_SERVER['HTTP_REFERER'] ) ) {
|
||||
|
||||
if ( empty( $url ) ) {
|
||||
if ( $check_referrer && ! empty( $_SERVER['HTTP_REFERER'] ) ) {
|
||||
$url = isset( $_SERVER['HTTP_REFERER'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) ) : '';
|
||||
} else {
|
||||
$url = 'admin.php';
|
||||
if ( empty( $page ) )
|
||||
|
||||
if ( empty( $page ) ) {
|
||||
$page = $page_url;
|
||||
$params = array_merge( array(
|
||||
'page' => $page
|
||||
), $params );
|
||||
}
|
||||
|
||||
$params = array_merge( array( 'page' => $page ), $params );
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,164 +42,207 @@ class Util_Admin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect function to current admin page with errors and messages specified
|
||||
* Redirect function to current admin page with errors and messages specified.
|
||||
*
|
||||
* @param array $params
|
||||
* @param array $errors
|
||||
* @param array $notes
|
||||
* @param bool $check_referrer
|
||||
* @static
|
||||
*
|
||||
* @param array $params Parameters.
|
||||
* @param array $errors Errors.
|
||||
* @param array $notes Notes.
|
||||
* @param bool $check_referrer Check referrer.
|
||||
* @return void
|
||||
*/
|
||||
static public function redirect_with_custom_messages( $params, $errors = null,
|
||||
$notes = null, $check_referrer = false ) {
|
||||
if ( empty( $errors ) && Util_Admin::single_system_item( $notes ) ) {
|
||||
Util_Admin::redirect( array_merge( $params, array(
|
||||
'w3tc_note' => $notes[0] ) ), $check_referrer );
|
||||
public static function redirect_with_custom_messages( $params, $errors = null, $notes = null, $check_referrer = false ) {
|
||||
if ( empty( $errors ) && self::single_system_item( $notes ) ) {
|
||||
self::redirect( array_merge( $params, array( 'w3tc_note' => $notes[0] ) ), $check_referrer );
|
||||
return;
|
||||
}
|
||||
if ( Util_Admin::single_system_item( $errors ) && empty( $notes ) ) {
|
||||
Util_Admin::redirect( array_merge( $params, array(
|
||||
'w3tc_error' => $errors[0] ) ), $check_referrer );
|
||||
if ( self::single_system_item( $errors ) && empty( $notes ) ) {
|
||||
self::redirect( array_merge( $params, array( 'w3tc_error' => $errors[0] ) ), $check_referrer );
|
||||
return;
|
||||
}
|
||||
|
||||
$message_id = uniqid();
|
||||
set_transient( 'w3tc_message',
|
||||
update_option(
|
||||
'w3tc_message',
|
||||
array(
|
||||
$message_id => array( 'errors' => $errors, 'notes' => $notes )
|
||||
), 600 );
|
||||
$message_id => array(
|
||||
'errors' => $errors,
|
||||
'notes' => $notes,
|
||||
),
|
||||
),
|
||||
'yes'
|
||||
);
|
||||
|
||||
Util_Admin::redirect( array_merge( $params, array(
|
||||
'w3tc_message' => $message_id ) ), $check_referrer );
|
||||
self::redirect( array_merge( $params, array( 'w3tc_message' => $message_id ) ), $check_referrer );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Special redirect with ability to pass custom_message_id based on $data
|
||||
* Special redirect with ability to pass custom_message_id based on $data.
|
||||
* query_string
|
||||
* actions - which actions to call on render
|
||||
* errors
|
||||
* notes
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @param array $data Data.
|
||||
*/
|
||||
static public function redirect_with_custom_messages2( $data ) {
|
||||
if ( !isset( $data['query_string']['page'] ) ) {
|
||||
$data['query_string']['page'] =
|
||||
Util_Request::get_string( 'page' );
|
||||
if ( $data['query_string']['page'] == 'w3tc_extensions' ) {
|
||||
$data['query_string']['extension'] =
|
||||
Util_Request::get_string( 'extension' );
|
||||
$data['query_string']['action'] =
|
||||
Util_Request::get_string( 'action' );
|
||||
public static function redirect_with_custom_messages2( $data ) {
|
||||
if ( ! isset( $data['query_string']['page'] ) ) {
|
||||
$data['query_string']['page'] = Util_Request::get_string( 'page' );
|
||||
|
||||
if ( 'w3tc_extensions' === $data['query_string']['page'] ) {
|
||||
$data['query_string']['extension'] = Util_Request::get_string( 'extension' );
|
||||
$data['query_string']['action'] = Util_Request::get_string( 'action' );
|
||||
}
|
||||
}
|
||||
|
||||
$message_id = uniqid();
|
||||
set_transient( 'w3tc_message', array( $message_id => $data ), 600 );
|
||||
|
||||
update_option( 'w3tc_message', array( $message_id => $data ), 'yes' );
|
||||
|
||||
$data['query_string']['w3tc_message'] = $message_id;
|
||||
|
||||
Util_Environment::redirect( 'admin.php', $data['query_string'] );
|
||||
}
|
||||
|
||||
|
||||
|
||||
static public function custom_message_id( $errors = null, $notes = null ) {
|
||||
/**
|
||||
* Custom message id.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @param array $errors Errors.
|
||||
* @param array $notes Notes.
|
||||
*/
|
||||
public static function custom_message_id( $errors = null, $notes = null ) {
|
||||
$message_id = uniqid();
|
||||
set_transient( 'w3tc_message',
|
||||
update_option(
|
||||
'w3tc_message',
|
||||
array(
|
||||
$message_id => array( 'errors' => $errors, 'notes' => $notes )
|
||||
), 600 );
|
||||
$message_id => array(
|
||||
'errors' => $errors,
|
||||
'notes' => $notes,
|
||||
),
|
||||
),
|
||||
'yes'
|
||||
);
|
||||
|
||||
return 'w3tc_message=' . $message_id;
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if contains single message item
|
||||
/**
|
||||
* Checks if contains single message item.
|
||||
*
|
||||
* @param $a array
|
||||
* @return boolean
|
||||
* @static
|
||||
*
|
||||
* @param array $a Array.
|
||||
* @return bool
|
||||
*/
|
||||
static public function single_system_item( $a ) {
|
||||
if ( !is_array( $a ) || count( $a ) != 1 )
|
||||
public static function single_system_item( $a ) {
|
||||
if ( ! is_array( $a ) || count( $a ) !== 1 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$first_key = array_keys( $a );
|
||||
$first_key = $first_key[0];
|
||||
$pos = strpos( $a[$first_key], ' ' );
|
||||
if ( $pos === false )
|
||||
$pos = strpos( $a[ $first_key ], ' ' );
|
||||
|
||||
if ( false === $pos ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save config, can't decline save process. (difference from action_save)
|
||||
* Save config, can't decline save process. (difference from action_save).
|
||||
*
|
||||
* Do some actions on config keys update.
|
||||
*
|
||||
* Do some actions on config keys update
|
||||
* Used in several places such as:
|
||||
*
|
||||
* 1. common config save
|
||||
* 2. import settings
|
||||
*
|
||||
* @param Config $current_config
|
||||
* @param Config $new_config
|
||||
* @static
|
||||
*
|
||||
* @param Config $current_config Current config.
|
||||
* @param Config $new_config New config.
|
||||
* @return bool
|
||||
* @throws Exception
|
||||
* @throws \Exception Exception.
|
||||
*/
|
||||
static public function config_save( $current_config, $new_config ) {
|
||||
public static function config_save( $current_config, $new_config ) {
|
||||
$master_config = ( $new_config->is_master() ? $new_config : Dispatcher::config_master() );
|
||||
|
||||
if ( $master_config->get_integer( 'common.instance_id', 0 ) == 0 ) {
|
||||
$master_config->set( 'common.instance_id', mt_rand() );
|
||||
if ( !$new_config->is_master() )
|
||||
|
||||
if ( ! $new_config->is_master() ) {
|
||||
$master_config->save();
|
||||
}
|
||||
}
|
||||
|
||||
$old_config = new Config();
|
||||
$browsercache_dependencies = array();
|
||||
|
||||
if ( $new_config->get_boolean( 'browsercache.enabled' ) ) {
|
||||
$browsercache_dependencies = array_merge( $browsercache_dependencies, array(
|
||||
$browsercache_dependencies = array_merge(
|
||||
$browsercache_dependencies,
|
||||
array(
|
||||
'browsercache.rewrite',
|
||||
'browsercache.cssjs.replace',
|
||||
'browsercache.html.replace',
|
||||
'browsercache.other.replace'
|
||||
) );
|
||||
'browsercache.other.replace',
|
||||
)
|
||||
);
|
||||
|
||||
if ( $new_config->get_boolean( 'browsercache.cssjs.replace' ) ) {
|
||||
$browsercache_dependencies = array_merge( $browsercache_dependencies, array(
|
||||
$browsercache_dependencies = array_merge(
|
||||
$browsercache_dependencies,
|
||||
array(
|
||||
'browsercache.cssjs.compression',
|
||||
'browsercache.cssjs.expires',
|
||||
'browsercache.cssjs.lifetime',
|
||||
'browsercache.cssjs.cache.control',
|
||||
'browsercache.cssjs.cache.policy',
|
||||
'browsercache.cssjs.etag',
|
||||
'browsercache.cssjs.w3tc'
|
||||
) );
|
||||
'browsercache.cssjs.w3tc',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'browsercache.html.replace' ) ) {
|
||||
$browsercache_dependencies = array_merge( $browsercache_dependencies, array(
|
||||
$browsercache_dependencies = array_merge(
|
||||
$browsercache_dependencies,
|
||||
array(
|
||||
'browsercache.html.compression',
|
||||
'browsercache.html.expires',
|
||||
'browsercache.html.lifetime',
|
||||
'browsercache.html.cache.control',
|
||||
'browsercache.html.cache.policy',
|
||||
'browsercache.html.etag',
|
||||
'browsercache.html.w3tc'
|
||||
) );
|
||||
'browsercache.html.w3tc',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'browsercache.other.replace' ) ) {
|
||||
$browsercache_dependencies = array_merge( $browsercache_dependencies, array(
|
||||
$browsercache_dependencies = array_merge(
|
||||
$browsercache_dependencies,
|
||||
array(
|
||||
'browsercache.other.compression',
|
||||
'browsercache.other.expires',
|
||||
'browsercache.other.lifetime',
|
||||
'browsercache.other.cache.control',
|
||||
'browsercache.other.cache.policy',
|
||||
'browsercache.other.etag',
|
||||
'browsercache.other.w3tc'
|
||||
) );
|
||||
'browsercache.other.w3tc',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$old_bc_dependencies_values = array();
|
||||
@ -209,7 +265,9 @@ class Util_Admin {
|
||||
$cache_flush = Dispatcher::component( 'CacheFlush' );
|
||||
if ( $cache_flush->flushable_posts() ) {
|
||||
|
||||
$pgcache_dependencies = array_merge( $browsercache_dependencies, array(
|
||||
$pgcache_dependencies = array_merge(
|
||||
$browsercache_dependencies,
|
||||
array(
|
||||
'pgcache.debug',
|
||||
'pgcache.cache.query',
|
||||
'pgcache.cache.home',
|
||||
@ -236,27 +294,25 @@ class Util_Admin {
|
||||
'objectcache.enabled',
|
||||
'minify.enabled',
|
||||
'mobile.enabled',
|
||||
'referrer.enabled'
|
||||
) );
|
||||
'referrer.enabled',
|
||||
)
|
||||
);
|
||||
|
||||
if ( $new_config->get_boolean( 'pgcache.mirrors.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
'pgcache.mirrors.home_urls'
|
||||
) );
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array( 'pgcache.mirrors.home_urls' ) );
|
||||
}
|
||||
if ( $new_config->get_boolean( 'dbcache.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
'dbcache.debug'
|
||||
) );
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array( 'dbcache.debug' ) );
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'objectcache.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
'objectcache.debug'
|
||||
) );
|
||||
if ( $new_config->getf_boolean( 'objectcache.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array( 'objectcache.debug' ) );
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'minify.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
$pgcache_dependencies = array_merge(
|
||||
$pgcache_dependencies,
|
||||
array(
|
||||
'minify.auto',
|
||||
'minify.debug',
|
||||
'minify.rewrite',
|
||||
@ -277,17 +333,16 @@ class Util_Admin {
|
||||
'minify.htmltidy.options.wrap',
|
||||
'minify.reject.logged',
|
||||
'minify.reject.ua',
|
||||
'minify.reject.uri'
|
||||
) );
|
||||
'minify.reject.uri',
|
||||
)
|
||||
);
|
||||
}
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var W3_ModuleStatus $modules
|
||||
*/
|
||||
|
||||
$modules = Dispatcher::component( 'ModuleStatus' );
|
||||
if ( $modules->is_running( 'cdn' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
$pgcache_dependencies = array_merge(
|
||||
$pgcache_dependencies,
|
||||
array(
|
||||
'cdn.enabled',
|
||||
'cdn.debug',
|
||||
'cdn.engine',
|
||||
@ -323,31 +378,29 @@ class Util_Admin {
|
||||
'cdn.reject.roles',
|
||||
'cdn.reject.ua',
|
||||
'cdn.reject.uri',
|
||||
'cdn.reject.files'
|
||||
) );
|
||||
} elseif ( $old_config->get_boolean( 'cdn.enabled' ) && !$new_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
'cdn.reject.files',
|
||||
)
|
||||
);
|
||||
} elseif ( $old_config->get_boolean( 'cdn.enabled' ) && ! $new_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array( 'cdn.enabled' ) );
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'mobile.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
'mobile.rgroups'
|
||||
) );
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array( 'mobile.rgroups' ) );
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'referrer.enabled' ) ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
'referrer.rgroups'
|
||||
) );
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array( 'referrer.rgroups' ) );
|
||||
}
|
||||
|
||||
|
||||
if ( $new_config->get_boolean( 'browsercache.enabled' ) &&
|
||||
$new_config->get_string( 'pgcache.engine' ) == 'file_generic' ) {
|
||||
$pgcache_dependencies = array_merge( $pgcache_dependencies, array(
|
||||
if ( $new_config->get_boolean( 'browsercache.enabled' ) && $new_config->get_string( 'pgcache.engine' ) === 'file_generic' ) {
|
||||
$pgcache_dependencies = array_merge(
|
||||
$pgcache_dependencies,
|
||||
array(
|
||||
'browsercache.html.last_modified',
|
||||
'browsercache.other.last_modified'
|
||||
) );
|
||||
'browsercache.other.last_modified',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$old_pgcache_dependencies_values = array();
|
||||
@ -368,17 +421,22 @@ class Util_Admin {
|
||||
* Show need empty minify notification
|
||||
*/
|
||||
if ( $current_config->get_boolean( 'minify.enabled' ) && $new_config->get_boolean( 'minify.enabled' ) && ( ( $new_config->get_boolean( 'minify.css.enable' ) && ( $new_config->get_boolean( 'minify.auto' ) || count( $new_config->get_array( 'minify.css.groups' ) ) ) ) || ( $new_config->get_boolean( 'minify.js.enable' ) && ( $new_config->get_boolean( 'minify.auto' ) || count( $new_config->get_array( 'minify.js.groups' ) ) ) ) ) ) {
|
||||
$minify_dependencies = array_merge( $browsercache_dependencies, array(
|
||||
$minify_dependencies = array_merge(
|
||||
$browsercache_dependencies,
|
||||
array(
|
||||
'minify.auto',
|
||||
'minify.debug',
|
||||
'minify.options',
|
||||
'minify.symlinks',
|
||||
'minify.css.enable',
|
||||
'minify.js.enable'
|
||||
) );
|
||||
'minify.js.enable',
|
||||
)
|
||||
);
|
||||
|
||||
if ( $new_config->get_boolean( 'minify.css.enable' ) && ( $new_config->get_boolean( 'minify.auto' ) || count( $new_config->get_array( 'minify.css.groups' ) ) ) ) {
|
||||
$minify_dependencies = array_merge( $minify_dependencies, array(
|
||||
$minify_dependencies = array_merge(
|
||||
$minify_dependencies,
|
||||
array(
|
||||
'minify.css.engine',
|
||||
'minify.css.method',
|
||||
'minify.css.strip.comments',
|
||||
@ -404,12 +462,15 @@ class Util_Admin {
|
||||
'minify.csstidy.options.css_level',
|
||||
'minify.csstidy.options.preserve_css',
|
||||
'minify.csstidy.options.timestamp',
|
||||
'minify.csstidy.options.template'
|
||||
) );
|
||||
'minify.csstidy.options.template',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'minify.js.enable' ) && ( $new_config->get_boolean( 'minify.auto' ) || count( $new_config->get_array( 'minify.js.groups' ) ) ) ) {
|
||||
$minify_dependencies = array_merge( $minify_dependencies, array(
|
||||
$minify_dependencies = array_merge(
|
||||
$minify_dependencies,
|
||||
array(
|
||||
'minify.js.engine',
|
||||
'minify.js.method',
|
||||
'minify.js.combine.header',
|
||||
@ -427,21 +488,15 @@ class Util_Admin {
|
||||
'minify.ccjs.path.java',
|
||||
'minify.ccjs.path.jar',
|
||||
'minify.ccjs.options.compilation_level',
|
||||
'minify.ccjs.options.formatting'
|
||||
) );
|
||||
'minify.ccjs.options.formatting',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var W3_ModuleStatus $modules
|
||||
*/
|
||||
$modules = Dispatcher::component( 'ModuleStatus' );
|
||||
if ( $modules->is_running( 'cdn' ) ) {
|
||||
$minify_dependencies = array_merge( $minify_dependencies, array(
|
||||
'cdn.engine', 'cdn.enabled'
|
||||
) );
|
||||
} elseif ( $old_config->get_boolean( 'cdn.enabled' ) && !$new_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
$minify_dependencies = array_merge( $minify_dependencies, array( 'cdn.engine', 'cdn.enabled' ) );
|
||||
} elseif ( $old_config->get_boolean( 'cdn.enabled' ) && ! $new_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
$minify_dependencies = array_merge( $minify_dependencies, array( 'cdn.enabled' ) );
|
||||
}
|
||||
|
||||
@ -459,11 +514,11 @@ class Util_Admin {
|
||||
}
|
||||
}
|
||||
|
||||
if ( $new_config->get_boolean( 'cdn.enabled' ) && !Cdn_Util::is_engine_mirror( $new_config->get_string( 'cdn.engine' ) ) ) {
|
||||
if ( $new_config->get_boolean( 'cdn.enabled' ) && ! Cdn_Util::is_engine_mirror( $new_config->get_string( 'cdn.engine' ) ) ) {
|
||||
/**
|
||||
* Show notification when CDN enabled
|
||||
*/
|
||||
if ( !$old_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
if ( ! $old_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
$state = Dispatcher::config_state();
|
||||
$state->set( 'cdn.show_note_cdn_upload', true );
|
||||
$state->save();
|
||||
@ -472,9 +527,7 @@ class Util_Admin {
|
||||
/**
|
||||
* Show notification when Browser Cache settings changes
|
||||
*/
|
||||
$cdn_dependencies = array(
|
||||
'browsercache.enabled'
|
||||
);
|
||||
$cdn_dependencies = array( 'browsercache.enabled' );
|
||||
|
||||
if ( $new_config->get_boolean( 'cdn.enabled' ) ) {
|
||||
$cdn_dependencies = array(
|
||||
@ -498,7 +551,7 @@ class Util_Admin {
|
||||
'browsercache.other.cache.control',
|
||||
'browsercache.other.cache.policy',
|
||||
'browsercache.other.etag',
|
||||
'browsercache.other.w3tc'
|
||||
'browsercache.other.w3tc',
|
||||
);
|
||||
}
|
||||
|
||||
@ -510,7 +563,7 @@ class Util_Admin {
|
||||
$new_cdn_dependencies_values[] = $new_config->get( $cdn_dependency );
|
||||
}
|
||||
|
||||
if ( serialize( $old_cdn_dependencies_values ) != serialize( $new_cdn_dependencies_values ) ) {
|
||||
if ( serialize( $old_cdn_dependencies_values ) !== serialize( $new_cdn_dependencies_values ) ) {
|
||||
$state = Dispatcher::config_state();
|
||||
$state->set( 'cdn.show_note_cdn_reupload', true );
|
||||
$state->save();
|
||||
@ -520,10 +573,10 @@ class Util_Admin {
|
||||
/**
|
||||
* Show need empty object cache notification
|
||||
*/
|
||||
if ( $current_config->get_boolean( 'objectcache.enabled' ) ) {
|
||||
if ( $current_config->getf_boolean( 'objectcache.enabled' ) ) {
|
||||
$objectcache_dependencies = array(
|
||||
'objectcache.groups.global',
|
||||
'objectcache.groups.nonpersistent'
|
||||
'objectcache.groups.nonpersistent',
|
||||
);
|
||||
|
||||
$old_objectcache_dependencies_values = array();
|
||||
@ -548,22 +601,21 @@ class Util_Admin {
|
||||
try {
|
||||
$new_config->save();
|
||||
} catch ( \Exception $ex ) {
|
||||
// try to fix environment, it potentially can be fixed silently
|
||||
// dont show error here, it will be called again later
|
||||
// in admin_notices
|
||||
// try to fix environment, it potentially can be fixed silently don't show error here, it will be called again later in admin_notices.
|
||||
try {
|
||||
$environment = Dispatcher::component( 'Root_Environment' );
|
||||
$environment->fix_in_wpadmin( $new_config );
|
||||
} catch ( \Exception $ex ) {
|
||||
} catch ( \Exception $ex ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
// retry save process and complain now on failure
|
||||
// Retry save process and complain now on failure.
|
||||
try {
|
||||
$new_config->save();
|
||||
} catch ( \Exception $ex ) {
|
||||
throw new \Exception(
|
||||
'<strong>Can\'t change configuration</strong>: ' .
|
||||
$ex->getMessage() );
|
||||
'<strong>Can\'t change configuration</strong>: ' . $ex->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -584,7 +636,7 @@ class Util_Admin {
|
||||
w3tc_dbcache_flush();
|
||||
}
|
||||
|
||||
if ( $old_config->get_string( 'objectcache.engine' ) != $new_config->get_string( 'objectcache.engine' ) || $old_config->get_string( 'objectcache.enabled' ) != $new_config->get_string( 'objectcache.enabled' ) ) {
|
||||
if ( $old_config->get_string( 'objectcache.engine' ) != $new_config->get_string( 'objectcache.engine' ) || $old_config->getf_boolean( 'objectcache.enabled' ) !== $new_config->getf_boolean( 'objectcache.enabled' ) ) {
|
||||
w3tc_objectcache_flush();
|
||||
}
|
||||
|
||||
@ -620,8 +672,8 @@ class Util_Admin {
|
||||
* Auto upload browsercache files to CDN
|
||||
*/
|
||||
if ( $new_config->get_boolean( 'cdn.enabled' ) && $new_config->get_string( 'cdn.engine' ) == 'ftp' ) {
|
||||
Util_Admin::cdn_delete_browsercache( $current_config );
|
||||
Util_Admin::cdn_upload_browsercache( $current_config );
|
||||
self::cdn_delete_browsercache( $current_config );
|
||||
self::cdn_upload_browsercache( $current_config );
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -630,11 +682,13 @@ class Util_Admin {
|
||||
|
||||
|
||||
/**
|
||||
* Uploads minify files to CDN
|
||||
* Uploads minify files to CDN.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
static public function cdn_upload_minify() {
|
||||
public static function cdn_upload_minify() {
|
||||
$w3_plugin_cdn = Dispatcher::component( 'Cdn_Plugin' );
|
||||
$common = Dispatcher::component( 'Cdn_Core' );
|
||||
|
||||
@ -644,22 +698,27 @@ class Util_Admin {
|
||||
$results = array();
|
||||
|
||||
foreach ( $files as $file ) {
|
||||
$upload[] = $common->build_file_descriptor( $common->docroot_filename_to_absolute_path( $file ),
|
||||
$common->uri_to_cdn_uri( $common->docroot_filename_to_uri( $file ) ) );
|
||||
$upload[] = $common->build_file_descriptor(
|
||||
$common->docroot_filename_to_absolute_path( $file ),
|
||||
$common->uri_to_cdn_uri( $common->docroot_filename_to_uri( $file ) )
|
||||
);
|
||||
}
|
||||
|
||||
$common->upload( $upload, true, $results );
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads Browser Cache .htaccess to FTP
|
||||
* Uploads Browser Cache .htaccess to FTP.
|
||||
*
|
||||
* @var Config $config
|
||||
* @static
|
||||
*
|
||||
* @param Config $config Config.
|
||||
* @return void
|
||||
*/
|
||||
static public function cdn_upload_browsercache( $config ) {
|
||||
public static function cdn_upload_browsercache( $config ) {
|
||||
$common = Dispatcher::component( 'Cdn_Core' );
|
||||
$Cdn_Core_Admin = Dispatcher::component( 'Cdn_Core_Admin' );
|
||||
|
||||
Dispatcher::component( 'Cdn_Core_Admin' );
|
||||
|
||||
$ce = Dispatcher::component( 'Cdn_Environment' );
|
||||
$rules = $ce->rules_generate_for_ftp( $config );
|
||||
@ -681,59 +740,84 @@ class Util_Admin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes Browser Cache .htaccess from FTP
|
||||
* Deletes Browser Cache .htaccess from FTP.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
static public function cdn_delete_browsercache() {
|
||||
$common = Dispatcher::component( 'Cdn_Core' );
|
||||
|
||||
public static function cdn_delete_browsercache() {
|
||||
$common = Dispatcher::component( 'Cdn_Core' );
|
||||
$cdn_path = Util_Rule::get_cdn_rules_path();
|
||||
$tmp_path = W3TC_CACHE_TMP_DIR . '/' . $cdn_path;
|
||||
|
||||
$results = array();
|
||||
$delete = array(
|
||||
$common->build_file_descriptor( $tmp_path, $cdn_path )
|
||||
);
|
||||
$results = array();
|
||||
$delete = array( $common->build_file_descriptor( $tmp_path, $cdn_path ) );
|
||||
|
||||
$common->delete( $delete, false, $results );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns cookie domain
|
||||
* Returns cookie domain.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
static public function get_cookie_domain() {
|
||||
public static function get_cookie_domain() {
|
||||
$site_url = get_option( 'siteurl' );
|
||||
$parse_url = @parse_url( $site_url );
|
||||
|
||||
if ( $parse_url && !empty( $parse_url['host'] ) ) {
|
||||
if ( $parse_url && ! empty( $parse_url['host'] ) ) {
|
||||
return $parse_url['host'];
|
||||
}
|
||||
|
||||
return isset( $_SERVER['HTTP_HOST'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) : '';
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns current w3tc admin page
|
||||
/**
|
||||
* Returns current w3tc admin page.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
static public function get_current_page() {
|
||||
public static function get_current_page() {
|
||||
$page = Util_Request::get_string( 'page' );
|
||||
|
||||
if ( substr( $page, 0, 5 ) == 'w3tc_' )
|
||||
if ( substr( $page, 0, 5 ) === 'w3tc_' ) {
|
||||
return $page;
|
||||
}
|
||||
|
||||
return 'w3tc_dashboard';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if current page is a W3TC admin page
|
||||
* Returns current w3tc extension id.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_current_extension() {
|
||||
$page = Util_Request::get_string( 'page' );
|
||||
$extension = Util_Request::get_string( 'extension' );
|
||||
|
||||
if ( substr( $page, 0, 5 ) === 'w3tc_' && ! empty( $extension ) ) {
|
||||
return $extension;
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if current page is a W3TC admin page.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
static public function is_w3tc_admin_page() {
|
||||
public static function is_w3tc_admin_page() {
|
||||
$page_val = Util_Request::get_string( 'page' );
|
||||
if ( ! empty( $page_val ) && 'w3tc_' === substr( $page_val, 0, 5 ) ) {
|
||||
return true;
|
||||
@ -749,11 +833,13 @@ class Util_Admin {
|
||||
|
||||
|
||||
/**
|
||||
* Returns current WordPress page
|
||||
* Returns current WordPress page.
|
||||
*
|
||||
* @static
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
static public function get_current_wp_page() {
|
||||
public static function get_current_wp_page() {
|
||||
return Util_Request::get_string( 'page' );
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user