Update admin module to use new Cache system

This commit is contained in:
Kijin Sung 2016-04-17 15:01:42 +09:00
parent 7d80bbe27d
commit 89ae581e55
11 changed files with 32 additions and 16 deletions

View file

@ -46,7 +46,6 @@ if(file_exists(RX_BASEDIR . 'config/config.user.inc.php'))
* Define the list of legacy class names for the autoloader.
*/
$GLOBALS['RX_AUTOLOAD_FILE_MAP'] = array_change_key_case(array(
'CacheBase' => 'classes/cache/CacheHandler.class.php',
'CacheHandler' => 'classes/cache/CacheHandler.class.php',
'Context' => 'classes/context/Context.class.php',
'DB' => 'classes/db/DB.class.php',

View file

@ -64,7 +64,7 @@ class Cache
foreach (Storage::readDirectory(__DIR__ . '/drivers/cache', false) as $filename)
{
$driver_name = substr($filename, 0, -4);
$class_name = '\Rhymix\Framework\Drivers\Cache\'' . $driver_name;
$class_name = '\Rhymix\Framework\Drivers\Cache\\' . $driver_name;
if ($class_name::isSupported())
{
$result[] = $driver_name;
@ -74,13 +74,30 @@ class Cache
}
/**
* Get the currently enabled cache driver.
* Get the currently enabled cache driver, or a named driver with the given settings.
*
* return object|null
* @param string $name (optional)
* @param array $config (optional)
* @return object|null
*/
public static function getCacheDriver()
public static function getCacheDriver($name = null, array $config = [])
{
return self::$_driver;
if ($name === null)
{
return self::$_driver;
}
else
{
$class_name = '\\Rhymix\\Framework\\Drivers\\Cache\\' . $name;
if (class_exists($class_name) && $class_name::isSupported() && $class_name::validateSettings($config))
{
return new $class_name($config);
}
else
{
return null;
}
}
}
/**

View file

@ -38,7 +38,7 @@ class APC implements \Rhymix\Framework\Drivers\CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config)
public static function validateSettings($config)
{
return true;
}

View file

@ -49,7 +49,7 @@ class File implements \Rhymix\Framework\Drivers\CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config)
public static function validateSettings($config)
{
return true;
}

View file

@ -66,7 +66,7 @@ class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config)
public static function validateSettings($config)
{
if (class_exists('\\Memcached'))
{

View file

@ -68,7 +68,7 @@ class Redis implements \Rhymix\Framework\Drivers\CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config)
public static function validateSettings($config)
{
try
{

View file

@ -38,7 +38,7 @@ class WinCache implements \Rhymix\Framework\Drivers\CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config)
public static function validateSettings($config)
{
return true;
}

View file

@ -38,7 +38,7 @@ class XCache implements \Rhymix\Framework\Drivers\CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config)
public static function validateSettings($config)
{
return true;
}

View file

@ -32,7 +32,7 @@ interface CacheInterface
* @param mixed $config
* @return bool
*/
public function validateSettings($config);
public static function validateSettings($config);
/**
* Get the value of a key.

View file

@ -673,7 +673,7 @@ class adminAdminController extends admin
{
$cache_config = $vars->object_cache_type;
}
if (!CacheHandler::isSupport($vars->object_cache_type, $cache_config))
if (!Rhymix\Framework\Cache::getCacheDriver($vars->object_cache_type, array($cache_config)))
{
return new Object(-1, 'msg_cache_handler_not_supported');
}

View file

@ -456,8 +456,8 @@ class adminAdminView extends admin
{
$object_cache_config = array_first($object_cache_config);
}
$object_cache_types = array('apc', 'file', 'memcached', 'redis', 'wincache');
$object_cache_type = preg_match('/^(' . implode('|', $object_cache_types) . ')/', $object_cache_config, $matches) ? $matches[1] : '';
$object_cache_types = Rhymix\Framework\Cache::getSupportedDrivers();
$object_cache_type = preg_replace('/^memcache$/', 'memcached', preg_replace('/:.+$/', '', $object_cache_config));
Context::set('object_cache_types', $object_cache_types);
Context::set('object_cache_type', $object_cache_type);
if ($object_cache_type)