diff options
Diffstat (limited to 'lib/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php')
-rw-r--r-- | lib/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php b/lib/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php new file mode 100644 index 0000000..70e7643 --- /dev/null +++ b/lib/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php @@ -0,0 +1,73 @@ +<?php +/** + * Smarty Internal Plugin Compile Function Plugin + * + * Compiles code for the execution of function plugin + * + * @package Smarty + * @subpackage Compiler + * @author Uwe Tews + */ + +/** + * Smarty Internal Plugin Compile Function Plugin Class + * + * @package Smarty + * @subpackage Compiler + */ +class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase { + + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $required_attributes = array(); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $optional_attributes = array('_any'); + + /** + * 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 plugin + * @param string $function PHP function name + * @return string compiled code + */ + public function compile($args, $compiler, $parameter, $tag, $function) + { + // This tag does create output + $compiler->has_output = true; + + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + if ($_attr['nocache'] === true) { + $compiler->tag_nocache = true; + } + unset($_attr['nocache']); + // convert attributes into parameter array string + $_paramsArray = array(); + foreach ($_attr as $_key => $_value) { + if (is_int($_key)) { + $_paramsArray[] = "$_key=>$_value"; + } else { + $_paramsArray[] = "'$_key'=>$_value"; + } + } + $_params = 'array(' . implode(",", $_paramsArray) . ')'; + // compile code + $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n"; + return $output; + } + +} + +?>
\ No newline at end of file |