Blame | Last modification | View Log | RSS feed
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');/*** CodeIgniter** An open source application development framework for PHP 4.3.2 or newer** @package CodeIgniter* @author ExpressionEngine Dev Team* @copyright Copyright (c) 2006 - 2012 EllisLab, Inc.* @license http://codeigniter.com/user_guide/license.html* @link http://codeigniter.com* @since Version 2.0* @filesource*/// ------------------------------------------------------------------------/*** CodeIgniter Caching Class** @package CodeIgniter* @subpackage Libraries* @category Core* @author ExpressionEngine Dev Team* @link*/class CI_Cache extends CI_Driver_Library {protected $valid_drivers = array('cache_apc', 'cache_file', 'cache_memcached', 'cache_dummy');protected $_cache_path = NULL; // Path of cache files (if file-based cache)protected $_adapter = 'dummy';protected $_backup_driver;// ------------------------------------------------------------------------/*** Constructor** @param array*/public function __construct($config = array()){if ( ! empty($config)){$this->_initialize($config);}}// ------------------------------------------------------------------------/*** Get** Look for a value in the cache. If it exists, return the data* if not, return FALSE** @param string* @return mixed value that is stored/FALSE on failure*/public function get($id){return $this->{$this->_adapter}->get($id);}// ------------------------------------------------------------------------/*** Cache Save** @param string Unique Key* @param mixed Data to store* @param int Length of time (in seconds) to cache the data** @return boolean true on success/false on failure*/public function save($id, $data, $ttl = 60){return $this->{$this->_adapter}->save($id, $data, $ttl);}// ------------------------------------------------------------------------/*** Delete from Cache** @param mixed unique identifier of the item in the cache* @return boolean true on success/false on failure*/public function delete($id){return $this->{$this->_adapter}->delete($id);}// ------------------------------------------------------------------------/*** Clean the cache** @return boolean false on failure/true on success*/public function clean(){return $this->{$this->_adapter}->clean();}// ------------------------------------------------------------------------/*** Cache Info** @param string user/filehits* @return mixed array on success, false on failure*/public function cache_info($type = 'user'){return $this->{$this->_adapter}->cache_info($type);}// ------------------------------------------------------------------------/*** Get Cache Metadata** @param mixed key to get cache metadata on* @return mixed return value from child method*/public function get_metadata($id){return $this->{$this->_adapter}->get_metadata($id);}// ------------------------------------------------------------------------/*** Initialize** Initialize class properties based on the configuration array.** @param array* @return void*/private function _initialize($config){$default_config = array('adapter','memcached');foreach ($default_config as $key){if (isset($config[$key])){$param = '_'.$key;$this->{$param} = $config[$key];}}if (isset($config['backup'])){if (in_array('cache_'.$config['backup'], $this->valid_drivers)){$this->_backup_driver = $config['backup'];}}}// ------------------------------------------------------------------------/*** Is the requested driver supported in this environment?** @param string The driver to test.* @return array*/public function is_supported($driver){static $support = array();if ( ! isset($support[$driver])){$support[$driver] = $this->{$driver}->is_supported();}return $support[$driver];}// ------------------------------------------------------------------------/*** __get()** @param child* @return object*/public function __get($child){$obj = parent::__get($child);if ( ! $this->is_supported($child)){$this->_adapter = $this->_backup_driver;}return $obj;}// ------------------------------------------------------------------------}// End Class/* End of file Cache.php *//* Location: ./system/libraries/Cache/Cache.php */