diff --git a/library/smarty/libs/sysplugins/smarty_internal_compile_eval.php b/library/smarty/libs/sysplugins/smarty_internal_compile_eval.php new file mode 100644 --- /dev/null +++ b/library/smarty/libs/sysplugins/smarty_internal_compile_eval.php @@ -0,0 +1,69 @@ +required_attributes = array('var'); + $this->optional_attributes = array('assign'); + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + if (isset($_attr['assign'])) { + // output will be stored in a smarty variable instead of being 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->fetch());"; + } else { + $_output .= "echo \$_template->fetch();"; + } + + return ""; + } +}