mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
Merge remote-tracking branch 'remotes/cyberalien/ticket/11482' into develop
# By Vjacheslav Trushkin # Via Vjacheslav Trushkin * remotes/cyberalien/ticket/11482: [ticket/11482] Use double quotes for code [ticket/11482] Unit tests for advanced DEFINE [ticket/11482] Implementation of advanced DEFINE tag
This commit is contained in:
commit
9fab868f0f
6 changed files with 67 additions and 2 deletions
|
@ -335,6 +335,10 @@ class phpbb_template_filter extends php_user_filter
|
|||
return '<?php ' . $this->compile_tag_define($matches[2], false) . ' ?>';
|
||||
break;
|
||||
|
||||
case 'ENDDEFINE':
|
||||
return '<?php ' . $this->compile_tag_enddefine() . ' ?>';
|
||||
break;
|
||||
|
||||
case 'INCLUDE':
|
||||
return '<?php ' . $this->compile_tag_include($matches[2]) . ' ?>';
|
||||
break;
|
||||
|
@ -839,6 +843,16 @@ class phpbb_template_filter extends php_user_filter
|
|||
$match = array();
|
||||
preg_match('#^((?:' . self::REGEX_NS . '\.)+)?\$(?=[A-Z])([A-Z0-9_\-]*)(?: = (.*?))?$#', $tag_args, $match);
|
||||
|
||||
if (!empty($match[2]) && !isset($match[3]) && $op)
|
||||
{
|
||||
// DEFINE tag with ENDDEFINE
|
||||
$array = "\$_tpldata['DEFINE']['.vars']";
|
||||
$code = 'ob_start(); ';
|
||||
$code .= "if (!isset($array)) { $array = array(); } ";
|
||||
$code .= "{$array}[] = '{$match[2]}'";
|
||||
return $code;
|
||||
}
|
||||
|
||||
if (empty($match[2]) || (!isset($match[3]) && $op))
|
||||
{
|
||||
return '';
|
||||
|
@ -865,6 +879,20 @@ class phpbb_template_filter extends php_user_filter
|
|||
return (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[2] . '\']' : '$_tpldata[\'DEFINE\'][\'.\'][\'' . $match[2] . '\']') . ' = ' . $parsed_statement . ';';
|
||||
}
|
||||
|
||||
/**
|
||||
* Compile ENDDEFINE tag
|
||||
*
|
||||
* @return string compiled template code
|
||||
*/
|
||||
private function compile_tag_enddefine()
|
||||
{
|
||||
$array = "\$_tpldata['DEFINE']['.vars']";
|
||||
$code = "if (!isset($array) || !sizeof($array)) { trigger_error('ENDDEFINE tag without DEFINE in ' . basename(__FILE__), E_USER_ERROR); }";
|
||||
$code .= "\$define_var = array_pop($array); ";
|
||||
$code .= "\$_tpldata['DEFINE']['.'][\$define_var] = ob_get_clean();";
|
||||
return $code;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compile INCLUDE tag
|
||||
*
|
||||
|
|
|
@ -132,6 +132,20 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
|||
array(),
|
||||
"xyz\nabc\nabc\nbar\nbar\nabc",
|
||||
),
|
||||
array(
|
||||
'define_advanced.html',
|
||||
array(),
|
||||
array('loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
||||
array(),
|
||||
"abc\nzxc\ncde\nbcd",
|
||||
),
|
||||
array(
|
||||
'define_unclosed.html',
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
"test",
|
||||
),
|
||||
array(
|
||||
'expressions.html',
|
||||
array(),
|
||||
|
|
|
@ -7,5 +7,3 @@
|
|||
{$VALUE}
|
||||
<!-- UNDEFINE $VALUE -->
|
||||
{$VALUE}
|
||||
<!-- DEFINE $VALUE -->
|
||||
|
||||
|
|
12
tests/template/templates/define_advanced.html
Normal file
12
tests/template/templates/define_advanced.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<!-- DEFINE $VALUE -->
|
||||
abc
|
||||
<!-- ENDDEFINE -->
|
||||
{$VALUE}
|
||||
<!-- DEFINE $VALUE1 -->
|
||||
bcd
|
||||
<!-- ENDDEFINE -->
|
||||
<!-- DEFINE $VALUE2 -->
|
||||
cde
|
||||
<!-- ENDDEFINE -->
|
||||
<!-- INCLUDE define_include2.html -->
|
||||
{$INCLUDED_VALUE3}
|
11
tests/template/templates/define_include2.html
Normal file
11
tests/template/templates/define_include2.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<!-- DEFINE $INCLUDED_VALUE1 -->
|
||||
zxc
|
||||
<!-- ENDDEFINE -->
|
||||
<!-- DEFINE $INCLUDED_VALUE2 -->
|
||||
qwe
|
||||
<!-- ENDDEFINE -->
|
||||
{$INCLUDED_VALUE1}
|
||||
<!-- DEFINE $INCLUDED_VALUE3 -->
|
||||
{$VALUE2}
|
||||
{$VALUE1}
|
||||
<!-- ENDDEFINE -->
|
2
tests/template/templates/define_unclosed.html
Normal file
2
tests/template/templates/define_unclosed.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
<!-- DEFINE $VALUE -->
|
||||
test
|
Loading…
Add table
Reference in a new issue