diff options
author | emkael <emkael@tlen.pl> | 2018-10-18 02:39:34 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2018-10-18 02:39:42 +0200 |
commit | ab5d8d4e07bb3c8230d0285ef8902ef1979fce51 (patch) | |
tree | 0b955e585cb2fdbc7207392a5f2c97d610b6a5bc /lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php | |
parent | c055ce2ab60c6582bad3e5babcb1d00384fde78a (diff) |
Updating Smarty
Diffstat (limited to 'lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php')
-rw-r--r-- | lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php | 86 |
1 files changed, 46 insertions, 40 deletions
diff --git a/lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php b/lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php index f649084..2a763c6 100644 --- a/lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php +++ b/lib/smarty/sysplugins/smarty_internal_compile_private_object_function.php @@ -1,22 +1,21 @@ <?php /** - * Smarty Internal Plugin Compile Object Funtion - * + * Smarty Internal Plugin Compile Object Function * Compiles code for registered objects as function * - * @package Smarty + * @package Smarty * @subpackage Compiler - * @author Uwe Tews + * @author Uwe Tews */ /** * Smarty Internal Plugin Compile Object Function Class * - * @package Smarty + * @package Smarty * @subpackage Compiler */ -class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase { - +class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase +{ /** * Attribute definition: Overwrites base class. * @@ -28,52 +27,59 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co /** * Compiles code for the execution of function plugin * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @param array $parameter array with compilation parameter - * @param string $tag name of function - * @param string $method name of method to call + * @param array $args array with attributes from parser + * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object + * @param array $parameter array with compilation parameter + * @param string $tag name of function + * @param string $method name of method to call + * * @return string compiled code + * @throws \SmartyCompilerException + * @throws \SmartyException */ - public function compile($args, $compiler, $parameter, $tag, $method) + public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method) { // check and get attributes $_attr = $this->getAttributes($compiler, $args); - if ($_attr['nocache'] === true) { - $compiler->tag_nocache = true; - } - unset($_attr['nocache']); + unset($_attr[ 'nocache' ]); $_assign = null; - if (isset($_attr['assign'])) { - $_assign = $_attr['assign']; - unset($_attr['assign']); + if (isset($_attr[ 'assign' ])) { + $_assign = $_attr[ 'assign' ]; + unset($_attr[ 'assign' ]); } - // convert attributes into parameter array string - if ($compiler->smarty->registered_objects[$tag][2]) { - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; + // method or property ? + if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) { + // convert attributes into parameter array string + if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) { + $_paramsArray = array(); + foreach ($_attr as $_key => $_value) { + if (is_int($_key)) { + $_paramsArray[] = "$_key=>$_value"; + } else { + $_paramsArray[] = "'$_key'=>$_value"; + } } + $_params = 'array(' . implode(',', $_paramsArray) . ')'; + $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)"; + } else { + $_params = implode(',', $_attr); + $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})"; } - $_params = 'array(' . implode(",", $_paramsArray) . ')'; - $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)"; } else { - $_params = implode(",", $_attr); - $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})"; + // object property + $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}"; + } + if (!empty($parameter[ 'modifierlist' ])) { + $output = $compiler->compileTag( + 'private_modifier', + array(), + array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output) + ); } if (empty($_assign)) { - // This tag does create output - $compiler->has_output = true; - $output = "<?php echo {$return};?>\n"; + return "<?php echo {$output};?>\n"; } else { - $output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n"; + return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n"; } - return $output; } - } - -?>
\ No newline at end of file |