y' . DIRECTORY_SEPARATOR . 'YUI-CSS-compressor-PHP-port-4.1.0' . DIRECTORY_SEPARATOR; $class = substr( $class, 24 ); } if ( !is_null( $base ) ) { $file = $base . strtr( $class, "\\_", DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR ) . '.php'; if ( file_exists( $file ) ) require_once $file; } else if ( substr( $class, 0, 5 ) == 'W3TC\\' ) { $filename = W3TC_DIR . DIRECTORY_SEPARATOR . substr( $class, 5 ) . '.php'; if ( file_exists( $filename ) ) { require $filename; } else { if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { echo 'Attempt to create object of class ' . $class . ' has been made, but file ' . $filename . ' doesnt exists'; debug_print_backtrace(); } } } } spl_autoload_register( 'w3tc_class_autoload' ); /** * W3 Total Cache plugins API */ /** * Returns config. * * !!! NOTICE !!! * 3rd party developers, please do not modify the plugin's configuration without * notifying the user beforehand. As an alternative, throw a notification to the * user like: "Configure W3 Total Cache for me" and allow the user to dismiss * the notification. * !!! NOTICE !!! */ function w3tc_config() { /* * Some plugins make incorrect decisions based on configuration * and force to disable modules working otherwise or * adds notices on each wp-admin page without ability to remove it. * By defining W3TC_CONFIG_HIDE you may still use w3tc configuration you like. */ if ( defined( 'W3TC_CONFIG_HIDE' ) && W3TC_CONFIG_HIDE ) return new W3_Config(); $config = \W3TC\Dispatcher::config(); return $config; } /** * Purges/Flushes everything */ function w3tc_flush_all( $extras = null ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->flush_all( $extras ); } /** * Purges/Flushes post page */ function w3tc_flush_post( $post_id, $extras = null ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->flush_post( $post_id, $extras ); } /** * Purges/Flushes all posts */ function w3tc_flush_posts( $extras = null ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->flush_posts( $extras ); } /** * Purges/Flushes url */ function w3tc_flush_url( $url, $extras = null ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->flush_url( $url, $extras ); } /** * Purges/Flushes separate cache group */ function w3tc_flush_group( $group, $extras = null ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->flush_group( $group, $extras ); } /** * deprecated * Shortcut for page cache flush * * @return boolean */ function w3tc_pgcache_flush() { return w3tc_flush_posts(); } /** * deprecated * Shortcut for page post cache flush * * @param integer $post_id * @return boolean */ function w3tc_pgcache_flush_post( $post_id ) { return w3tc_flush_post( $post_id ); } /** * deprecated * Shortcut for page post cache flush by url * * @param integer $url * @return boolean */ function w3tc_pgcache_flush_url( $url ) { return w3tc_flush_url( $url ); } /** * deprecated * Shortcut for refreshing the media query string. */ function w3tc_browsercache_flush() { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); return $o->browsercache_flush(); } /** * deprecated * Shortcut for database cache flush * */ function w3tc_dbcache_flush() { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->dbcache_flush(); } /** * deprecated * Shortcut for minify cache flush * */ function w3tc_minify_flush() { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->minifycache_flush(); } /** * deprecated * Shortcut for objectcache cache flush * */ function w3tc_objectcache_flush() { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); $o->objectcache_flush(); } /** * deprecated * Shortcut for CDN purge files * * @param array $files Array consisting of uri paths (i.e wp-content/uploads/image.pnp) * @return mixed */ function w3tc_cdn_purge_files( $files ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); return $o->cdn_purge_files( $files ); } /** * deprecated * Prints script tag for scripts group * * @param string $location * @retun void */ function w3tc_minify_script_group( $location ) { $o = \W3TC\Dispatcher::component( 'Minify_Plugin' ); $o->printed_scripts[] = $location; $r = $o->get_script_group( $location ); echo $r['body']; } /** * deprecated * Prints style tag for styles group * * @param string $location * @retun void */ function w3tc_minify_style_group( $location ) { $o = \W3TC\Dispatcher::component( 'Minify_Plugin' ); $o->printed_styles[] = $location; $r = $o->get_style_group( $location ); echo $r['body']; } /** * deprecated * Prints script tag for custom scripts * * @param string|array $files * @param boolean $blocking * @return void */ function w3tc_minify_script_custom( $files, $blocking = true ) { $o = \W3TC\Dispatcher::component( 'Minify_Plugin' ); echo $o->get_script_custom( $files, $blocking ); } /** * deprecated * Prints style tag for custom styles * * @param string|array $files * @return void */ function w3tc_minify_style_custom( $files ) { $o = \W3TC\Dispatcher::component( 'Minify_Plugin' ); $r = $o->get_style_custom( $files ); echo $r['body']; } /** * deprecated * Use Util_Theme::get_themes() to get a list themenames to use with user agent groups * * @param unknown $group_name * @param string $theme the themename default is default theme. For childtheme it should be parentthemename/childthemename * @param string $redirect * @param array $agents Remember to escape special characters like spaces, dots or dashes with a backslash. Regular expressions are also supported. * @param bool $enabled */ function w3tc_save_user_agent_group( $group_name, $theme = 'default', $redirect = '', $agents = array(), $enabled = false ) { $o = \W3TC\Dispatcher::component( 'Mobile_UserAgent' ); $o->save_group( $group_name, $theme, $redirect, $agents, $enabled ); } /** * deprecated * * @param unknown $group */ function w3tc_delete_user_agent_group( $group ) { $o = \W3TC\Dispatcher::component( 'Mobile_UserAgent' ); $o->delete_group( $group ); } /** * deprecated * * @param unknown $group * @return mixed */ function w3tc_get_user_agent_group( $group ) { $o = \W3TC\Dispatcher::component( 'Mobile_UserAgent' ); return $o->get_group_values( $group ); } /** * deprecated * Use Util_Theme::get_themes() to get a list themenames to use with referrer groups * * @param unknown $group_name * @param string $theme the themename default is default theme. For childtheme it should be parentthemename/childthemename * @param string $redirect * @param array $referrers Remember to escape special characters like spaces, dots or dashes with a backslash. Regular expressions are also supported. * @param bool $enabled */ function w3tc_save_referrer_group( $group_name, $theme = 'default', $redirect = '', $referrers = array(), $enabled = false ) { $o = \W3TC\Dispatcher::component( 'Mobile_Referrer' ); $o->save_group( $group_name, $theme, $redirect, $referrers, $enabled ); } /** * deprecated * * @param unknown $group */ function w3tc_delete_referrer_group( $group ) { $o = \W3TC\Dispatcher::component( 'Mobile_Referrer' ); $o->delete_group( $group ); } /** * deprecated * * @param unknown $group * @return mixed */ function w3tc_get_referrer_group( $group ) { $o = \W3TC\Dispatcher::component( 'Mobile_Referrer' ); return $o->get_group_values( $group ); } /** * deprecated * Flushes files from opcache. * * @param bool $http if delete request should be made over http to current site. Default false. * @return mixed */ function w3tc_opcache_flush( $http = false ) { if ( !$http ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); return $o->opcache_flush(); } else { $url = WP_PLUGIN_URL . '/' . dirname( W3TC_FILE ) . '/pub/opcache.php'; $path = parse_url( $url, PHP_URL_PATH ); $post = array( 'method' => 'POST', 'timeout' => 45, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'body' => array( 'nonce' => wp_hash( $path ), 'command' => 'flush' ), ); $result = wp_remote_post( $url, $post ); if ( is_wp_error( $result ) ) { return $result; } elseif ( $result['response']['code'] != '200' ) { return $result['response']['code']; } return true; } } /** * deprecated * Reloads files. * * @param string[] $files list of files supports, fullpath, from root, wp-content * @param bool $http if delete request should be made over http to current site. Default false. * @return mixed */ function w3tc_opcache_flush_file( $file, $http = false ) { if ( !$http ) { $o = \W3TC\Dispatcher::component( 'CacheFlush' ); return $o->opcache_flush_file( $file ); } else { $url = WP_PLUGIN_URL . '/' . dirname( W3TC_FILE ) . '/pub/opcache.php'; $path = parse_url( $url, PHP_URL_PATH ); $post = array( 'method' => 'POST', 'timeout' => 45, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'body' => array( 'nonce' => wp_hash( $path ), 'command' => 'flush_file', 'file' => $file ), ); $result = wp_remote_post( $url, $post ); if ( is_wp_error( $result ) ) { return $result; } elseif ( $result['response']['code'] != '200' ) { return $result['response']['code']; } return true; } } /** * Deprecated. Retained for 3rd parties that used it. see w3tc_config() * * Some plugins make incorrect decisions based on configuration * and force to disable modules working otherwise or * adds notices on each wp-admin page without ability to remove it. * By defining W3TC_CONFIG_HIDE you may still use w3tc configuration you like. */ if ( defined( 'W3TC_CONFIG_HIDE' ) && W3TC_CONFIG_HIDE ) { class W3_Config { public function __construct( $master = false, $blog_id = null ) { } public function get_string( $key, $default = '', $trim = true ) { return ''; } public function get_integer( $key, $default = 0 ) { return 0; } public function get_boolean( $key, $default = false ) { return false; } } } else { class W3_Config extends \W3TC\Config { public function __construct( $master = false, $blog_id = null ) { if ( $master ) $blog_id = 0; return parent::__construct($blog_id); } } } /** * Deprecated. Retained for 3rd parties that use it. see w3tc_config() */ class W3_ConfigWriter { public function __construct( $p1 = 0, $p2 = 0 ) { } public function set( $p1 = 0, $p2 = 0 ) { } public function save( $p1 = 0, $p2 = 0 ) { } public function refresh_w3tc() { } } /** Deprecated. Retained for 3rd parties that use it. see w3tc_config() */ function w3_instance( $class ) { $legacy_class_name = null; if ( $class == 'W3_Config' ) { if ( defined( 'W3TC_CONFIG_HIDE' ) && W3TC_CONFIG_HIDE ) return new W3_Config(); $legacy_class_name = 'Config'; } elseif ( $class == 'W3_ObjectCacheBridge' ) $legacy_class_name = 'ObjectCache_WpObjectCache'; elseif ( $class == 'W3_PgCache' ) $legacy_class_name = 'PgCache_ContentGrabber'; elseif ( $class == 'W3_Redirect' ) $legacy_class_name = 'Mobile_Redirect'; else return null; return \W3TC\Dispatcher::component( $legacy_class_name ); }