summaryrefslogtreecommitdiff
path: root/lib/smarty3/sysplugins/smarty_internal_compile_while.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/smarty3/sysplugins/smarty_internal_compile_while.php')
-rw-r--r--lib/smarty3/sysplugins/smarty_internal_compile_while.php34
1 files changed, 16 insertions, 18 deletions
diff --git a/lib/smarty3/sysplugins/smarty_internal_compile_while.php b/lib/smarty3/sysplugins/smarty_internal_compile_while.php
index 30d8309..5aa3a73 100644
--- a/lib/smarty3/sysplugins/smarty_internal_compile_while.php
+++ b/lib/smarty3/sysplugins/smarty_internal_compile_while.php
@@ -19,29 +19,26 @@ class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
/**
* Compiles code for the {while} tag
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $parameter array with compilation parameter
*
* @return string compiled code
* @throws \SmartyCompilerException
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
{
- $compiler->loopNesting ++;
+ $compiler->loopNesting++;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
$this->openTag($compiler, 'while', $compiler->nocache);
-
- if (!array_key_exists("if condition", $parameter)) {
- $compiler->trigger_template_error("missing while condition", null, true);
+ if (!array_key_exists('if condition', $parameter)) {
+ $compiler->trigger_template_error('missing while condition', null, true);
}
-
// maybe nocache because of nocache variables
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
if (is_array($parameter[ 'if condition' ])) {
if ($compiler->nocache) {
- $_nocache = ',true';
// create nocache var to make it know for further compiling
if (is_array($parameter[ 'if condition' ][ 'var' ])) {
$var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
@@ -49,23 +46,24 @@ class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
$var = $parameter[ 'if condition' ][ 'var' ];
}
$compiler->setNocacheInVariable($var);
- } else {
- $_nocache = '';
}
+ $prefixVar = $compiler->getNewPrefixVariable();
$assignCompiler = new Smarty_Internal_Compile_Assign();
$assignAttr = array();
- $assignAttr[][ 'value' ] = $parameter[ 'if condition' ][ 'value' ];
+ $assignAttr[][ 'value' ] = $prefixVar;
if (is_array($parameter[ 'if condition' ][ 'var' ])) {
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
- $_output = "<?php while (" . $parameter[ 'if condition' ][ 'value' ] . ") {?>";
- $_output .= $assignCompiler->compile($assignAttr, $compiler,
- array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]));
+ $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>";
+ $_output .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
+ );
} else {
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
- $_output = "<?php while (" . $parameter[ 'if condition' ][ 'value' ] . ") {?>";
+ $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>";
$_output .= $assignCompiler->compile($assignAttr, $compiler, array());
}
-
return $_output;
} else {
return "<?php\n while ({$parameter['if condition']}) {?>";
@@ -84,14 +82,14 @@ class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
/**
* Compiles code for the {/while} tag
*
- * @param array $args array with attributes from parser
+ * @param array $args array with attributes from parser
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
*
* @return string compiled code
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
{
- $compiler->loopNesting --;
+ $compiler->loopNesting--;
// must endblock be nocache?
if ($compiler->nocache) {
$compiler->tag_nocache = true;