| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | <?php/** * Smarty Internal Plugin Compile Eval * * Compiles the {eval} tag. * * @package Smarty * @subpackage Compiler * @author Uwe Tews *//** * Smarty Internal Plugin Compile Eval Class * * @package Smarty * @subpackage Compiler */class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase {    /**     * Attribute definition: Overwrites base class.     *     * @var array     * @see Smarty_Internal_CompileBase     */    public $required_attributes = array('var');    /**     * Attribute definition: Overwrites base class.     *     * @var array     * @see Smarty_Internal_CompileBase     */    public $optional_attributes = array('assign');    /**     * Attribute definition: Overwrites base class.     *     * @var array     * @see Smarty_Internal_CompileBase     */    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->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 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->fetch());";        } else {            $_output .= "echo \$_template->fetch();";        }        return "<?php $_output ?>";    }}?>
 |