From ab5d8d4e07bb3c8230d0285ef8902ef1979fce51 Mon Sep 17 00:00:00 2001 From: emkael Date: Thu, 18 Oct 2018 02:39:34 +0200 Subject: Updating Smarty --- .../sysplugins/smarty_internal_compile_while.php | 82 ++++++++++++---------- 1 file changed, 44 insertions(+), 38 deletions(-) (limited to 'lib/smarty/sysplugins/smarty_internal_compile_while.php') diff --git a/lib/smarty/sysplugins/smarty_internal_compile_while.php b/lib/smarty/sysplugins/smarty_internal_compile_while.php index d7d986c..5aa3a73 100644 --- a/lib/smarty/sysplugins/smarty_internal_compile_while.php +++ b/lib/smarty/sysplugins/smarty_internal_compile_while.php @@ -1,94 +1,100 @@ 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", $compiler->lex->taglineno); + 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 (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'])) { - $compiler->template->tpl_vars[trim($parameter['if condition']['var']['var'], "'")] = new Smarty_variable(null, true); + if (is_array($parameter[ 'if condition' ][ 'var' ])) { + $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; } else { - $compiler->template->tpl_vars[trim($parameter['if condition']['var'], "'")] = new Smarty_variable(null, true); + $var = $parameter[ 'if condition' ][ 'var' ]; } - } else { - $_nocache = ''; + $compiler->setNocacheInVariable($var); } - if (is_array($parameter['if condition']['var'])) { - $_output = "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"; - $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>"; + $prefixVar = $compiler->getNewPrefixVariable(); + $assignCompiler = new Smarty_Internal_Compile_Assign(); + $assignAttr = array(); + $assignAttr[][ 'value' ] = $prefixVar; + if (is_array($parameter[ 'if condition' ][ 'var' ])) { + $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; + $_output = ""; + $_output .= $assignCompiler->compile( + $assignAttr, + $compiler, + array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) + ); } else { - $_output = "tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});"; - $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>"; + $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; + $_output = ""; + $_output .= $assignCompiler->compile($assignAttr, $compiler, array()); } return $_output; } else { - return ""; + return ""; } } - } /** * Smarty Internal Plugin Compile Whileclose Class * - * @package Smarty + * @package Smarty * @subpackage Compiler */ -class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase { - +class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase +{ /** * Compiles code for the {/while} tag * - * @param array $args array with attributes from parser - * @param object $compiler compiler object + * @param array $args array with attributes from parser + * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object + * * @return string compiled code */ - public function compile($args, $compiler) + public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) { + $compiler->loopNesting--; // must endblock be nocache? if ($compiler->nocache) { $compiler->tag_nocache = true; } $compiler->nocache = $this->closeTag($compiler, array('while')); - return ""; + return "\n"; } - } - -?> \ No newline at end of file -- cgit v1.2.3