]> git.mxchange.org Git - friendica.git/blob - vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
Merge pull request #4233 from MrPetovan/task/4116-move-smarty-to-composer
[friendica.git] / vendor / smarty / smarty / libs / sysplugins / smarty_internal_compile_call.php
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 }