installed plugin W3 Total Cache
version 2.3.2
This commit is contained in:
430
wp-content/plugins/w3-total-cache/Cli.php
Normal file
430
wp-content/plugins/w3-total-cache/Cli.php
Normal file
@ -0,0 +1,430 @@
|
||||
<?php
|
||||
namespace W3TC;
|
||||
|
||||
/**
|
||||
* The W3 Total Cache plugin integration
|
||||
*
|
||||
* @package wp-cli
|
||||
* @subpackage commands/third-party
|
||||
*/
|
||||
class W3TotalCache_Command extends \WP_CLI_Command {
|
||||
/**
|
||||
* Creates missing files, writes apache/nginx rules.
|
||||
*
|
||||
* ## OPTIONS
|
||||
* [<server>]
|
||||
* : Subcommand defines server type:
|
||||
* apache create rules for apache server
|
||||
* nginx create rules for nginx server
|
||||
*/
|
||||
function fix_environment( $args = array(), $vars = array() ) {
|
||||
$server_type = array_shift( $args );
|
||||
switch ( $server_type ) {
|
||||
case 'apache':
|
||||
$_SERVER['SERVER_SOFTWARE'] = 'Apache';
|
||||
break;
|
||||
case 'nginx':
|
||||
$_SERVER['SERVER_SOFTWARE'] = 'nginx';
|
||||
break;
|
||||
}
|
||||
|
||||
try {
|
||||
$config = Dispatcher::config();
|
||||
$environment = Dispatcher::component( 'Root_Environment' );
|
||||
$environment->fix_in_wpadmin( $config, true );
|
||||
} catch ( Util_Environment_Exceptions $e ) {
|
||||
\WP_CLI::error( __( 'Environment adjustment failed with error', 'w3-total-cache' ),
|
||||
$e->getCombinedMessage() );
|
||||
}
|
||||
|
||||
\WP_CLI::success( __( 'Environment adjusted.', 'w3-total-cache' ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Clear something from the cache.
|
||||
*
|
||||
* ## OPTIONS
|
||||
* <cache>
|
||||
* : Cache to flush
|
||||
* all flush all caches
|
||||
* posts flush posts (pagecache and further)
|
||||
* post flush the page cache
|
||||
* database flush the database cache
|
||||
* object flush the object cache
|
||||
* minify flush the minify cache
|
||||
*
|
||||
* [--post_id=<id>]
|
||||
* : flush a specific post ID
|
||||
*
|
||||
* [--permalink=<post-permalink>]
|
||||
* : flush a specific permalink
|
||||
*
|
||||
* ## EXAMPLES
|
||||
* # Flush all
|
||||
* $ wp w3-total-cache flush all
|
||||
*
|
||||
* # Flush pagecache and reverse proxies
|
||||
* $ wp w3-total-cache flush posts
|
||||
*/
|
||||
function flush( $args = array(), $vars = array() ) {
|
||||
$args = array_unique( $args );
|
||||
|
||||
do {
|
||||
$cache_type = array_shift( $args );
|
||||
|
||||
switch ( $cache_type ) {
|
||||
case 'all':
|
||||
try {
|
||||
w3tc_flush_all();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing all failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'Everything flushed successfully.', 'w3-total-cache' ) );
|
||||
break;
|
||||
|
||||
case 'posts':
|
||||
try {
|
||||
w3tc_flush_posts();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing posts/pages failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'Posts/pages flushed successfully.', 'w3-total-cache' ) );
|
||||
break;
|
||||
|
||||
case 'db':
|
||||
case 'database':
|
||||
try {
|
||||
$w3_db = Dispatcher::component( 'CacheFlush' );
|
||||
$w3_db->dbcache_flush();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing the DB cache failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'The DB cache is flushed successfully.', 'w3-total-cache' ) );
|
||||
break;
|
||||
|
||||
case 'minify':
|
||||
try {
|
||||
$w3_minify = Dispatcher::component( 'CacheFlush' );
|
||||
$w3_minify->minifycache_flush();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing the minify cache failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'The minify cache is flushed successfully.', 'w3-total-cache' ) );
|
||||
break;
|
||||
|
||||
case 'object':
|
||||
try {
|
||||
$w3_objectcache = Dispatcher::component( 'CacheFlush' );
|
||||
$w3_objectcache->objectcache_flush();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing the object cache failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'The object cache is flushed successfully.', 'w3-total-cache' ) );
|
||||
break;
|
||||
|
||||
case 'post':
|
||||
if ( isset( $vars['post_id'] ) ) {
|
||||
if ( is_numeric( $vars['post_id'] ) ) {
|
||||
try {
|
||||
w3tc_flush_post( $vars['post_id'], true );
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing the page from cache failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'The page is flushed from cache successfully.', 'w3-total-cache' ) );
|
||||
} else {
|
||||
\WP_CLI::error( __( 'This is not a valid post id.', 'w3-total-cache' ) );
|
||||
}
|
||||
}
|
||||
elseif ( isset( $vars['permalink'] ) ) {
|
||||
try {
|
||||
w3tc_flush_url( $vars['permalink'] );
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing the page from cache failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'The page is flushed from cache successfully.', 'w3-total-cache' ) );
|
||||
} else {
|
||||
if ( isset( $flushed_page_cache ) && $flushed_page_cache )
|
||||
break;
|
||||
|
||||
try {
|
||||
w3tc_flush_posts();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Flushing the page cache failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
\WP_CLI::success( __( 'The page cache is flushed successfully.', 'w3-total-cache' ) );
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
\WP_CLI::error( __( 'Not specified what to flush', 'w3-total-cache' ) );
|
||||
}
|
||||
} while ( !empty( $args ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get or set option.
|
||||
*
|
||||
* Options modifications don't update your .htaccess automatically.
|
||||
* Use fix_environment command afterwards to do it.
|
||||
*
|
||||
* ## OPTIONS
|
||||
* <operation>
|
||||
* : operation to do
|
||||
* get get option value
|
||||
* set set option value
|
||||
* <name>
|
||||
* : option name
|
||||
*
|
||||
* [<value>]
|
||||
* : (for set operation) Value to set
|
||||
*
|
||||
* [--state]
|
||||
* : use state, not config
|
||||
* state is used for backend notifications
|
||||
*
|
||||
* [--master]
|
||||
* : use master config/state
|
||||
*
|
||||
* [--type=<type>]
|
||||
* : type of data used boolean/string/integer/array. Default string
|
||||
*
|
||||
* [--delimiter=<delimiter>]
|
||||
* : delimiter to use for array type values
|
||||
*
|
||||
* ## EXAMPLES
|
||||
* # get if pagecache enabled
|
||||
* $ wp w3-total-cache option get pgcache.enabled --type=boolean
|
||||
*
|
||||
* # enable pagecache
|
||||
* $ wp w3-total-cache option set pgcache.enabled true --type=boolean
|
||||
*
|
||||
* # don't show wp-content permissions notification
|
||||
* $ wp w3-total-cache option set common.hide_note_wp_content_permissions true --state --type=boolean
|
||||
*/
|
||||
function option( $args = array(), $vars = array() ) {
|
||||
$op = array_shift( $args );
|
||||
$name = array_shift( $args );
|
||||
|
||||
if ( empty( $name ) ) {
|
||||
\WP_CLI::error( __( '<name> parameter is not specified', 'w3-total-cache' ) );
|
||||
return;
|
||||
}
|
||||
if ( strpos( $name, '::' ) !== FALSE ) {
|
||||
$name = explode('::', $name);
|
||||
}
|
||||
|
||||
$c = null;
|
||||
if ( isset( $vars['state'] ) ) {
|
||||
if ( isset( $vars['master'] ) )
|
||||
$c = Dispatcher::config_state_master();
|
||||
else
|
||||
$c = Dispatcher::config_state();
|
||||
} else {
|
||||
if ( isset( $vars['master'] ) )
|
||||
$c = Dispatcher::config_master();
|
||||
else
|
||||
$c = Dispatcher::config();
|
||||
}
|
||||
|
||||
if ( $op == 'get') {
|
||||
$type =( isset( $vars['type'] ) ? $vars['type'] : 'string' );
|
||||
|
||||
if ( $type == 'boolean' )
|
||||
$v = $c->get_boolean( $name ) ? 'true' : 'false';
|
||||
elseif ( $type == 'integer' )
|
||||
$v = $c->get_integer( $name );
|
||||
elseif ( $type == 'string' )
|
||||
$v = $c->get_string( $name );
|
||||
elseif ( $type == 'array' )
|
||||
$v = json_encode( $c->get_array( $name ), JSON_PRETTY_PRINT );
|
||||
else {
|
||||
\WP_CLI::error( __( 'Unknown type ' . $type, 'w3-total-cache' ) );
|
||||
return;
|
||||
}
|
||||
|
||||
echo esc_html( $v ) . "\n";
|
||||
} elseif ( $op == 'set' ) {
|
||||
$type =( isset( $vars['type'] ) ? $vars['type'] : 'string' );
|
||||
|
||||
if ( count( $args ) <= 0 ) {
|
||||
\WP_CLI::error( __( '<value> parameter is not specified', 'w3-total-cache' ) );
|
||||
return;
|
||||
}
|
||||
$value = array_shift( $args );
|
||||
|
||||
if ( $type == 'boolean' ) {
|
||||
if ( $value == 'true' || $value == '1' || $value == 'on' )
|
||||
$v = true;
|
||||
elseif ( $value == 'false' || $value == '0' || $value == 'off' )
|
||||
$v = false;
|
||||
else {
|
||||
\WP_CLI::error( __( '<value> parameter ' . $value . ' is not boolean', 'w3-total-cache' ) );
|
||||
return;
|
||||
}
|
||||
} elseif ( $type == 'integer' )
|
||||
$v = (integer)$value;
|
||||
elseif ( $type == 'string' )
|
||||
$v = $value;
|
||||
elseif ( $type == 'array' ) {
|
||||
$delimiter =( isset( $vars['delimiter'] ) ? $vars['delimiter'] : ',' );
|
||||
$v = explode($delimiter, $value );
|
||||
} else {
|
||||
\WP_CLI::error( __( 'Unknown type ' . $type, 'w3-total-cache' ) );
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$c->set( $name, $v );
|
||||
$c->save();
|
||||
\WP_CLI::success( __( 'Option updated successfully.', 'w3-total-cache' ) );
|
||||
} catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Option value update failed.', 'w3-total-cache' ) );
|
||||
}
|
||||
|
||||
} else {
|
||||
\WP_CLI::error( __( '<operation> parameter is not specified', 'w3-total-cache' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Imports configuration file
|
||||
*
|
||||
* ## OPTIONS
|
||||
* <filename>
|
||||
* : Filename to import
|
||||
*/
|
||||
function import( $args = array(), $vars = array() ) {
|
||||
$filename = array_shift( $args );
|
||||
|
||||
try {
|
||||
$config = new Config();
|
||||
if ( !file_exists( $filename ) || !is_readable( $filename ) ) {
|
||||
throw new \Exception( 'Cant read file: ' . $filename );
|
||||
}
|
||||
if ( !$config->import( $filename ) ) {
|
||||
throw new \Exception( 'import failed' );
|
||||
}
|
||||
$config->save();
|
||||
} catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Config import failed: ' . $e->getMessage(), 'w3-total-cache' ) );
|
||||
}
|
||||
|
||||
\WP_CLI::success( __( 'Configuration successfully imported.', 'w3-total-cache' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Update query string for all static files
|
||||
*/
|
||||
function querystring() {
|
||||
try {
|
||||
$w3_querystring = Dispatcher::component( 'CacheFlush' );
|
||||
$w3_querystring->browsercache_flush();
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( sprintf(
|
||||
__( 'updating the query string failed. with error %s', 'w3-total-cache' ),
|
||||
$e ) );
|
||||
}
|
||||
|
||||
\WP_CLI::success( __( 'The query string was updated successfully.', 'w3-total-cache' ) );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Purges URL's from cdn and varnish if enabled
|
||||
*
|
||||
* @param array $args List if files to be purged, absolute path or relative to wordpress installation path
|
||||
*/
|
||||
function cdn_purge( $args = array() ) {
|
||||
$purgeitems = array();
|
||||
foreach ( $args as $file ) {
|
||||
$cdncommon = Dispatcher::component( 'Cdn_Core' );
|
||||
if (file_exists($file)) {
|
||||
$local_path = $file;
|
||||
} else {
|
||||
$local_path = ABSPATH . $file;
|
||||
}
|
||||
$remote_path = $file;
|
||||
$purgeitems[] = $cdncommon->build_file_descriptor( $local_path, $remote_path );
|
||||
}
|
||||
|
||||
try {
|
||||
$w3_cdn_purge = Dispatcher::component( 'CacheFlush' );
|
||||
$w3_cdn_purge->cdn_purge_files( $purgeitems );
|
||||
}
|
||||
catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'Files did not successfully purge with error %s', 'w3-total-cache' ), $e );
|
||||
}
|
||||
\WP_CLI::success( __( 'Files purged successfully.', 'w3-total-cache' ) );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generally triggered from a cronjob, performs manual page cache Garbage collection
|
||||
*/
|
||||
function pgcache_cleanup() {
|
||||
try {
|
||||
$o = Dispatcher::component( 'PgCache_Plugin_Admin' );
|
||||
$o->cleanup();
|
||||
} catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'PageCache Garbage cleanup failed: %s',
|
||||
'w3-total-cache' ), $e );
|
||||
}
|
||||
|
||||
\WP_CLI::success( __( 'PageCache Garbage cleanup triggered successfully.',
|
||||
'w3-total-cache' ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generally triggered from a cronjob, performs manual page cache priming
|
||||
* ## OPTIONS
|
||||
* [--start=<start>]
|
||||
* : Start since <start> entry of sitemap
|
||||
*
|
||||
* [--limit=<limit>]
|
||||
* : load no more than <limit> pages
|
||||
*
|
||||
*/
|
||||
function pgcache_prime( $args = array(), $vars = array() ) {
|
||||
try {
|
||||
$log_callback = function($m) {
|
||||
\WP_CLI::log($m);
|
||||
};
|
||||
|
||||
$o = Dispatcher::component( 'PgCache_Plugin_Admin' );
|
||||
$o->prime( ( isset( $vars['start'] ) ? $vars['start'] - 1 : null ),
|
||||
( isset( $vars['limit'] ) ? $vars['limit'] : null ),
|
||||
$log_callback );
|
||||
|
||||
} catch ( \Exception $e ) {
|
||||
\WP_CLI::error( __( 'PageCache Priming did failed: %s',
|
||||
'w3-total-cache' ), $e );
|
||||
}
|
||||
|
||||
\WP_CLI::success( __( 'PageCache Priming triggered successfully.',
|
||||
'w3-total-cache' ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( method_exists( '\WP_CLI', 'add_command' ) ) {
|
||||
\WP_CLI::add_command( 'w3-total-cache', '\W3TC\W3TotalCache_Command' );
|
||||
\WP_CLI::add_command( 'total-cache', '\W3TC\W3TotalCache_Command' );
|
||||
} else {
|
||||
// backward compatibility
|
||||
\WP_CLI::addCommand( 'w3-total-cache', '\W3TC\W3TotalCache_Command' );
|
||||
\WP_CLI::addCommand( 'total-cache', '\W3TC\W3TotalCache_Command' );
|
||||
}
|
Reference in New Issue
Block a user