Esempio n. 1
0
 /**
  * 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;
 }