get( self::get_key( $blog_id, $preview ) ); if ( is_array( $config ) ) { return $config; } return null; } /** * Removes config cache entry so that it can be read from original source * on next attempt * * @param int $blog_id Blog ID. * @param bool $preview Preview flag. */ public static function remove_item( $blog_id, $preview ) { $cache = self::get_cache(); $cache->hard_delete( self::get_key( $blog_id, false ) ); $cache->hard_delete( self::get_key( $blog_id, true ) ); } /** * Saves config cache entry. * * @param int $blog_id Blog ID. * @param bool $preview Preview flag. * @param mixed $data Data. */ public static function save_item( $blog_id, $preview, $data ) { $cache = self::get_cache(); $cache->set( self::get_key( $blog_id, $preview ), $data ); } /** * Retrieves cache instance. * * @return object */ private static function get_cache() { static $cache = null; if ( ! is_null( $cache ) ) { return $cache; } switch ( W3TC_CONFIG_CACHE_ENGINE ) { case 'memcached': $engine_config = array( 'servers' => explode( ',', W3TC_CONFIG_CACHE_MEMCACHED_SERVERS ), 'persistent' => ( defined( 'W3TC_CONFIG_CACHE_MEMCACHED_PERSISTENT' ) ? W3TC_CONFIG_CACHE_MEMCACHED_PERSISTENT : true ), 'aws_autodiscovery' => ( defined( 'W3TC_CONFIG_CACHE_MEMCACHED_AWS_AUTODISCOVERY' ) ? W3TC_CONFIG_CACHE_MEMCACHED_AWS_AUTODISCOVERY : false ), 'username' => ( defined( 'W3TC_CONFIG_CACHE_MEMCACHED_USERNAME' ) ? W3TC_CONFIG_CACHE_MEMCACHED_USERNAME : '' ), 'password' => ( defined( 'W3TC_CONFIG_CACHE_MEMCACHED_PASSWORD' ) ? W3TC_CONFIG_CACHE_MEMCACHED_PASSWORD : '' ), 'key_version_mode' => 'disabled', ); break; case 'redis': $engine_config = array( 'servers' => explode( ',', W3TC_CONFIG_CACHE_REDIS_SERVERS ), 'verify_tls_certificates' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_VERIFY_TLS_CERTIFICATES' ) ? W3TC_CONFIG_CACHE_REDIS_VERIFY_TLS_CERTIFICATES : true ), 'persistent' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_PERSISTENT' ) ? W3TC_CONFIG_CACHE_REDIS_PERSISTENT : true ), 'dbid' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_DBID' ) ? W3TC_CONFIG_CACHE_REDIS_DBID : 0 ), 'password' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_PASSWORD' ) ? W3TC_CONFIG_CACHE_REDIS_PASSWORD : '' ), 'timeout' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_TIMEOUT' ) ? W3TC_CONFIG_CACHE_REDIS_TIMEOUT : 0 ), 'retry_interval' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_RETRY_INTERVAL' ) ? W3TC_CONFIG_CACHE_REDIS_RETRY_INTERVAL : 0 ), 'read_timeout' => ( defined( 'W3TC_CONFIG_CACHE_REDIS_READ_TIMEOUT' ) ? W3TC_CONFIG_CACHE_REDIS_READ_TIMEOUT : 0 ), 'key_version_mode' => 'disabled', ); break; default: $engine_config = array(); } $engine_config['blog_id'] = '0'; $engine_config['module'] = 'config'; $engine_config['host'] = ''; $engine_config['instance_id'] = ( defined( 'W3TC_INSTANCE_ID' ) ? W3TC_INSTANCE_ID : 0 ); $cache = Cache::instance( W3TC_CONFIG_CACHE_ENGINE, $engine_config ); return $cache; } /** * Retrieves config cache key. * * @param int $blog_id Blog ID. * @param bool $preview Preview flag. * * @return string */ private static function get_key( $blog_id, $preview ) { return 'w3tc_config_' . $blog_id . ( $preview ? '_preview' : '' ); } }