mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Add Cache::groupConfigs() to get group->config map
This commit is contained in:
parent
62186ac8da
commit
5682907a88
2 changed files with 109 additions and 0 deletions
|
@ -51,6 +51,13 @@ class Cache {
|
||||||
*/
|
*/
|
||||||
protected static $_config = array();
|
protected static $_config = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Group to Config mapping
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $_groups = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to reset the settings with the next call to Cache::set();
|
* Whether to reset the settings with the next call to Cache::set();
|
||||||
*
|
*
|
||||||
|
@ -130,6 +137,14 @@ class Cache {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty(self::$_config[$name]['groups'])) {
|
||||||
|
foreach (self::$_config[$name]['groups'] as $group) {
|
||||||
|
self::$_groups[$group][] = $name;
|
||||||
|
sort(self::$_groups[$group]);
|
||||||
|
self::$_groups[$group] = array_unique(self::$_groups[$group]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$engine = self::$_config[$name]['engine'];
|
$engine = self::$_config[$name]['engine'];
|
||||||
|
|
||||||
if (!isset(self::$_engines[$name])) {
|
if (!isset(self::$_engines[$name])) {
|
||||||
|
@ -498,4 +513,34 @@ class Cache {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve group names to config mapping.
|
||||||
|
*
|
||||||
|
* {{{
|
||||||
|
* Cache::config('daily', array(
|
||||||
|
* 'duration' => '1 day', 'groups' => array('posts')
|
||||||
|
* ));
|
||||||
|
* Cache::config('weekly', array(
|
||||||
|
* 'duration' => '1 week', 'groups' => array('posts', 'archive')
|
||||||
|
* ));
|
||||||
|
* $configs = Cache::groupConfigs('posts');
|
||||||
|
* }}}
|
||||||
|
*
|
||||||
|
* $config will equal to `array('posts' => array('daily', 'weekly'))`
|
||||||
|
*
|
||||||
|
* @param string $group group name or null to retrieve all group mappings
|
||||||
|
* @return array map of group and all configuration that has the same group
|
||||||
|
* @throws CacheException
|
||||||
|
*/
|
||||||
|
public static function groupConfigs($group = null) {
|
||||||
|
if ($group == null) {
|
||||||
|
return self::$_groups;
|
||||||
|
}
|
||||||
|
if (isset(self::$_groups[$group])) {
|
||||||
|
return array($group => self::$_groups[$group]);
|
||||||
|
} else {
|
||||||
|
throw new CacheException(__d('cake_dev', 'Invalid cache group %s', $group));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,9 @@ class CacheTest extends CakeTestCase {
|
||||||
*/
|
*/
|
||||||
public function tearDown() {
|
public function tearDown() {
|
||||||
parent::tearDown();
|
parent::tearDown();
|
||||||
|
Cache::drop('latest');
|
||||||
|
Cache::drop('page');
|
||||||
|
Cache::drop('archive');
|
||||||
Configure::write('Cache.disable', $this->_cacheDisable);
|
Configure::write('Cache.disable', $this->_cacheDisable);
|
||||||
Cache::config('default', $this->_defaultCacheConfig['settings']);
|
Cache::config('default', $this->_defaultCacheConfig['settings']);
|
||||||
}
|
}
|
||||||
|
@ -237,6 +240,67 @@ class CacheTest extends CakeTestCase {
|
||||||
Cache::config('sessions', $_cacheConfigSessions['settings']);
|
Cache::config('sessions', $_cacheConfigSessions['settings']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testGroupConfigs method
|
||||||
|
*/
|
||||||
|
public function testGroupConfigs() {
|
||||||
|
Cache::config('latest', array(
|
||||||
|
'duration' => 300,
|
||||||
|
'engine' => 'File',
|
||||||
|
'groups' => array(
|
||||||
|
'posts', 'comments',
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
$expected = array(
|
||||||
|
'posts' => array('latest'),
|
||||||
|
'comments' => array('latest'),
|
||||||
|
);
|
||||||
|
$result = Cache::groupConfigs();
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
|
||||||
|
$result = Cache::groupConfigs('posts');
|
||||||
|
$this->assertEquals(array('posts' => array('latest')), $result);
|
||||||
|
|
||||||
|
Cache::config('page', array(
|
||||||
|
'duration' => 86400,
|
||||||
|
'engine' => 'File',
|
||||||
|
'groups' => array(
|
||||||
|
'posts', 'archive'
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
$result = Cache::groupConfigs();
|
||||||
|
$expected = array(
|
||||||
|
'posts' => array('latest', 'page'),
|
||||||
|
'comments' => array('latest'),
|
||||||
|
'archive' => array('page'),
|
||||||
|
);
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
|
||||||
|
$result = Cache::groupConfigs('archive');
|
||||||
|
$this->assertEquals(array('archive' => array('page')), $result);
|
||||||
|
|
||||||
|
Cache::config('archive', array(
|
||||||
|
'duration' => 86400 * 30,
|
||||||
|
'engine' => 'File',
|
||||||
|
'groups' => array(
|
||||||
|
'posts', 'archive', 'comments',
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
$result = Cache::groupConfigs('archive');
|
||||||
|
$this->assertEquals(array('archive' => array('archive', 'page')), $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testGroupConfigsThrowsException method
|
||||||
|
* @expectedException CacheException
|
||||||
|
*/
|
||||||
|
public function testGroupConfigsThrowsException() {
|
||||||
|
Cache::groupConfigs('bogus');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test that configured returns an array of the currently configured cache
|
* test that configured returns an array of the currently configured cache
|
||||||
* settings
|
* settings
|
||||||
|
|
Loading…
Reference in a new issue