source: pro-violet-viettel/sourcecode/application/third_party/Smarty/sysplugins/smarty_internal_compile_eval.php

Last change on this file was 345, checked in by quyenla, 11 years ago

collaborator page

File size: 1.9 KB
Line 
1<?php
2/**
3 * Smarty Internal Plugin Compile Eval
4 *
5 * Compiles the {eval} tag.
6 *
7 * @package Smarty
8 * @subpackage Compiler
9 * @author Uwe Tews
10 */
11
12/**
13 * Smarty Internal Plugin Compile Eval Class
14 *
15 * @package Smarty
16 * @subpackage Compiler
17 */
18class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase {
19
20    /**
21     * Attribute definition: Overwrites base class.
22     *
23     * @var array
24     * @see Smarty_Internal_CompileBase
25     */
26    public $required_attributes = array('var');
27    /**
28     * Attribute definition: Overwrites base class.
29     *
30     * @var array
31     * @see Smarty_Internal_CompileBase
32     */
33    public $optional_attributes = array('assign');
34    /**
35     * Attribute definition: Overwrites base class.
36     *
37     * @var array
38     * @see Smarty_Internal_CompileBase
39     */
40    public $shorttag_order = array('var','assign');
41
42    /**
43     * Compiles code for the {eval} tag
44     *
45     * @param array  $args     array with attributes from parser
46     * @param object $compiler compiler object
47     * @return string compiled code
48     */
49    public function compile($args, $compiler)
50    {
51        $this->required_attributes = array('var');
52        $this->optional_attributes = array('assign');
53        // check and get attributes
54        $_attr = $this->getAttributes($compiler, $args);
55        if (isset($_attr['assign'])) {
56              // output will be stored in a smarty variable instead of beind displayed
57            $_assign = $_attr['assign'];
58        }
59
60        // create template object
61        $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'.".$_attr['var'].", \$_smarty_tpl->smarty, \$_smarty_tpl);";
62        //was there an assign attribute?
63        if (isset($_assign)) {
64            $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
65        } else {
66            $_output .= "echo \$_template->fetch();";
67        }
68        return "<?php $_output ?>";
69    }
70
71}
72
73?>
Note: See TracBrowser for help on using the repository browser.