smarty_internal_compile_private_function_plugin.php (2070B)
1 <?php 2 /** 3 * Smarty Internal Plugin Compile Function Plugin 4 * Compiles code for the execution of function plugin 5 * 6 * @package Smarty 7 * @subpackage Compiler 8 * @author Uwe Tews 9 */ 10 11 /** 12 * Smarty Internal Plugin Compile Function Plugin Class 13 * 14 * @package Smarty 15 * @subpackage Compiler 16 */ 17 class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase 18 { 19 /** 20 * Attribute definition: Overwrites base class. 21 * 22 * @var array 23 * @see Smarty_Internal_CompileBase 24 */ 25 public $required_attributes = array(); 26 /** 27 * Attribute definition: Overwrites base class. 28 * 29 * @var array 30 * @see Smarty_Internal_CompileBase 31 */ 32 public $optional_attributes = array('_any'); 33 34 /** 35 * Compiles code for the execution of function plugin 36 * 37 * @param array $args array with attributes from parser 38 * @param object $compiler compiler object 39 * @param array $parameter array with compilation parameter 40 * @param string $tag name of function plugin 41 * @param string $function PHP function name 42 * 43 * @return string compiled code 44 */ 45 public function compile($args, $compiler, $parameter, $tag, $function) 46 { 47 // This tag does create output 48 $compiler->has_output = true; 49 50 // check and get attributes 51 $_attr = $this->getAttributes($compiler, $args); 52 if ($_attr['nocache'] === true) { 53 $compiler->tag_nocache = true; 54 } 55 unset($_attr['nocache']); 56 // convert attributes into parameter array string 57 $_paramsArray = array(); 58 foreach ($_attr as $_key => $_value) { 59 if (is_int($_key)) { 60 $_paramsArray[] = "$_key=>$_value"; 61 } else { 62 $_paramsArray[] = "'$_key'=>$_value"; 63 } 64 } 65 $_params = 'array(' . implode(",", $_paramsArray) . ')'; 66 // compile code 67 $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n"; 68 69 return $output; 70 } 71 }