diff options
Diffstat (limited to '3dparty/Smarty/sysplugins/smarty_internal_compile_eval.php')
-rw-r--r-- | 3dparty/Smarty/sysplugins/smarty_internal_compile_eval.php | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/3dparty/Smarty/sysplugins/smarty_internal_compile_eval.php b/3dparty/Smarty/sysplugins/smarty_internal_compile_eval.php new file mode 100644 index 00000000000..0167e93d90b --- /dev/null +++ b/3dparty/Smarty/sysplugins/smarty_internal_compile_eval.php @@ -0,0 +1,51 @@ +<?php + +/** + * Smarty Internal Plugin Compile Eval + * + * Compiles the {eval} tag + * @package Smarty + * @subpackage Compiler + * @author Uwe Tews + */ + +/** + * Smarty Internal Plugin Compile Eval Class + */ +class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase { + public $required_attributes = array('var'); + public $optional_attributes = array('assign'); + public $shorttag_order = array('var','assign'); + + /** + * Compiles code for the {eval} tag + * + * @param array $args array with attributes from parser + * @param object $compiler compiler object + * @return string compiled code + */ + public function compile($args, $compiler) + { + $this->compiler = $compiler; + $this->required_attributes = array('var'); + $this->optional_attributes = array('assign'); + // check and get attributes + $_attr = $this->_get_attributes($args); + if (isset($_attr['assign'])) { + // output will be stored in a smarty variable instead of beind displayed + $_assign = $_attr['assign']; + } + + // create template object + $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'.".$_attr['var'].", \$_smarty_tpl->smarty, \$_smarty_tpl);"; + //was there an assign attribute? + if (isset($_assign)) { + $_output .= "\$_smarty_tpl->assign($_assign,\$_template->getRenderedTemplate());"; + } else { + $_output .= "echo \$_template->getRenderedTemplate();"; + } + return "<?php $_output ?>"; + } +} + +?>
\ No newline at end of file |