diff options
Diffstat (limited to 'libs/sysplugins/smarty_internal_compile_call.php')
| -rw-r--r-- | libs/sysplugins/smarty_internal_compile_call.php | 97 |
1 files changed, 58 insertions, 39 deletions
diff --git a/libs/sysplugins/smarty_internal_compile_call.php b/libs/sysplugins/smarty_internal_compile_call.php index 50ba6328..f1feba36 100644 --- a/libs/sysplugins/smarty_internal_compile_call.php +++ b/libs/sysplugins/smarty_internal_compile_call.php @@ -1,58 +1,76 @@ <?php - /** * Smarty Internal Plugin Compile Function_Call - * + * * Compiles the calls of user defined tags defined by {function} - * + * * @package Smarty * @subpackage Compiler - * @author Uwe Tews + * @author Uwe Tews */ /** * Smarty Internal Plugin Compile Function_Call Class + * + * @package Smarty + * @subpackage Compiler */ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase { - // attribute definitions + + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ public $required_attributes = array('name'); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ public $shorttag_order = array('name'); - public $optional_attributes = array('_any'); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $optional_attributes = array('_any'); /** * Compiles the calls of user defined tags defined by {function} - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @param array $parameter array with compilation parameter + * + * @param array $args array with attributes from parser + * @param object $compiler compiler object + * @param array $parameter array with compilation parameter * @return string compiled code */ public function compile($args, $compiler) { - $this->compiler = $compiler; - $this->smarty = $compiler->smarty; // check and get attributes - $_attr = $this->_get_attributes($args); + $_attr = $this->getAttributes($compiler, $args); // save possible attributes if (isset($_attr['assign'])) { // output will be stored in a smarty variable instead of beind displayed $_assign = $_attr['assign']; - } + } $_name = $_attr['name']; - unset($_attr['name'], $_attr['assign'], $_attr['nocache']); + unset($_attr['name'], $_attr['assign'], $_attr['nocache']); // set flag (compiled code of {function} must be included in cache file if ($compiler->nocache || $compiler->tag_nocache) { $_nocache = 'true'; } else { $_nocache = 'false'; - } + } $_paramsArray = array(); foreach ($_attr as $_key => $_value) { if (is_int($_key)) { $_paramsArray[] = "$_key=>$_value"; } else { $_paramsArray[] = "'$_key'=>$_value"; - } + } } if (isset($compiler->template->properties['function'][$_name]['parameter'])) { foreach ($compiler->template->properties['function'][$_name]['parameter'] as $_key => $_value) { @@ -61,48 +79,49 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase { $_paramsArray[] = "$_key=>$_value"; } else { $_paramsArray[] = "'$_key'=>$_value"; - } - } - } - } elseif (isset($this->smarty->template_functions[$_name]['parameter'])) { - foreach ($this->smarty->template_functions[$_name]['parameter'] as $_key => $_value) { + } + } + } + } elseif (isset($compiler->smarty->template_functions[$_name]['parameter'])) { + foreach ($compiler->smarty->template_functions[$_name]['parameter'] as $_key => $_value) { if (!isset($_attr[$_key])) { if (is_int($_key)) { $_paramsArray[] = "$_key=>$_value"; } else { $_paramsArray[] = "'$_key'=>$_value"; - } - } - } + } + } + } } //varibale name? - if (!(strpos($_name,'$')===false)) { - $call_cache = $_name; - $call_function = '$tmp = "smarty_template_function_".'.$_name.'; $tmp'; - } else { - $_name = trim($_name, "'\""); - $call_cache = "'{$_name}'"; - $call_function = 'smarty_template_function_'.$_name; + if (!(strpos($_name, '$') === false)) { + $call_cache = $_name; + $call_function = '$tmp = "smarty_template_function_".' . $_name . '; $tmp'; + } else { + $_name = trim($_name, "'\""); + $call_cache = "'{$_name}'"; + $call_function = 'smarty_template_function_' . $_name; } - + $_params = 'array(' . implode(",", $_paramsArray) . ')'; - $_hash = str_replace('-','_',$compiler->template->properties['nocache_hash']); + $_hash = str_replace('-', '_', $compiler->template->properties['nocache_hash']); // was there an assign attribute if (isset($_assign)) { if ($compiler->template->caching) { $_output = "<?php ob_start(); Smarty_Internal_Function_Call_Handler::call ({$call_cache},\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache}); \$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n"; } else { $_output = "<?php ob_start(); {$call_function}(\$_smarty_tpl,{$_params}); \$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n"; - } + } } else { if ($compiler->template->caching) { $_output = "<?php Smarty_Internal_Function_Call_Handler::call ({$call_cache},\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache});?>\n"; } else { $_output = "<?php {$call_function}(\$_smarty_tpl,{$_params});?>\n"; - } - } + } + } return $_output; - } -} + } + +} ?>
\ No newline at end of file |
