/** * smarty_function dispatcher * * @access protected * @param string $src */ function _exec9002_smartyfunctions($src) { $tag = new SimpleTag(); $smarty_plugin_list = $this->getSmartyPluginList(); foreach ($smarty_plugin_list as $name => $plugin_config) { while ($tag->set($src, $this->_getTagName($name))) { if ($plugin_config['type'] == 'function') { $param = $tag->toHash(); $src = str_replace($tag->getPlain(), $plugin_config['plugin']($param, $this), $src); } else { if ($plugin_config['type'] == 'block') { $repeat_before = true; $repeat_after = false; $param_list = $tag->getParameter(); foreach ($param_list as $param_tag) { $param[$param_tag->getName()] = $param_tag->getValue(); } $content = $tag->getValue(); //before(not return value) $result = $plugin_config['plugin']($param, $content, $this, $repeat_before); //after $result = $plugin_config['plugin']($param, $content, $this, $repeat_after); $src = str_replace($tag->getPlain(), $result, $src); } } } } return $src; }