[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/sysplugins/ -> smarty_internal_compile_private_registered_function.php (source)

   1  <?php
   2  /**

   3   * Smarty Internal Plugin Compile Registered Function

   4   *

   5   * Compiles code for the execution of a registered function

   6   *

   7   * @package Smarty

   8   * @subpackage Compiler

   9   * @author Uwe Tews

  10   */
  11  
  12  /**

  13   * Smarty Internal Plugin Compile Registered Function Class

  14   *

  15   * @package Smarty

  16   * @subpackage Compiler

  17   */
  18  class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase {
  19  
  20      /**

  21       * Attribute definition: Overwrites base class.

  22       *

  23       * @var array

  24       * @see Smarty_Internal_CompileBase

  25       */
  26      public $optional_attributes = array('_any');
  27  
  28      /**

  29       * Compiles code for the execution of a registered function

  30       *

  31       * @param array  $args      array with attributes from parser

  32       * @param object $compiler  compiler object

  33       * @param array  $parameter array with compilation parameter

  34       * @param string $tag       name of function

  35       * @return string compiled code

  36       */
  37      public function compile($args, $compiler, $parameter, $tag)
  38      {
  39          // This tag does create output

  40          $compiler->has_output = true;
  41          // check and get attributes

  42          $_attr = $this->getAttributes($compiler, $args);
  43          if ($_attr['nocache']) {
  44              $compiler->tag_nocache = true;
  45          }
  46          unset($_attr['nocache']);
  47                 if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag])) {
  48                     $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag];
  49                 } else {
  50                     $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_FUNCTION][$tag];
  51                 }
  52          // not cachable?

  53          $compiler->tag_nocache =  $compiler->tag_nocache || !$tag_info[1];
  54          // convert attributes into parameter array string

  55          $_paramsArray = array();
  56          foreach ($_attr as $_key => $_value) {
  57              if (is_int($_key)) {
  58                  $_paramsArray[] = "$_key=>$_value";
  59              } elseif ($compiler->template->caching && in_array($_key,$tag_info[2])) {
  60                  $_value = str_replace("'","^#^",$_value);
  61                  $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
  62              } else {
  63                  $_paramsArray[] = "'$_key'=>$_value";
  64              }
  65          }
  66          $_params = 'array(' . implode(",", $_paramsArray) . ')';
  67          $function = $tag_info[0];
  68          // compile code

  69          if (!is_array($function)) {
  70              $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
  71          } else if (is_object($function[0])) {
  72              $output = "<?php echo \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl);?>\n";
  73          } else {
  74              $output = "<?php echo {$function[0]}::{$function[1]}({$_params},\$_smarty_tpl);?>\n";
  75          }
  76          return $output;
  77      }
  78  
  79  }
  80  
  81  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1