commit f1dfbabfcbc8233f8c0256466ce93c9203e66b92 parent e03da0bf9afdbe1d291d49f70ad041f29e44defe Author: Marcel <MTRNord@users.noreply.github.com> Date: Sat, 31 Oct 2015 17:48:48 +0100 Create smarty_resource_uncompiled.php Diffstat:
| A | libs/smarty/sysplugins/smarty_resource_uncompiled.php | | | 72 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 72 insertions(+), 0 deletions(-)
diff --git a/libs/smarty/sysplugins/smarty_resource_uncompiled.php b/libs/smarty/sysplugins/smarty_resource_uncompiled.php @@ -0,0 +1,72 @@ +<?php +/** + * Smarty Resource Plugin + * + * @package Smarty + * @subpackage TemplateResources + * @author Rodney Rehm + */ + +/** + * Smarty Resource Plugin + * Base implementation for resource plugins that don't use the compiler + * + * @package Smarty + * @subpackage TemplateResources + */ +abstract class Smarty_Resource_Uncompiled extends Smarty_Resource +{ + /** + * Flag that it's an uncompiled resource + * + * @var bool + */ + public $uncompiled = true; + + /** + * Render and output the template (without using the compiler) + * + * @param Smarty_Template_Source $source source object + * @param Smarty_Internal_Template $_template template object + * + * @throws SmartyException on failure + */ + abstract public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template); + + /** + * populate compiled object with compiled filepath + * + * @param Smarty_Template_Compiled $compiled compiled object + * @param Smarty_Internal_Template $_template template object (is ignored) + */ + public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) + { + $compiled->filepath = false; + $compiled->timestamp = false; + $compiled->exists = false; + } + + /** + * render compiled template code + * + * @param Smarty_Internal_Template $_template + * + * @return string + * @throws Exception + */ + public function render($_template) + { + $level = ob_get_level(); + ob_start(); + try { + $this->renderUncompiled($_template->source, $_template); + return ob_get_clean(); + } + catch (Exception $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + throw $e; + } + } +}