gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

smarty_internal_compile_while.php (3821B)


      1 <?php
      2 /**
      3  * Smarty Internal Plugin Compile While
      4  * Compiles the {while} tag
      5  *
      6  * @package    Smarty
      7  * @subpackage Compiler
      8  * @author     Uwe Tews
      9  */
     10 
     11 /**
     12  * Smarty Internal Plugin Compile While Class
     13  *
     14  * @package    Smarty
     15  * @subpackage Compiler
     16  */
     17 class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
     18 {
     19     /**
     20      * Compiles code for the {while} tag
     21      *
     22      * @param  array  $args      array with attributes from parser
     23      * @param  object $compiler  compiler object
     24      * @param  array  $parameter array with compilation parameter
     25      *
     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                     $var = trim($parameter['if condition']['var']['var'], "'");
     46                 } else {
     47                     $var = trim($parameter['if condition']['var'], "'");
     48                 }
     49                 if (isset($compiler->template->tpl_vars[$var])) {
     50                     $compiler->template->tpl_vars[$var]->nocache = true;
     51                 } else {
     52                     $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true);
     53                 }
     54             } else {
     55                 $_nocache = '';
     56             }
     57             if (is_array($parameter['if condition']['var'])) {
     58                 $_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";
     59                 $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . ") {?>";
     60             } else {
     61                 $_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});";
     62                 $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . ") {?>";
     63             }
     64 
     65             return $_output;
     66         } else {
     67             return "<?php while ({$parameter['if condition']}) {?>";
     68         }
     69     }
     70 }
     71 
     72 /**
     73  * Smarty Internal Plugin Compile Whileclose Class
     74  *
     75  * @package    Smarty
     76  * @subpackage Compiler
     77  */
     78 class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
     79 {
     80     /**
     81      * Compiles code for the {/while} tag
     82      *
     83      * @param  array  $args     array with attributes from parser
     84      * @param  object $compiler compiler object
     85      *
     86      * @return string compiled code
     87      */
     88     public function compile($args, $compiler)
     89     {
     90         // must endblock be nocache?
     91         if ($compiler->nocache) {
     92             $compiler->tag_nocache = true;
     93         }
     94         $compiler->nocache = $this->closeTag($compiler, array('while'));
     95 
     96         return "<?php }?>";
     97     }
     98 }