[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

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

   1  <?php
   2  /**
   3   * Smarty Internal Plugin Compile While
   4   *
   5   * Compiles the {while} tag
   6   *
   7   * @package Smarty
   8   * @subpackage Compiler
   9   * @author Uwe Tews
  10   */
  11  
  12  /**
  13   * Smarty Internal Plugin Compile While Class
  14   *
  15   * @package Smarty
  16   * @subpackage Compiler
  17   */
  18  class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase {
  19  
  20      /**
  21       * Compiles code for the {while} tag
  22       *
  23       * @param array  $args      array with attributes from parser
  24       * @param object $compiler  compiler object
  25       * @param array  $parameter array with compilation parameter
  26       * @return string compiled code
  27       */
  28      public function compile($args, $compiler, $parameter)
  29      {
  30          // check and get attributes
  31          $_attr = $this->getAttributes($compiler, $args);
  32          $this->openTag($compiler, 'while', $compiler->nocache);
  33  
  34          if (!array_key_exists("if condition",$parameter)) {
  35              $compiler->trigger_template_error("missing while condition", $compiler->lex->taglineno);
  36          }
  37  
  38          // maybe nocache because of nocache variables
  39          $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
  40          if (is_array($parameter['if condition'])) {
  41              if ($compiler->nocache) {
  42                  $_nocache = ',true';
  43                  // create nocache var to make it know for further compiling
  44                  if (is_array($parameter['if condition']['var'])) {
  45                      $compiler->template->tpl_vars[trim($parameter['if condition']['var']['var'], "'")] = new Smarty_variable(null, true);
  46                  } else {
  47                      $compiler->template->tpl_vars[trim($parameter['if condition']['var'], "'")] = new Smarty_variable(null, true);
  48                  }
  49              } else {
  50                  $_nocache = '';
  51              }
  52              if (is_array($parameter['if condition']['var'])) {
  53                  $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
  54                  $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
  55              } else {
  56                  $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
  57                  $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
  58              }
  59              return $_output;
  60          } else {
  61              return "<?php while ({$parameter['if condition']}){?>";
  62          }
  63      }
  64  
  65  }
  66  
  67  /**
  68   * Smarty Internal Plugin Compile Whileclose Class
  69   *
  70   * @package Smarty
  71   * @subpackage Compiler
  72   */
  73  class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase {
  74  
  75      /**
  76       * Compiles code for the {/while} tag
  77       *
  78       * @param array  $args     array with attributes from parser
  79       * @param object $compiler compiler object
  80       * @return string compiled code
  81       */
  82      public function compile($args, $compiler)
  83      {
  84          // must endblock be nocache?
  85          if ($compiler->nocache) {
  86              $compiler->tag_nocache = true;
  87          }
  88          $compiler->nocache = $this->closeTag($compiler, array('while'));
  89          return "<?php }?>";
  90      }
  91  
  92  }
  93  
  94  ?>


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