<?php /** * Smarty Resource Plugin * * @package Smarty * @subpackage TemplateResources * @author Rodney Rehm */ /** * Smarty Resource Plugin * Base implementation for resource plugins that don't compile cache * * @package Smarty * @subpackage TemplateResources */ 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_Internal_Template $_template template object * * @return void */ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) { $compiled->filepath = false; $compiled->timestamp = false; $compiled->exists = false; } /* * Disable timestamp checks for recompiled resource. * * @return bool */ /** * @return bool */ public function checkTimestamps() { return false; } }