compiler = $compiler; $this->required_attributes = array('name'); $this->optional_attributes = array('_any'); // check and get attributes $_attr = $this->_get_attributes($args); // this tag must not be cached $this->compiler->tag_nocache = true; $_output = 'compiler->template->tpl_vars[trim($_attr['assign'],"'")] = new Smarty_Variable(null,true); } if (isset($_attr['script'])) { // script which must be included $_script = $_attr['script']; if (!file_exists($_script)) { $this->compiler->trigger_template_error('missing file "' . $_script . '"'); } // code for script file loading $_output .= 'require once ' . $_script . ';'; } else { if (!is_callable($_name)) { $this->compiler->trigger_template_error('function "' . $_name . '" is not callable'); } } // delete {insert} standard attributes unset($_attr['name'], $_attr['assign'], $_attr['script']); // convert attributes into parameter array string $_paramsArray = array(); foreach ($_attr as $_key => $_value) { $_paramsArray[] = "'$_key'=>$_value"; } $_params = 'array(' . implode(",", $_paramsArray) . ')'; // call insert if (isset($_assign)) { $_output .= '$_smarty_tpl->assign(' . $_assign . ',' . $_name . '(' . $_params . '),true); ?>'; } else { $this->compiler->has_output = true; $_output .= 'echo ' . $_name . '(' . $_params . '); ?>'; } return $_output; } } ?>