[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

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

   1  <?php
   2  /**
   3   * Smarty Internal Plugin Compile Function_Call
   4   *
   5   * Compiles the calls of user defined tags defined by {function}
   6   *
   7   * @package Smarty
   8   * @subpackage Compiler
   9   * @author Uwe Tews
  10   */
  11  
  12  /**
  13   * Smarty Internal Plugin Compile Function_Call Class
  14   *
  15   * @package Smarty
  16   * @subpackage Compiler
  17   */
  18  class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
  19  
  20      /**
  21       * Attribute definition: Overwrites base class.
  22       *
  23       * @var array
  24       * @see Smarty_Internal_CompileBase
  25       */
  26      public $required_attributes = array('name');
  27      /**
  28       * Attribute definition: Overwrites base class.
  29       *
  30       * @var array
  31       * @see Smarty_Internal_CompileBase
  32       */
  33      public $shorttag_order = array('name');
  34      /**
  35       * Attribute definition: Overwrites base class.
  36       *
  37       * @var array
  38       * @see Smarty_Internal_CompileBase
  39       */
  40      public $optional_attributes = array('_any');
  41  
  42      /**
  43       * Compiles the calls of user defined tags defined by {function}
  44       *
  45       * @param array  $args      array with attributes from parser
  46       * @param object $compiler  compiler object
  47       * @param array  $parameter array with compilation parameter
  48       * @return string compiled code
  49       */
  50      public function compile($args, $compiler)
  51      {
  52          // check and get attributes
  53          $_attr = $this->getAttributes($compiler, $args);
  54          // save possible attributes
  55          if (isset($_attr['assign'])) {
  56              // output will be stored in a smarty variable instead of beind displayed
  57              $_assign = $_attr['assign'];
  58          }
  59          $_name = $_attr['name'];
  60          if ($compiler->compiles_template_function) {
  61              $compiler->called_functions[] = trim($_name, "'\"");
  62          }
  63          unset($_attr['name'], $_attr['assign'], $_attr['nocache']);
  64          // set flag (compiled code of {function} must be included in cache file
  65          if ($compiler->nocache || $compiler->tag_nocache) {
  66              $_nocache = 'true';
  67          } else {
  68              $_nocache = 'false';
  69          }
  70          $_paramsArray = array();
  71          foreach ($_attr as $_key => $_value) {
  72              if (is_int($_key)) {
  73                  $_paramsArray[] = "$_key=>$_value";
  74              } else {
  75                  $_paramsArray[] = "'$_key'=>$_value";
  76              }
  77          }
  78          if (isset($compiler->template->properties['function'][$_name]['parameter'])) {
  79              foreach ($compiler->template->properties['function'][$_name]['parameter'] as $_key => $_value) {
  80                  if (!isset($_attr[$_key])) {
  81                      if (is_int($_key)) {
  82                          $_paramsArray[] = "$_key=>$_value";
  83                      } else {
  84                          $_paramsArray[] = "'$_key'=>$_value";
  85                      }
  86                  }
  87              }
  88          } elseif (isset($compiler->smarty->template_functions[$_name]['parameter'])) {
  89              foreach ($compiler->smarty->template_functions[$_name]['parameter'] as $_key => $_value) {
  90                  if (!isset($_attr[$_key])) {
  91                      if (is_int($_key)) {
  92                          $_paramsArray[] = "$_key=>$_value";
  93                      } else {
  94                          $_paramsArray[] = "'$_key'=>$_value";
  95                      }
  96                  }
  97              }
  98          }
  99          //varibale name?
 100          if (!(strpos($_name, '$') === false)) {
 101              $call_cache = $_name;
 102              $call_function = '$tmp = "smarty_template_function_".' . $_name . '; $tmp';
 103          } else {
 104              $_name = trim($_name, "'\"");
 105              $call_cache = "'{$_name}'";
 106              $call_function = 'smarty_template_function_' . $_name;
 107          }
 108  
 109          $_params = 'array(' . implode(",", $_paramsArray) . ')';
 110          $_hash = str_replace('-', '_', $compiler->template->properties['nocache_hash']);
 111          // was there an assign attribute
 112          if (isset($_assign)) {
 113              if ($compiler->template->caching) {
 114                  $_output = "<?php ob_start(); Smarty_Internal_Function_Call_Handler::call ({$call_cache},\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache}); \$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
 115              } else {
 116                  $_output = "<?php ob_start(); {$call_function}(\$_smarty_tpl,{$_params}); \$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
 117              }
 118          } else {
 119              if ($compiler->template->caching) {
 120                  $_output = "<?php Smarty_Internal_Function_Call_Handler::call ({$call_cache},\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache});?>\n";
 121              } else {
 122                  $_output = "<?php {$call_function}(\$_smarty_tpl,{$_params});?>\n";
 123              }
 124          }
 125          return $_output;
 126      }
 127  
 128  }
 129  
 130  ?>


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