]> jfr.im git - z_archive/KronOS.git/blob - system/libraries/Cache/Cache.php
Fixing filestructure again
[z_archive/KronOS.git] / system / libraries / Cache / Cache.php
1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3 * CodeIgniter
4 *
5 * An open source application development framework for PHP 4.3.2 or newer
6 *
7 * @package CodeIgniter
8 * @author ExpressionEngine Dev Team
9 * @copyright Copyright (c) 2006 - 2012 EllisLab, Inc.
10 * @license http://codeigniter.com/user_guide/license.html
11 * @link http://codeigniter.com
12 * @since Version 2.0
13 * @filesource
14 */
15
16 // ------------------------------------------------------------------------
17
18 /**
19 * CodeIgniter Caching Class
20 *
21 * @package CodeIgniter
22 * @subpackage Libraries
23 * @category Core
24 * @author ExpressionEngine Dev Team
25 * @link
26 */
27 class CI_Cache extends CI_Driver_Library {
28
29 protected $valid_drivers = array(
30 'cache_apc', 'cache_file', 'cache_memcached', 'cache_dummy'
31 );
32
33 protected $_cache_path = NULL; // Path of cache files (if file-based cache)
34 protected $_adapter = 'dummy';
35 protected $_backup_driver;
36
37 // ------------------------------------------------------------------------
38
39 /**
40 * Constructor
41 *
42 * @param array
43 */
44 public function __construct($config = array())
45 {
46 if ( ! empty($config))
47 {
48 $this->_initialize($config);
49 }
50 }
51
52 // ------------------------------------------------------------------------
53
54 /**
55 * Get
56 *
57 * Look for a value in the cache. If it exists, return the data
58 * if not, return FALSE
59 *
60 * @param string
61 * @return mixed value that is stored/FALSE on failure
62 */
63 public function get($id)
64 {
65 return $this->{$this->_adapter}->get($id);
66 }
67
68 // ------------------------------------------------------------------------
69
70 /**
71 * Cache Save
72 *
73 * @param string Unique Key
74 * @param mixed Data to store
75 * @param int Length of time (in seconds) to cache the data
76 *
77 * @return boolean true on success/false on failure
78 */
79 public function save($id, $data, $ttl = 60)
80 {
81 return $this->{$this->_adapter}->save($id, $data, $ttl);
82 }
83
84 // ------------------------------------------------------------------------
85
86 /**
87 * Delete from Cache
88 *
89 * @param mixed unique identifier of the item in the cache
90 * @return boolean true on success/false on failure
91 */
92 public function delete($id)
93 {
94 return $this->{$this->_adapter}->delete($id);
95 }
96
97 // ------------------------------------------------------------------------
98
99 /**
100 * Clean the cache
101 *
102 * @return boolean false on failure/true on success
103 */
104 public function clean()
105 {
106 return $this->{$this->_adapter}->clean();
107 }
108
109 // ------------------------------------------------------------------------
110
111 /**
112 * Cache Info
113 *
114 * @param string user/filehits
115 * @return mixed array on success, false on failure
116 */
117 public function cache_info($type = 'user')
118 {
119 return $this->{$this->_adapter}->cache_info($type);
120 }
121
122 // ------------------------------------------------------------------------
123
124 /**
125 * Get Cache Metadata
126 *
127 * @param mixed key to get cache metadata on
128 * @return mixed return value from child method
129 */
130 public function get_metadata($id)
131 {
132 return $this->{$this->_adapter}->get_metadata($id);
133 }
134
135 // ------------------------------------------------------------------------
136
137 /**
138 * Initialize
139 *
140 * Initialize class properties based on the configuration array.
141 *
142 * @param array
143 * @return void
144 */
145 private function _initialize($config)
146 {
147 $default_config = array(
148 'adapter',
149 'memcached'
150 );
151
152 foreach ($default_config as $key)
153 {
154 if (isset($config[$key]))
155 {
156 $param = '_'.$key;
157
158 $this->{$param} = $config[$key];
159 }
160 }
161
162 if (isset($config['backup']))
163 {
164 if (in_array('cache_'.$config['backup'], $this->valid_drivers))
165 {
166 $this->_backup_driver = $config['backup'];
167 }
168 }
169 }
170
171 // ------------------------------------------------------------------------
172
173 /**
174 * Is the requested driver supported in this environment?
175 *
176 * @param string The driver to test.
177 * @return array
178 */
179 public function is_supported($driver)
180 {
181 static $support = array();
182
183 if ( ! isset($support[$driver]))
184 {
185 $support[$driver] = $this->{$driver}->is_supported();
186 }
187
188 return $support[$driver];
189 }
190
191 // ------------------------------------------------------------------------
192
193 /**
194 * __get()
195 *
196 * @param child
197 * @return object
198 */
199 public function __get($child)
200 {
201 $obj = parent::__get($child);
202
203 if ( ! $this->is_supported($child))
204 {
205 $this->_adapter = $this->_backup_driver;
206 }
207
208 return $obj;
209 }
210
211 // ------------------------------------------------------------------------
212 }
213 // End Class
214
215 /* End of file Cache.php */
216 /* Location: ./system/libraries/Cache/Cache.php */