227 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace W3TC;
 | 
						|
 | 
						|
/**
 | 
						|
 * Base cache class
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * class Cache_Base
 | 
						|
 */
 | 
						|
class Cache_Base {
 | 
						|
	/*
 | 
						|
     * Blog id
 | 
						|
     *
 | 
						|
     * @var integer
 | 
						|
     */
 | 
						|
	protected  $_blog_id = 0;
 | 
						|
 | 
						|
	/**
 | 
						|
	 * To separate the caching for different modules
 | 
						|
	 *
 | 
						|
	 * @var string
 | 
						|
	 */
 | 
						|
	protected $_module = '';
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Host
 | 
						|
	 *
 | 
						|
	 * @var string
 | 
						|
	 */
 | 
						|
	protected $_host = '';
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Host
 | 
						|
	 *
 | 
						|
	 * @var int
 | 
						|
	 */
 | 
						|
	protected $_instance_id = 0;
 | 
						|
 | 
						|
	/*
 | 
						|
     * If we are going to return expired data when some other process
 | 
						|
     * is working on new data calculation
 | 
						|
     *
 | 
						|
     * @var boolean
 | 
						|
     */
 | 
						|
	protected $_use_expired_data = false;
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Constructor
 | 
						|
	 *
 | 
						|
	 * @param array   $config
 | 
						|
	 */
 | 
						|
	public function __construct( $config = array() ) {
 | 
						|
		$this->_blog_id = $config['blog_id'];
 | 
						|
		$this->_use_expired_data = isset( $config['use_expired_data'] )?$config['use_expired_data']:false;
 | 
						|
		$this->_module = isset( $config['module'] ) ? $config['module'] : 'default';
 | 
						|
		$this->_host = isset( $config['host'] ) ? $config['host'] : '';
 | 
						|
		$this->_instance_id = isset( $config['instance_id'] ) ? $config['instance_id'] : 0;
 | 
						|
	}
 | 
						|
	/**
 | 
						|
	 * Adds data
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param mixed   $data
 | 
						|
	 * @param integer $expire
 | 
						|
	 * @param string  $group  Used to differentiate between groups of cache values
 | 
						|
	 * @return boolean
 | 
						|
	 */
 | 
						|
	function add( $key, &$data, $expire = 0, $group = '' ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Sets data
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param mixed   $data
 | 
						|
	 * @param integer $expire
 | 
						|
	 * @param string  $group  Used to differentiate between groups of cache values
 | 
						|
	 * @return boolean
 | 
						|
	 */
 | 
						|
	function set( $key, $data, $expire = 0, $group = '' ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns data
 | 
						|
	 *
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param string  $group Used to differentiate between groups of cache values
 | 
						|
	 * @return mixed
 | 
						|
	 */
 | 
						|
	function get( $key, $group = '' ) {
 | 
						|
		list( $data, $has_old ) = $this->get_with_old( $key, $group );
 | 
						|
		return $data;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Return primary data and if old exists
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param string  $group Used to differentiate between groups of cache values
 | 
						|
	 * @return array|mixed
 | 
						|
	 */
 | 
						|
	function get_with_old( $key, $group = '' ) {
 | 
						|
		return array( null, false );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Alias for get for minify cache
 | 
						|
	 *
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param string  $group Used to differentiate between groups of cache values
 | 
						|
	 * @return mixed
 | 
						|
	 */
 | 
						|
	function fetch( $key, $group = '' ) {
 | 
						|
		return $this->get( $key, $group = '' );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Replaces data
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param mixed   $data
 | 
						|
	 * @param integer $expire
 | 
						|
	 * @param string  $group  Used to differentiate between groups of cache values
 | 
						|
	 * @return boolean
 | 
						|
	 */
 | 
						|
	function replace( $key, &$data, $expire = 0, $group = '' ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Deletes data
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $key
 | 
						|
	 * @param string  $group Used to differentiate between groups of cache values
 | 
						|
	 * @return boolean
 | 
						|
	 */
 | 
						|
	function delete( $key, $group = '' ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Deletes primary data and old data
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $key
 | 
						|
	 * @return boolean
 | 
						|
	 */
 | 
						|
	function hard_delete( $key, $group = '' ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Flushes all data
 | 
						|
	 *
 | 
						|
	 * @abstract
 | 
						|
	 * @param string  $group Used to differentiate between groups of cache values
 | 
						|
	 * @return boolean
 | 
						|
	 */
 | 
						|
	function flush( $group = '' ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Checks if engine can function properly in this environment
 | 
						|
	 *
 | 
						|
	 * @return bool
 | 
						|
	 */
 | 
						|
	public function available() {
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Constructs key version key
 | 
						|
	 *
 | 
						|
	 * @param unknown $group
 | 
						|
	 * @return string
 | 
						|
	 */
 | 
						|
	protected function _get_key_version_key( $group = '' ) {
 | 
						|
		return sprintf( 'w3tc_%d_%d_%s_%s_key_version',
 | 
						|
			$this->_instance_id, $this->_blog_id,
 | 
						|
			$this->_module, $group );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Constructs item key
 | 
						|
	 *
 | 
						|
	 * @param unknown $name
 | 
						|
	 * @return string
 | 
						|
	 */
 | 
						|
	public function get_item_key( $name ) {
 | 
						|
		$key = sprintf( 'w3tc_%d_%s_%d_%s_%s',
 | 
						|
			$this->_instance_id, $this->_host, $this->_blog_id,
 | 
						|
			$this->_module, $name );
 | 
						|
		return $key;
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Use key as a counter and add integet value to it
 | 
						|
	 */
 | 
						|
	public function counter_add( $key, $value ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Use key as a counter and add integet value to it
 | 
						|
	 */
 | 
						|
	public function counter_set( $key, $value ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Get counter's value
 | 
						|
	 */
 | 
						|
	public function counter_get( $key ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
}
 |