aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2013-02-19 15:49:49 +0100
committerMarc Alexander <admin@m-a-styles.de>2013-02-19 16:08:28 +0100
commit01a2622dc6b9910b2f4a3d7c77e7b06b51584bc0 (patch)
tree3f31e34cc0b8b9b6aa8d9721892e6aafdec522ae /phpBB
parent34c564062a95b9306487fbc6bbd17c7c9c8a63c4 (diff)
downloadforums-01a2622dc6b9910b2f4a3d7c77e7b06b51584bc0.tar
forums-01a2622dc6b9910b2f4a3d7c77e7b06b51584bc0.tar.gz
forums-01a2622dc6b9910b2f4a3d7c77e7b06b51584bc0.tar.bz2
forums-01a2622dc6b9910b2f4a3d7c77e7b06b51584bc0.tar.xz
forums-01a2622dc6b9910b2f4a3d7c77e7b06b51584bc0.zip
[ticket/11323] Correctly treat variables in template defines
Previously, any template variables that were used when defining a variable were treated as strings. This is a regression to phpBB 3.0. With this patch the template variables will be properly parsed. PHPBB3-11323
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/includes/template/filter.php12
1 files changed, 9 insertions, 3 deletions
diff --git a/phpBB/includes/template/filter.php b/phpBB/includes/template/filter.php
index f73ad28ba1..93bacd9c1e 100644
--- a/phpBB/includes/template/filter.php
+++ b/phpBB/includes/template/filter.php
@@ -830,10 +830,11 @@ class phpbb_template_filter extends php_user_filter
*/
private function compile_tag_define($tag_args, $op)
{
+ $add_quote = true;
$match = array();
- preg_match('#^((?:' . self::REGEX_NS . '\.)+)?\$(?=[A-Z])([A-Z0-9_\-]*)(?: = (.*?))?$#', $tag_args, $match);
+ preg_match('#^((?:' . self::REGEX_NS . '\.)+)?\$(?=[A-Z])([A-Z0-9_\-]*)(?: = (\'?)([^\']*)(\'?))?$#', $tag_args, $match);
- if (empty($match[2]) || (!isset($match[3]) && $op))
+ if (empty($match[2]) || (!isset($match[4]) && $op))
{
return '';
}
@@ -843,7 +844,12 @@ class phpbb_template_filter extends php_user_filter
return 'unset(' . (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[2] . '\']' : '$_tpldata[\'DEFINE\'][\'.\'][\'' . $match[2] . '\']') . ');';
}
- $parsed_statement = implode(' ', $this->compile_expression($match[3]));
+ if ($match[3] && $match[5] && substr($match[4], 0, 1) == '{' && substr($match[4], -1, 1) == '}')
+ {
+ $match[4] = substr($match[4], 1, -1);
+ $add_quote = false;
+ }
+ $parsed_statement = ($add_quote) ? "'" . implode(' ', $this->compile_expression($match[4])) . "'" : implode(' ', $this->compile_expression($match[4]));
return (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[2] . '\']' : '$_tpldata[\'DEFINE\'][\'.\'][\'' . $match[2] . '\']') . ' = ' . $parsed_statement . ';';
}