forked from extern/egroupware
101 lines
2.5 KiB
PHP
101 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* EGroupware Api: Horde_Cache compatible class using Api\Cache
|
|
*
|
|
* @link http://www.stylite.de
|
|
* @package api
|
|
* @subpackage mail
|
|
* @author Ralf Becker <rb-AT-stylite.de>
|
|
* @copyright (c) 2013-16 by Ralf Becker <rb-AT-stylite.de>
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @version $Id$
|
|
*/
|
|
|
|
namespace EGroupware\Api\Mail;
|
|
|
|
use EGroupware\Api;
|
|
|
|
/**
|
|
* Horde_Cache compatible class using egw_cache
|
|
*/
|
|
class Cache
|
|
{
|
|
/**
|
|
* App to use
|
|
*/
|
|
const APP = 'mail';
|
|
/**
|
|
* How to cache: instance-specific
|
|
*/
|
|
const LEVEL = Api\Cache::INSTANCE;
|
|
|
|
/**
|
|
* Retrieve cached data.
|
|
*
|
|
* @param string $key Object ID to query.
|
|
* @param integer $lifetime Lifetime of the object in seconds.
|
|
*
|
|
* @return mixed Cached data, or false if none was found.
|
|
*/
|
|
public function get($key, $lifetime = 0)
|
|
{
|
|
unset($lifetime); // not (yet) used, but required by function signature
|
|
|
|
$ret = Api\Cache::getCache(self::LEVEL, 'mail', $key);
|
|
|
|
return !is_null($ret) ? $ret : false;
|
|
}
|
|
|
|
/**
|
|
* Store an object in the cache.
|
|
*
|
|
* @param string $key Object ID used as the caching key.
|
|
* @param mixed $data Data to store in the cache.
|
|
* @param integer $lifetime Object lifetime - i.e. the time before the
|
|
* data becomes available for garbage
|
|
* collection. If 0 will not be GC'd.
|
|
*/
|
|
public function set($key, $data, $lifetime = 0)
|
|
{
|
|
Api\Cache::setCache(self::LEVEL, 'mail', $key, $data, $lifetime);
|
|
}
|
|
|
|
/**
|
|
* Checks if a given key exists in the cache, valid for the given
|
|
* lifetime.
|
|
*
|
|
* @param string $key Cache key to check.
|
|
* @param integer $lifetime Lifetime of the key in seconds.
|
|
*
|
|
* @return boolean Existence.
|
|
*/
|
|
public function exists($key, $lifetime = 0)
|
|
{
|
|
unset($lifetime); // not (yet) used, but required by function signature
|
|
|
|
return !is_null(Api\Cache::getCache(self::LEVEL, 'mail', $key));
|
|
}
|
|
|
|
/**
|
|
* Expire any existing data for the given key.
|
|
*
|
|
* @param string $key Cache key to expire.
|
|
*
|
|
* @return boolean Success or failure.
|
|
*/
|
|
public function expire($key)
|
|
{
|
|
Api\Cache::unsetCache(self::LEVEL, 'mail', $key);
|
|
}
|
|
|
|
/**
|
|
* Clears all data from the cache.
|
|
*
|
|
* @throws Horde_Cache_Exception
|
|
*/
|
|
public function clear()
|
|
{
|
|
Api\Cache::flush(self::LEVEL, self::APP);
|
|
}
|
|
}
|