Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
2809 rexy 1
<?php
2
/**
3
 * Smarty Internal Plugin Compile Function_Call
4
 * Compiles the calls of user defined tags defined by {function}
5
 *
6
 * @package    Smarty
7
 * @subpackage Compiler
8
 * @author     Uwe Tews
9
 */
10
 
11
/**
12
 * Smarty Internal Plugin Compile Function_Call Class
13
 *
14
 * @package    Smarty
15
 * @subpackage Compiler
16
 */
17
class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
18
{
19
    /**
20
     * Attribute definition: Overwrites base class.
21
     *
22
     * @var array
23
     * @see Smarty_Internal_CompileBase
24
     */
25
    public $required_attributes = array('name');
26
 
27
    /**
28
     * Attribute definition: Overwrites base class.
29
     *
30
     * @var array
31
     * @see Smarty_Internal_CompileBase
32
     */
33
    public $shorttag_order = array('name');
34
 
35
    /**
36
     * Attribute definition: Overwrites base class.
37
     *
38
     * @var array
39
     * @see Smarty_Internal_CompileBase
40
     */
41
    public $optional_attributes = array('_any');
42
 
43
    /**
44
     * Compiles the calls of user defined tags defined by {function}
45
     *
46
     * @param array  $args     array with attributes from parser
47
     * @param object $compiler compiler object
48
     *
49
     * @return string compiled code
50
     */
51
    public function compile($args, $compiler)
52
    {
53
        // check and get attributes
54
        $_attr = $this->getAttributes($compiler, $args);
55
        // save possible attributes
56
        if (isset($_attr[ 'assign' ])) {
57
            // output will be stored in a smarty variable instead of being displayed
58
            $_assign = $_attr[ 'assign' ];
59
        }
60
        //$_name = trim($_attr['name'], "''");
61
        $_name = $_attr[ 'name' ];
62
        unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]);
63
        // set flag (compiled code of {function} must be included in cache file
64
        if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) {
65
            $_nocache = 'true';
66
        } else {
67
            $_nocache = 'false';
68
        }
69
        $_paramsArray = array();
70
        foreach ($_attr as $_key => $_value) {
71
            if (is_int($_key)) {
72
                $_paramsArray[] = "$_key=>$_value";
73
            } else {
74
                $_paramsArray[] = "'$_key'=>$_value";
75
            }
76
        }
77
        $_params = 'array(' . implode(',', $_paramsArray) . ')';
78
        //$compiler->suppressNocacheProcessing = true;
79
        // was there an assign attribute
80
        if (isset($_assign)) {
81
            $_output =
82
                "<?php ob_start();\n\$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
83
        } else {
84
            $_output =
85
                "<?php \$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n";
86
        }
87
        return $_output;
88
    }
89
}