/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
20.1.1 by galaxyAbstractor
* Added an simple admin panel to the codeviewer-cmssy stuff
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 */