Strip newlines when compiling if conditions in templates
authorMatthias Schmidt <gravatronics@live.com>
Fri, 15 May 2015 13:46:24 +0000 (15:46 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Fri, 15 May 2015 13:46:24 +0000 (15:46 +0200)
Previously, the compiler could handle most situations with newlines but
had issues in certain situations with closing parentheses being followed
by a newline. This case is relevant when code of multiple template listeners
is inserted at the end of an if condition as the template engine concatenates
template listener code by newlines.

wcfsetup/install/files/lib/system/template/TemplateScriptingCompiler.class.php

index 7a4dfa3390c0b4c1318482fef934d858151f89a4..9b595d235a65aef18886c03fc8e8e0763715bb5c 100644 (file)
@@ -933,7 +933,7 @@ class TemplateScriptingCompiler {
         */
        protected function compileIfTag($tagArgs, $elseif = false) {
                $tagArgs = $this->replaceQuotes($tagArgs);
-               $tagArgs = str_replace(' ', '', $tagArgs);
+               $tagArgs = str_replace(array(' ', "\n"), '', $tagArgs);
                
                // split tags
                preg_match_all('~('.$this->conditionOperatorPattern.')~', $tagArgs, $matches);