CodeIgniter installed
[living-lab-site.git] / system / libraries / Cache / Cache.php
diff --git a/system/libraries/Cache/Cache.php b/system/libraries/Cache/Cache.php
new file mode 100755 (executable)
index 0000000..61e7aa7
--- /dev/null
@@ -0,0 +1,216 @@
+<?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 - 2011 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 */
\ No newline at end of file