diff options
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_cacheresource.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_cacheresource.php | 337 |
1 files changed, 199 insertions, 138 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource.php b/library/Smarty/libs/sysplugins/smarty_cacheresource.php index ca18add5e..667bee44f 100644 --- a/library/Smarty/libs/sysplugins/smarty_cacheresource.php +++ b/library/Smarty/libs/sysplugins/smarty_cacheresource.php @@ -1,106 +1,123 @@ <?php /** -* Smarty Internal Plugin -* -* @package Smarty -* @subpackage Cacher -*/ + * Smarty Internal Plugin + * + * @package Smarty + * @subpackage Cacher + */ /** -* Cache Handler API -* -* @package Smarty -* @subpackage Cacher -* @author Rodney Rehm -*/ -abstract class Smarty_CacheResource { + * Cache Handler API + * + * @package Smarty + * @subpackage Cacher + * @author Rodney Rehm + */ +abstract class Smarty_CacheResource +{ /** - * cache for Smarty_CacheResource instances - * @var array - */ + * cache for Smarty_CacheResource instances + * + * @var array + */ public static $resources = array(); /** - * resource types provided by the core - * @var array - */ + * resource types provided by the core + * + * @var array + */ protected static $sysplugins = array( 'file' => true, ); /** - * populate Cached Object with meta data from Resource - * - * @param Smarty_Template_Cached $cached cached object - * @param Smarty_Internal_Template $_template template object - * @return void - */ - public abstract function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template); + * populate Cached Object with meta data from Resource + * + * @param Smarty_Template_Cached $cached cached object + * @param Smarty_Internal_Template $_template template object + * + * @return void + */ + abstract public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template); /** - * populate Cached Object with timestamp and exists from Resource - * - * @param Smarty_Template_Cached $source cached object - * @return void - */ - public abstract function populateTimestamp(Smarty_Template_Cached $cached); + * populate Cached Object with timestamp and exists from Resource + * + * @param Smarty_Template_Cached $cached + * + * @return void + */ + abstract public function populateTimestamp(Smarty_Template_Cached $cached); /** - * Read the cached template and process header - * - * @param Smarty_Internal_Template $_template template object - * @param Smarty_Template_Cached $cached cached object - * @return booelan true or false if the cached content does not exist - */ - public abstract function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null); + * Read the cached template and process header + * + * @param Smarty_Internal_Template $_template template object + * @param Smarty_Template_Cached $cached cached object + * + * @return boolean true or false if the cached content does not exist + */ + abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null); /** - * Write the rendered template output to cache - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * @return boolean success - */ - public abstract function writeCachedContent(Smarty_Internal_Template $_template, $content); + * Write the rendered template output to cache + * + * @param Smarty_Internal_Template $_template template object + * @param string $content content to cache + * + * @return boolean success + */ + abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content); /** - * Return cached content - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content of cache - */ + * Return cached content + * + * @param Smarty_Internal_Template $_template template object + * + * @return null|string + */ public function getCachedContent(Smarty_Internal_Template $_template) { if ($_template->cached->handler->process($_template)) { ob_start(); $_template->properties['unifunc']($_template); + return ob_get_clean(); } + return null; } /** - * Empty cache - * - * @param Smarty $smarty Smarty object - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * @return integer number of cache files deleted - */ - public abstract function clearAll(Smarty $smarty, $exp_time=null); + * Empty cache + * + * @param Smarty $smarty Smarty object + * @param integer $exp_time expiration time (number of seconds, not timestamp) + * + * @return integer number of cache files deleted + */ + abstract public function clearAll(Smarty $smarty, $exp_time = null); /** - * Empty cache for a specific template - * - * @param Smarty $smarty Smarty object - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * @return integer number of cache files deleted - */ - public abstract function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time); - + * Empty cache for a specific template + * + * @param Smarty $smarty Smarty object + * @param string $resource_name template name + * @param string $cache_id cache id + * @param string $compile_id compile id + * @param integer $exp_time expiration time (number of seconds, not timestamp) + * + * @return integer number of cache files deleted + */ + abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time); + /** + * @param Smarty $smarty + * @param Smarty_Template_Cached $cached + * + * @return bool|null + */ public function locked(Smarty $smarty, Smarty_Template_Cached $cached) { // theoretically locking_timeout should be checked against time_limit (max_execution_time) @@ -114,35 +131,61 @@ abstract class Smarty_CacheResource { } sleep(1); } + return $hadLock; } + /** + * Check is cache is locked for this template + * + * @param Smarty $smarty + * @param Smarty_Template_Cached $cached + * + * @return bool + */ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) { // check if lock exists return false; } + /** + * Lock cache for this template + * + * @param Smarty $smarty + * @param Smarty_Template_Cached $cached + * + * @return bool + */ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) { // create lock return true; } + /** + * Unlock cache for this template + * + * @param Smarty $smarty + * @param Smarty_Template_Cached $cached + * + * @return bool + */ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) { // release lock return true; } - /** - * Load Cache Resource Handler - * - * @param Smarty $smarty Smarty object - * @param string $type name of the cache resource - * @return Smarty_CacheResource Cache Resource Handler - */ + * Load Cache Resource Handler + * + * @param Smarty $smarty Smarty object + * @param string $type name of the cache resource + * + * @throws SmartyException + * @return Smarty_CacheResource Cache Resource Handler + */ public static function load(Smarty $smarty, $type = null) { if (!isset($type)) { @@ -153,7 +196,7 @@ abstract class Smarty_CacheResource { if (isset($smarty->_cacheresource_handlers[$type])) { return $smarty->_cacheresource_handlers[$type]; } - + // try registered resource if (isset($smarty->registered_cache_resources[$type])) { // do not cache these instances as they may vary from instance to instance @@ -165,6 +208,7 @@ abstract class Smarty_CacheResource { $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); self::$resources[$type] = new $cache_resource_class(); } + return $smarty->_cacheresource_handlers[$type] = self::$resources[$type]; } // try plugins dir @@ -173,6 +217,7 @@ abstract class Smarty_CacheResource { if (!isset(self::$resources[$type])) { self::$resources[$type] = new $cache_resource_class(); } + return $smarty->_cacheresource_handlers[$type] = self::$resources[$type]; } // give up @@ -180,10 +225,10 @@ abstract class Smarty_CacheResource { } /** - * Invalid Loaded Cache Files - * - * @param Smarty $smarty Smarty object - */ + * Invalid Loaded Cache Files + * + * @param Smarty $smarty Smarty object + */ public static function invalidLoadedCache(Smarty $smarty) { foreach ($smarty->template_objects as $tpl) { @@ -196,92 +241,104 @@ abstract class Smarty_CacheResource { } /** -* Smarty Resource Data Object -* -* Cache Data Container for Template Files -* -* @package Smarty -* @subpackage TemplateResources -* @author Rodney Rehm -*/ -class Smarty_Template_Cached { + * Smarty Resource Data Object + * Cache Data Container for Template Files + * + * @package Smarty + * @subpackage TemplateResources + * @author Rodney Rehm + */ +class Smarty_Template_Cached +{ /** - * Source Filepath - * @var string - */ + * Source Filepath + * + * @var string + */ public $filepath = false; /** - * Source Content - * @var string - */ + * Source Content + * + * @var string + */ public $content = null; /** - * Source Timestamp - * @var integer - */ + * Source Timestamp + * + * @var integer + */ public $timestamp = false; /** - * Source Existance - * @var boolean - */ + * Source Existence + * + * @var boolean + */ public $exists = false; /** - * Cache Is Valid - * @var boolean - */ + * Cache Is Valid + * + * @var boolean + */ public $valid = false; /** - * Cache was processed - * @var boolean - */ + * Cache was processed + * + * @var boolean + */ public $processed = false; /** - * CacheResource Handler - * @var Smarty_CacheResource - */ + * CacheResource Handler + * + * @var Smarty_CacheResource + */ public $handler = null; /** - * Template Compile Id (Smarty_Internal_Template::$compile_id) - * @var string - */ + * Template Compile Id (Smarty_Internal_Template::$compile_id) + * + * @var string + */ public $compile_id = null; /** - * Template Cache Id (Smarty_Internal_Template::$cache_id) - * @var string - */ + * Template Cache Id (Smarty_Internal_Template::$cache_id) + * + * @var string + */ public $cache_id = null; /** - * Id for cache locking - * @var string - */ + * Id for cache locking + * + * @var string + */ public $lock_id = null; /** - * flag that cache is locked by this instance - * @var bool - */ + * flag that cache is locked by this instance + * + * @var bool + */ public $is_locked = false; /** - * Source Object - * @var Smarty_Template_Source - */ + * Source Object + * + * @var Smarty_Template_Source + */ public $source = null; /** - * create Cached Object container - * - * @param Smarty_Internal_Template $_template template object - */ + * create Cached Object container + * + * @param Smarty_Internal_Template $_template template object + */ public function __construct(Smarty_Internal_Template $_template) { $this->compile_id = $_template->compile_id; @@ -300,6 +357,7 @@ class Smarty_Template_Cached { // if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->recompiled) { $handler->populate($this, $_template); + return; } while (true) { @@ -328,7 +386,7 @@ class Smarty_Template_Cached { if ($smarty->debugging) { Smarty_Internal_Debug::start_cache($_template); } - if($handler->process($_template, $this) === false) { + if ($handler->process($_template, $this) === false) { $this->valid = false; } else { $this->processed = true; @@ -347,6 +405,7 @@ class Smarty_Template_Cached { } if (!$this->valid && $_template->smarty->cache_locking) { $this->handler->acquireLock($_template->smarty, $this); + return; } else { return; @@ -355,27 +414,29 @@ class Smarty_Template_Cached { } /** - * Write this cache object to handler - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * @return boolean success - */ + * Write this cache object to handler + * + * @param Smarty_Internal_Template $_template template object + * @param string $content content to cache + * + * @return boolean success + */ public function write(Smarty_Internal_Template $_template, $content) { if (!$_template->source->recompiled) { if ($this->handler->writeCachedContent($_template, $content)) { + $this->content = null; $this->timestamp = time(); $this->exists = true; $this->valid = true; if ($_template->smarty->cache_locking) { $this->handler->releaseLock($_template->smarty, $this); } + return true; } } + return false; } - } -?>
\ No newline at end of file |