Code

0f5cfeba1900b11848c68af1257f215551a3fb83
[gosa.git] / gosa-core / include / smarty / sysplugins / smarty_internal_function_call_handler.php
1 <?php
2 /**
3 * Smarty Internal Plugin Function Call Handler
4
5 * @package Smarty
6 * @subpackage Security
7 * @author Uwe Tews 
8 */
9 /**
10 * This class does call function defined with the {function} tag
11 */
12 class Smarty_Internal_Function_Call_Handler extends Smarty_Internal_Template {
13     function __construct($name, $smarty, $parent, $nocache)
14     {
15         parent::__construct('string:', $smarty, $parent);
16         if (!isset($this->smarty->template_functions[$name])) {
17             throw new Exception("Call to undefined template function \"{$name}\" in template \"{$parent->template_resource}\"");
18         } 
19         $this->called_nocache = $nocache;
20         $this->mustCompile = false;
21         if ($nocache) {
22             $smarty->template_functions[$name]['called_nocache'] = true;
23             $this->properties['function'][$name]['called_nocache'] = true;
24         } 
25         $this->properties['nocache_hash'] = $smarty->template_functions[$name]['nocache_hash']; 
26         // load compiled function
27         if ($nocache) {
28             // if called in nocache mode convert nocache code to real code
29             $this->compiled_template = preg_replace(array("!(<\?php echo ')?/\*/?%%SmartyNocache:{$this->smarty->template_functions[$name]['nocache_hash']}%%\*/(';\?>)?!", "!\\\'!"), array('', "'"), $smarty->template_functions[$name]['compiled']);
30         } else {
31             $this->compiled_template = $smarty->template_functions[$name]['compiled'];
32         } 
33         // assign default paramter
34         if (isset($smarty->template_functions[$name]['parameter'])) {
35             $_smarty_tpl = $this;
36             foreach ($smarty->template_functions[$name]['parameter'] as $_key => $_value) {
37                 $this->assign($_key, eval("return {$_value};"));
38             } 
39         } 
40         // set flag if {function} contains nocache code
41         if ($smarty->template_functions[$name]['has_nocache_code']) {
42             $this->has_nocache_code = true;
43         } 
44     } 
45
47 ?>