From ab5d8d4e07bb3c8230d0285ef8902ef1979fce51 Mon Sep 17 00:00:00 2001 From: emkael Date: Thu, 18 Oct 2018 02:39:34 +0200 Subject: Updating Smarty --- .../sysplugins/smarty_resource_recompiled.php | 74 +++++++++++++++++++--- 1 file changed, 66 insertions(+), 8 deletions(-) (limited to 'lib/smarty/sysplugins/smarty_resource_recompiled.php') diff --git a/lib/smarty/sysplugins/smarty_resource_recompiled.php b/lib/smarty/sysplugins/smarty_resource_recompiled.php index ab55b93..760c4dd 100644 --- a/lib/smarty/sysplugins/smarty_resource_recompiled.php +++ b/lib/smarty/sysplugins/smarty_resource_recompiled.php @@ -2,26 +2,74 @@ /** * Smarty Resource Plugin * - * @package Smarty + * @package Smarty * @subpackage TemplateResources - * @author Rodney Rehm + * @author Rodney Rehm */ /** * Smarty Resource Plugin - * * Base implementation for resource plugins that don't compile cache * - * @package Smarty + * @package Smarty * @subpackage TemplateResources */ -abstract class Smarty_Resource_Recompiled extends Smarty_Resource { +abstract class Smarty_Resource_Recompiled extends Smarty_Resource +{ + /** + * Flag that it's an recompiled resource + * + * @var bool + */ + public $recompiled = true; + + /** + * Resource does implement populateCompiledFilepath() method + * + * @var bool + */ + public $hasCompiledHandler = true; + + /** + * compile template from source + * + * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template + * + * @throws Exception + */ + public function process(Smarty_Internal_Template $_smarty_tpl) + { + $compiled = &$_smarty_tpl->compiled; + $compiled->file_dependency = array(); + $compiled->includes = array(); + $compiled->nocache_hash = null; + $compiled->unifunc = null; + $level = ob_get_level(); + ob_start(); + $_smarty_tpl->loadCompiler(); + // call compiler + try { + eval('?>' . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl)); + } catch (Exception $e) { + unset($_smarty_tpl->compiler); + while (ob_get_level() > $level) { + ob_end_clean(); + } + throw $e; + } + // release compiler object to free memory + unset($_smarty_tpl->compiler); + ob_get_clean(); + $compiled->timestamp = time(); + $compiled->exists = true; + } /** * populate Compiled Object with compiled filepath * - * @param Smarty_Template_Compiled $compiled compiled object + * @param Smarty_Template_Compiled $compiled compiled object * @param Smarty_Internal_Template $_template template object + * * @return void */ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) @@ -31,6 +79,16 @@ abstract class Smarty_Resource_Recompiled extends Smarty_Resource { $compiled->exists = false; } + /* + * Disable timestamp checks for recompiled resource. + * + * @return bool + */ + /** + * @return bool + */ + public function checkTimestamps() + { + return false; + } } - -?> \ No newline at end of file -- cgit v1.2.3