]> git.mxchange.org Git - friendica.git/blob - library/Smarty/libs/sysplugins/smarty_internal_function_call_handler.php
Changes in api
[friendica.git] / library / Smarty / libs / sysplugins / smarty_internal_function_call_handler.php
1 <?php
2 /**
3  * Smarty Internal Plugin Function Call Handler
4  *
5  * @package    Smarty
6  * @subpackage PluginsInternal
7  * @author     Uwe Tews
8  */
9
10 /**
11  * This class does call function defined with the {function} tag
12  *
13  * @package    Smarty
14  * @subpackage PluginsInternal
15  */
16 class Smarty_Internal_Function_Call_Handler
17 {
18     /**
19      * This function handles calls to template functions defined by {function}
20      * It does create a PHP function at the first call
21      *
22      * @param string                   $_name     template function name
23      * @param Smarty_Internal_Template $_template template object
24      * @param array                    $_params   Smarty variables passed as call parameter
25      * @param string                   $_hash     nocache hash value
26      * @param bool                     $_nocache  nocache flag
27      */
28     public static function call($_name, Smarty_Internal_Template $_template, $_params, $_hash, $_nocache)
29     {
30         if ($_nocache) {
31             $_function = "smarty_template_function_{$_name}_nocache";
32         } else {
33             $_function = "smarty_template_function_{$_hash}_{$_name}";
34         }
35         if (!is_callable($_function)) {
36             $_code = "function {$_function}(\$_smarty_tpl,\$params) {
37     \$saved_tpl_vars = \$_smarty_tpl->tpl_vars;
38     foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
39     foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
40             if ($_nocache) {
41                 $_code .= preg_replace(array("!<\?php echo \\'/\*%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/|/\*/%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/\\';\?>!",
42                                              "!\\\'!"), array('', "'"), $_template->smarty->template_functions[$_name]['compiled']);
43                 $_template->smarty->template_functions[$_name]['called_nocache'] = true;
44             } else {
45                 $_code .= preg_replace("/{$_template->smarty->template_functions[$_name]['nocache_hash']}/", $_template->properties['nocache_hash'], $_template->smarty->template_functions[$_name]['compiled']);
46             }
47             $_code .= "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;}";
48             eval($_code);
49         }
50         $_function($_template, $_params);
51     }
52 }