diff options
| author | Marc Alexander <admin@m-a-styles.de> | 2013-02-26 21:43:39 +0100 | 
|---|---|---|
| committer | Marc Alexander <admin@m-a-styles.de> | 2013-02-26 21:43:39 +0100 | 
| commit | 1ebb17c698ce17147abec0af5048ac522014cf45 (patch) | |
| tree | bc2647ac6807831058a1268a3ed20e3d9e0ebdb2 | |
| parent | dd5963eabb17b29fc4abc98ea0cb95357fe253bb (diff) | |
| download | forums-1ebb17c698ce17147abec0af5048ac522014cf45.tar forums-1ebb17c698ce17147abec0af5048ac522014cf45.tar.gz forums-1ebb17c698ce17147abec0af5048ac522014cf45.tar.bz2 forums-1ebb17c698ce17147abec0af5048ac522014cf45.tar.xz forums-1ebb17c698ce17147abec0af5048ac522014cf45.zip  | |
[ticket/11323] Reduce additional code and revert regex to previous one
PHPBB3-11323
| -rw-r--r-- | phpBB/includes/template/filter.php | 19 | 
1 files changed, 12 insertions, 7 deletions
diff --git a/phpBB/includes/template/filter.php b/phpBB/includes/template/filter.php index 93bacd9c1e..9e8ad2fef0 100644 --- a/phpBB/includes/template/filter.php +++ b/phpBB/includes/template/filter.php @@ -830,11 +830,10 @@ 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[4]) && $op)) +		if (empty($match[2]) || (!isset($match[3]) && $op))  		{  			return '';  		} @@ -844,12 +843,18 @@ 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] . '\']') . ');';  		} -		if ($match[3] && $match[5] && substr($match[4], 0, 1) == '{' && substr($match[4], -1, 1) == '}') +		/* +		* Define tags that contain template variables (enclosed in curly brackets) +		* need to be treated differently. +		*/ +		if (substr($match[3], 1, 1) == '{' && substr($match[3], -2, 1) == '}') +		{ +			$parsed_statement = implode(' ', $this->compile_expression(substr($match[3], 2, -2))); +		} +		else  		{ -			$match[4] = substr($match[4], 1, -1); -			$add_quote = false; +			$parsed_statement = implode(' ', $this->compile_expression($match[3]));  		} -		$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 . ';';  	}  | 
