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']; if ($compiler->compiles_template_function) { $compiler->called_functions[] = trim($_name, "'\""); } 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) { if (!isset($_attr[$_key])) { if (is_int($_key)) { $_paramsArray[] = "$_key=>$_value"; } else { $_paramsArray[] = "'$_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; } $_params = 'array(' . implode(",", $_paramsArray) . ')'; $_hash = str_replace('-', '_', $compiler->template->properties['nocache_hash']); // was there an assign attribute if (isset($_assign)) { if ($compiler->template->caching) { $_output = "assign({$_assign}, ob_get_clean());?>\n"; } else { $_output = "assign({$_assign}, ob_get_clean());?>\n"; } } else { if ($compiler->template->caching) { $_output = "\n"; } else { $_output = "\n"; } } return $_output; } }