diff options
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php | 63 |
1 files changed, 16 insertions, 47 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php b/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php index f496c1523..4e9606ef1 100644 --- a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php +++ b/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php @@ -83,7 +83,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) { $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null; - $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w\|]+!', '_', $cached->compile_id) : null; + $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null; $path = $cached->source->filepath . $_cache_id . $_compile_id; $cached->filepath = sha1($path); if ($_template->smarty->cache_locking) { @@ -119,10 +119,11 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource * * @param Smarty_Internal_Template $_template template object * @param Smarty_Template_Cached $cached cached object + * @param bool $update flag if called because cache update * * @return boolean true or false if the cached content does not exist */ - public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null) + public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null, $update = false) { if (!$cached) { $cached = $_template->cached; @@ -130,14 +131,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource $content = $cached->content ? $cached->content : null; $timestamp = $cached->timestamp ? $cached->timestamp : null; if ($content === null || !$timestamp) { - $this->fetch( - $_template->cached->filepath, - $_template->source->name, - $_template->cache_id, - $_template->compile_id, - $content, - $timestamp - ); + $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp); } if (isset($content)) { /** @var Smarty_Internal_Template $_smarty_tpl @@ -145,7 +139,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource */ $_smarty_tpl = $_template; eval("?>" . $content); - + $cached->content = null; return true; } @@ -162,14 +156,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource */ public function writeCachedContent(Smarty_Internal_Template $_template, $content) { - return $this->save( - $_template->cached->filepath, - $_template->source->name, - $_template->cache_id, - $_template->compile_id, - $_template->properties['cache_lifetime'], - $content - ); + return $this->save($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $_template->cache_lifetime, $content); } /** @@ -185,14 +172,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource $timestamp = null; if ($content === null) { $timestamp = null; - $this->fetch( - $_template->cached->filepath, - $_template->source->name, - $_template->cache_id, - $_template->compile_id, - $content, - $timestamp - ); + $this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp); } if (isset($content)) { return $content; @@ -210,8 +190,6 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource */ public function clearAll(Smarty $smarty, $exp_time = null) { - $this->cache = array(); - return $this->delete(null, null, null, $exp_time); } @@ -228,32 +206,23 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource */ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) { - $this->cache = array(); $cache_name = null; if (isset($resource_name)) { - $_save_stat = $smarty->caching; - $smarty->caching = true; - $tpl = new $smarty->template_class($resource_name, $smarty); - $smarty->caching = $_save_stat; - - if ($tpl->source->exists) { - $cache_name = $tpl->source->name; + $source = Smarty_Template_Source::load(null, $smarty, $resource_name); + if ($source->exists) { + $cache_name = $source->name; } else { return 0; } // remove from template cache - if ($smarty->allow_ambiguous_resources) { - $_templateId = $tpl->source->unique_resource . $tpl->cache_id . $tpl->compile_id; - } else { - $_templateId = $smarty->joined_template_dir . '#' . $resource_name . $tpl->cache_id . $tpl->compile_id; - } - if (isset($_templateId[150])) { - $_templateId = sha1($_templateId); + if (isset($smarty->_cache['template_objects'])) { + foreach ($smarty->_cache['template_objects'] as $key => $_tpl) { + if (isset($_tpl->cached) && $_tpl->source->uid == $source->uid) { + unset($smarty->_cache['template_objects'][$key]); + } + } } - unset($smarty->template_objects[$_templateId]); - // template object no longer needed - unset($tpl); } return $this->delete($cache_name, $cache_id, $compile_id, $exp_time); |