]> git.mxchange.org Git - friendica.git/blob - library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
Merge remote branch 'upstream/master'
[friendica.git] / library / Smarty / libs / sysplugins / smarty_internal_compile_while.php
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 ?>