[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

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

   1  <?php
   2  
   3  /**

   4   * Smarty Internal Plugin Compile Modifier

   5   *

   6   * Compiles code for modifier execution

   7   *

   8   * @package Smarty

   9   * @subpackage Compiler

  10   * @author Uwe Tews

  11   */
  12  
  13  /**

  14   * Smarty Internal Plugin Compile Modifier Class

  15   *

  16   * @package Smarty

  17   * @subpackage Compiler

  18   */
  19  class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase {
  20  
  21      /**

  22       * Compiles code for modifier execution

  23       *

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

  25       * @param object $compiler  compiler object

  26       * @param array  $parameter array with compilation parameter

  27       * @return string compiled code

  28       */
  29      public function compile($args, $compiler, $parameter)
  30      {
  31          // check and get attributes

  32          $_attr = $this->getAttributes($compiler, $args);
  33          $output = $parameter['value'];
  34          // loop over list of modifiers

  35          foreach ($parameter['modifierlist'] as $single_modifier) {
  36              $modifier = $single_modifier[0];
  37              $single_modifier[0] = $output;
  38              $params = implode(',', $single_modifier);
  39              // check for registered modifier

  40              if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
  41                  $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
  42                  if (!is_array($function)) {
  43                      $output = "{$function}({$params})";
  44                  } else {
  45                      if (is_object($function[0])) {
  46                          $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
  47                      } else {
  48                          $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
  49                      }
  50                  }
  51              } else if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
  52                  $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
  53                  // check for plugin modifiercompiler

  54              } else if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
  55                  // check if modifier allowed

  56                  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
  57                      $plugin = 'smarty_modifiercompiler_' . $modifier;
  58                      $output = $plugin($single_modifier, $compiler);
  59                  }
  60                  // check for plugin modifier

  61              } else if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
  62                  // check if modifier allowed

  63                  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
  64                      $output = "{$function}({$params})";
  65                  }
  66                  // check if trusted PHP function

  67              } else if (is_callable($modifier)) {
  68                  // check if modifier allowed

  69                  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)) {
  70                      $output = "{$modifier}({$params})";
  71                  }
  72              } else {
  73                  $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", $compiler->lex->taglineno);
  74              }
  75          }
  76          return $output;
  77      }
  78  
  79  }
  80  
  81  ?>


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