/** * compile custom function tag * * @param string $tag_command * @param string $tag_args * @param string $tag_modifier * @return string */ function _compile_custom_tag($tag_command, $tag_args, $tag_modifier, &$output) { $found = false; $have_function = true; /* * First we check if the custom function has already been registered * or loaded from a plugin file. */ if (isset($this->_plugins['function'][$tag_command])) { $found = true; $plugin_func = $this->_plugins['function'][$tag_command][0]; if (!is_callable($plugin_func)) { $message = "custom function '{$tag_command}' is not implemented"; $have_function = false; } } else { if ($plugin_file = $this->_get_plugin_filepath('function', $tag_command)) { $found = true; include_once $plugin_file; $plugin_func = 'smarty_cms_function_' . $tag_command; if (!function_exists($plugin_func)) { $message = "plugin function {$plugin_func}() not found in {$plugin_file}\n"; $have_function = false; } else { $this->_plugins['function'][$tag_command] = array($plugin_func, null, null, null, true); } } } if (!$found) { return parent::_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output); } else { if (!$have_function) { #$this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); #return true; return parent::_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output); } } /* declare plugin to be loaded on display of the template that we compile right now */ $this->_add_plugin('function', $tag_command); $this->_plugins['function'][$tag_command][4] = false; $this->_plugins['function'][$tag_command][5] = array(); $_cacheable_state = $this->_push_cacheable_state('function', $tag_command); $attrs = $this->_parse_attrs($tag_args); $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs); $output = $this->_compile_plugin_call('function', $tag_command) . '(array(' . implode(',', $arg_list) . "), \$this)"; if ($tag_modifier != '') { $this->_parse_modifiers($output, $tag_modifier); } if ($output != '') { $output = '<?php ' . $_cacheable_state . $_cache_attrs . 'echo ' . $output . ';' . $this->_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline; } #var_dump($output); return true; }
/** * compile custom function tag * * @param string $tag_command * @param string $tag_args * @param string $tag_modifier * @return string */ function _compile_custom_tag($tag_command, $tag_args, $tag_modifier, &$output) { $found = false; $have_function = true; $tmp = array('function', $tag_command, $this->_current_file, $this->_current_line_no, false); $tmp = array('plugins' => array($tmp)); require_once SMARTY_CORE_DIR . 'core.load_plugins.php'; smarty_core_load_plugins($tmp, $this); if (isset($this->_plugins['function'][$tag_command])) { $found = true; $plugin_func = $this->_plugins['function'][$tag_command][0]; if (!is_callable($plugin_func)) { $message = "custom function '{$tag_command}' is not implemented"; $have_function = false; } } if (!$found) { return parent::_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output); } else { if (!$have_function) { return parent::_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output); } } /* declare plugin to be loaded on display of the template that we compile right now */ $this->_add_plugin('function', $tag_command); $this->_plugins['function'][$tag_command][4] = false; $this->_plugins['function'][$tag_command][5] = array(); $_cacheable_state = $this->_push_cacheable_state('function', $tag_command); $attrs = $this->_parse_attrs($tag_args); $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs); $output = $this->_compile_plugin_call('function', $tag_command) . '(array(' . implode(',', $arg_list) . "), \$this)"; if ($tag_modifier != '') { $this->_parse_modifiers($output, $tag_modifier); } if ($output != '') { $output = '<?php ' . $_cacheable_state . $_cache_attrs . 'echo ' . $output . ';' . $this->_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline; } // var_dump($output); return true; }