compiler = $compiler; $this->smarty = $compiler->smarty; // check and get attributes $_attr = $this->_get_attributes($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']); // 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($this->smarty->template_functions[$_name]['parameter'])) { foreach ($this->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; } } ?>