diff options
author | redmatrix <redmatrix@redmatrix.me> | 2015-12-06 14:22:55 -0800 |
---|---|---|
committer | redmatrix <redmatrix@redmatrix.me> | 2015-12-06 14:22:55 -0800 |
commit | a88ec1b1af954a447a666d3ff66b1d1df0a645db (patch) | |
tree | 7ccfe6a03923ad118910202e21a605e13127192c /library/Smarty/libs/sysplugins/smarty_internal_compile_while.php | |
parent | 553b3a5c6c2ba6b93ad1193ec044ee92cf7690aa (diff) | |
parent | a6cb25020bb5200cc3c00ecc941ddb751644fbcc (diff) | |
download | volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.tar.gz volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.tar.bz2 volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.zip |
Merge https://github.com/redmatrix/hubzilla into pending_merge
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_internal_compile_while.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_internal_compile_while.php | 55 |
1 files changed, 35 insertions, 20 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php index 36dc049db..bd31f6671 100644 --- a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php +++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php @@ -19,48 +19,63 @@ class Smarty_Internal_Compile_While 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 $parameter array with compilation parameter + * @param array $args array with attributes from parser + * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object + * @param array $parameter array with compilation parameter * * @return string compiled code + * @throws \SmartyCompilerException */ - public function compile($args, $compiler, $parameter) + public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) { + $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", $compiler->lex->taglineno); + $compiler->trigger_template_error("missing while condition", null, true); } // maybe nocache because of nocache variables $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; + $_output = "<?php\n"; 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); + $var = trim($parameter['if condition']['var']['var'], "'"); } else { - $compiler->template->tpl_vars[trim($parameter['if condition']['var'], "'")] = new Smarty_variable(null, true); + $var = trim($parameter['if condition']['var'], "'"); + } + if (isset($compiler->template->tpl_vars[$var])) { + $compiler->template->tpl_vars[$var]->nocache = true; + } else { + $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true); } } else { $_nocache = ''; } if (is_array($parameter['if condition']['var'])) { - $_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"; - $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . ") {?>"; + $_output .= "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->smarty->ext->_var->createLocalArrayVariable(\$_smarty_tpl, " . $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'] . ") {?>"; } else { - $_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});"; - $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . ") {?>"; + $_output .= "if (!isset(\$_smarty_tpl->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'] . ") {?>"; } - - return $_output; } else { - return "<?php while ({$parameter['if condition']}) {?>"; - } + $_output .= "while ({$parameter['if condition']}) {?>"; + } + return $_output; } } @@ -75,19 +90,19 @@ 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 "<?php }?>"; + return "<?php }?>\n"; } } |