diff options
author | emkael <emkael@tlen.pl> | 2018-10-18 02:40:38 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2018-10-18 02:40:38 +0200 |
commit | eab8a101e7a3fcbb41e01a574985e06c5a3775de (patch) | |
tree | 60f201da5984b0c3638d10da02bba42b61aa3177 /lib/smarty3/sysplugins/smarty_internal_compile_while.php | |
parent | 7f38be342c1495aeca418286c15c25c18ac9e142 (diff) |
Updating Smarty
Diffstat (limited to 'lib/smarty3/sysplugins/smarty_internal_compile_while.php')
-rw-r--r-- | lib/smarty3/sysplugins/smarty_internal_compile_while.php | 34 |
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; |