mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 05:18:52 +00:00
[ticket/11701] Fix loops var check
PHPBB3-11701
This commit is contained in:
parent
0d31420ae0
commit
c0b9db1c62
8 changed files with 60 additions and 56 deletions
|
@ -200,8 +200,9 @@ class phpbb_template_twig_lexer extends Twig_Lexer
|
||||||
$subset = '|subset(' . $subset . ')';
|
$subset = '|subset(' . $subset . ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parent = ($parent) ?: 'loops.';
|
||||||
// Turn into a Twig for loop
|
// Turn into a Twig for loop
|
||||||
return "{% for {$name} in loops.{$parent}{$name}{$subset} %}{$body}{% endfor %}";
|
return "{% for {$name} in {$parent}{$name}{$subset} %}{$body}{% endfor %}";
|
||||||
};
|
};
|
||||||
|
|
||||||
// Replace <!-- BEGINELSE --> correctly, only needs to be done once
|
// Replace <!-- BEGINELSE --> correctly, only needs to be done once
|
||||||
|
@ -224,7 +225,10 @@ class phpbb_template_twig_lexer extends Twig_Lexer
|
||||||
// Replace $TEST with definition.TEST
|
// Replace $TEST with definition.TEST
|
||||||
$inner = preg_replace('#\s\$([a-zA-Z_0-9]+)#', ' definition.$1', $inner);
|
$inner = preg_replace('#\s\$([a-zA-Z_0-9]+)#', ' definition.$1', $inner);
|
||||||
|
|
||||||
// Replace .test with test|length
|
// Replace .foo with loops.foo|length
|
||||||
|
$inner = preg_replace('#\s\.([a-zA-Z_0-9]+)#', ' loops.$1|length', $inner);
|
||||||
|
|
||||||
|
// Replace .foo.bar with foo.bar|length
|
||||||
$inner = preg_replace('#\s\.([a-zA-Z_0-9\.]+)#', ' $1|length', $inner);
|
$inner = preg_replace('#\s\.([a-zA-Z_0-9\.]+)#', ' $1|length', $inner);
|
||||||
|
|
||||||
return "<!-- {$matches[1]}IF{$inner}-->";
|
return "<!-- {$matches[1]}IF{$inner}-->";
|
||||||
|
|
|
@ -93,49 +93,49 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'loop.html',
|
'loop.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array())),
|
array('test_loop' => array(array())),
|
||||||
array(),
|
array(),
|
||||||
"loop\nloop",
|
"loop\nloop",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'loop.html',
|
'loop.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array(), array()), 'loop.block' => array(array())),
|
array('test_loop' => array(array(), array()), 'test_loop.block' => array(array())),
|
||||||
array(),
|
array(),
|
||||||
"loop\nloop\nloop\nloop",
|
"loop\nloop\nloop\nloop",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'loop.html',
|
'loop.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array(), array()), 'loop.block' => array(array()), 'block' => array(array(), array())),
|
array('test_loop' => array(array(), array()), 'test_loop.block' => array(array()), 'block' => array(array(), array())),
|
||||||
array(),
|
array(),
|
||||||
"loop\nloop\nloop\nloop\nloop#0-block#0\nloop#0-block#1\nloop#1-block#0\nloop#1-block#1",
|
"loop\nloop\nloop\nloop\nloop#0-block#0\nloop#0-block#1\nloop#1-block#0\nloop#1-block#1",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'loop_vars.html',
|
'loop_vars.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array('VARIABLE' => 'x'))),
|
array('test_loop' => array(array('VARIABLE' => 'x'))),
|
||||||
array(),
|
array(),
|
||||||
"first\n0 - a\nx - b\nset\nlast",
|
"first\n0 - a\nx - b\nset\nlast",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'loop_vars.html',
|
'loop_vars.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y'))),
|
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y'))),
|
||||||
array(),
|
array(),
|
||||||
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast",
|
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'loop_vars.html',
|
'loop_vars.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'loop.inner' => array(array(), array())),
|
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'test_loop.inner' => array(array(), array())),
|
||||||
array(),
|
array(),
|
||||||
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast\n0 - c\n1 - c\nlast inner",
|
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast\n0 - c\n1 - c\nlast inner",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'loop_advanced.html',
|
'loop_advanced.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array(), array(), array(), array(), array(), array(), array())),
|
array('test_loop' => array(array(), array(), array(), array(), array(), array(), array())),
|
||||||
array(),
|
array(),
|
||||||
"101234561\nx\n101234561\nx\n101234561\nx\n1234561\nx\n1\nx\n101\nx\n234\nx\n10\nx\n561\nx\n561",
|
"101234561\nx\n101234561\nx\n101234561\nx\n1234561\nx\n1\nx\n101\nx\n234\nx\n10\nx\n561\nx\n561",
|
||||||
),
|
),
|
||||||
|
@ -149,14 +149,14 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'define.html',
|
'define.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
array('test_loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
||||||
array(),
|
array(),
|
||||||
"xyz\nabc\n\$VALUE == 'abc'abc\nbar\nbar\nabc\ntest!@#$%^&*()_-=+{}[]:;\",<.>/?",
|
"xyz\nabc\n\$VALUE == 'abc'abc\nbar\nbar\nabc\ntest!@#$%^&*()_-=+{}[]:;\",<.>/?",
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'define_advanced.html',
|
'define_advanced.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
array('test_loop' => array(array(), array(), array(), array(), array(), array(), array()), 'test' => array(array()), 'test.deep' => array(array()), 'test.deep.defines' => array(array())),
|
||||||
array(),
|
array(),
|
||||||
"abc\nzxc\ncde\nbcd",
|
"abc\nzxc\ncde\nbcd",
|
||||||
),
|
),
|
||||||
|
@ -200,7 +200,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'include_loop.html',
|
'include_loop.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array('NESTED_FILE' => 'include_loop1.html')), 'loop.inner' => array(array('NESTED_FILE' => 'include_loop1.html'), array('NESTED_FILE' => 'include_loop2.html'), array('NESTED_FILE' => 'include_loop3.html'))),
|
array('test_loop' => array(array('NESTED_FILE' => 'include_loop1.html')), 'test_loop.inner' => array(array('NESTED_FILE' => 'include_loop1.html'), array('NESTED_FILE' => 'include_loop2.html'), array('NESTED_FILE' => 'include_loop3.html'))),
|
||||||
array(),
|
array(),
|
||||||
"1\n_1\n_02\n_3",
|
"1\n_1\n_02\n_3",
|
||||||
),
|
),
|
||||||
|
@ -221,8 +221,8 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'loop_vars.html',
|
'loop_vars.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'loop.inner' => array(array(), array())),
|
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'test_loop.inner' => array(array(), array())),
|
||||||
array('loop'),
|
array('test_loop'),
|
||||||
'',
|
'',
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
|
@ -235,7 +235,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'include_loop_define.html',
|
'include_loop_define.html',
|
||||||
array('VARIABLE' => 'value'),
|
array('VARIABLE' => 'value'),
|
||||||
array('loop' => array(array('NESTED_FILE' => 'variable.html'))),
|
array('test_loop' => array(array('NESTED_FILE' => 'variable.html'))),
|
||||||
array(),
|
array(),
|
||||||
'value',
|
'value',
|
||||||
),
|
),
|
||||||
|
@ -243,8 +243,8 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'loop_vars.html',
|
'loop_vars.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'loop.inner' => array(array(), array())),
|
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'test_loop.inner' => array(array(), array())),
|
||||||
array('loop.inner'),
|
array('test_loop.inner'),
|
||||||
"first\n0\n0\n2\nx\nset\n1\n1\n2\ny\nset\nlast",
|
"first\n0\n0\n2\nx\nset\n1\n1\n2\ny\nset\nlast",
|
||||||
),*/
|
),*/
|
||||||
array(
|
array(
|
||||||
|
@ -295,7 +295,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||||
array(
|
array(
|
||||||
'loop_size.html',
|
'loop_size.html',
|
||||||
array(),
|
array(),
|
||||||
array('loop' => array(array()), 'empty_loop' => array()),
|
array('test_loop' => array(array()), 'empty_loop' => array()),
|
||||||
array(),
|
array(),
|
||||||
"nonexistent = 0\n! nonexistent\n\nempty = 0\n! empty\nloop\n\nin loop",
|
"nonexistent = 0\n! nonexistent\n\nempty = 0\n! empty\nloop\n\nin loop",
|
||||||
),
|
),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!-- BEGIN loop -->
|
<!-- BEGIN test_loop -->
|
||||||
<!-- INCLUDE {loop.NESTED_FILE} -->
|
<!-- INCLUDE {test_loop.NESTED_FILE} -->
|
||||||
<!-- BEGIN inner -->_<!-- INCLUDE {inner.NESTED_FILE} --><!-- END inner -->
|
<!-- BEGIN inner -->_<!-- INCLUDE {test_loop.inner.NESTED_FILE} --><!-- END inner -->
|
||||||
<!-- END loop -->
|
<!-- END test_loop -->
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!-- BEGIN loop -->
|
<!-- BEGIN test_loop -->
|
||||||
<!-- DEFINE $DEF = '{loop.NESTED_FILE}' -->
|
<!-- DEFINE $DEF = '{test_loop.NESTED_FILE}' -->
|
||||||
<!-- INCLUDE {$DEF} -->
|
<!-- INCLUDE {$DEF} -->
|
||||||
<!-- END loop -->
|
<!-- END test_loop -->
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
<!-- BEGIN loop -->
|
<!-- BEGIN test_loop -->
|
||||||
loop
|
loop
|
||||||
<!-- BEGINELSE -->
|
<!-- BEGINELSE -->
|
||||||
noloop
|
noloop
|
||||||
<!-- END loop -->
|
<!-- END test_loop -->
|
||||||
|
|
||||||
<!-- IF .loop -->
|
<!-- IF .test_loop -->
|
||||||
loop
|
loop
|
||||||
<!-- ELSE -->
|
<!-- ELSE -->
|
||||||
noloop
|
noloop
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF .loop == 2 -->
|
<!-- IF .test_loop == 2 -->
|
||||||
loop
|
loop
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- BEGIN loop -->
|
<!-- BEGIN test_loop -->
|
||||||
<!-- BEGIN !block -->
|
<!-- BEGIN !block -->
|
||||||
loop#{loop.S_ROW_COUNT}-block#{block.S_ROW_COUNT}
|
loop#{test_loop.S_ROW_COUNT}-block#{block.S_ROW_COUNT}
|
||||||
<!-- END !block -->
|
<!-- END !block -->
|
||||||
<!-- END loop -->
|
<!-- END test_loop -->
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
<!-- BEGIN loop -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(0) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(0) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(0,-1) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(0,-1) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(1) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(1) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(1,1) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(1,1) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(0,1) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(0,1) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(2,4) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(2,4) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(0,-7) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(0,-7) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(-2,6) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(-2,6) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
x
|
x
|
||||||
<!-- BEGIN loop(-2,-1) -->{loop.S_FIRST_ROW}{loop.S_ROW_COUNT}{loop.S_LAST_ROW}<!-- END loop -->
|
<!-- BEGIN test_loop(-2,-1) -->{test_loop.S_FIRST_ROW}{test_loop.S_ROW_COUNT}{test_loop.S_LAST_ROW}<!-- END test_loop -->
|
||||||
|
|
|
@ -22,18 +22,18 @@
|
||||||
! empty
|
! empty
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF .loop -->
|
<!-- IF .test_loop -->
|
||||||
loop
|
loop
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF .loop == 0 -->
|
<!-- IF .test_loop == 0 -->
|
||||||
loop = 0
|
loop = 0
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- IF ! .loop -->
|
<!-- IF ! .test_loop -->
|
||||||
! loop
|
! loop
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
||||||
<!-- BEGIN loop -->
|
<!-- BEGIN test_loop -->
|
||||||
in loop
|
in loop
|
||||||
<!-- END loop -->
|
<!-- END test_loop -->
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<!-- BEGIN loop -->
|
<!-- BEGIN test_loop -->
|
||||||
<!-- IF loop.S_FIRST_ROW -->first<!-- ENDIF -->
|
<!-- IF test_loop.S_FIRST_ROW -->first<!-- ENDIF -->
|
||||||
{loop.S_ROW_NUM} - a
|
{test_loop.S_ROW_NUM} - a
|
||||||
{loop.VARIABLE} - b
|
{test_loop.VARIABLE} - b
|
||||||
<!-- IF loop.VARIABLE -->set<!-- ENDIF -->
|
<!-- IF test_loop.VARIABLE -->set<!-- ENDIF -->
|
||||||
<!-- IF loop.S_LAST_ROW -->
|
<!-- IF test_loop.S_LAST_ROW -->
|
||||||
last
|
last
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
<!-- BEGIN inner -->
|
<!-- BEGIN inner -->
|
||||||
{inner.S_ROW_NUM} - c
|
{test_loop.inner.S_ROW_NUM} - c
|
||||||
<!-- IF inner.S_LAST_ROW and inner.S_ROW_COUNT and inner.S_NUM_ROWS -->last inner<!-- ENDIF -->
|
<!-- IF test_loop.inner.S_LAST_ROW and test_loop.inner.S_ROW_COUNT and test_loop.inner.S_NUM_ROWS -->last inner<!-- ENDIF -->
|
||||||
<!-- END inner -->
|
<!-- END inner -->
|
||||||
<!-- END loop -->
|
<!-- END test_loop -->
|
||||||
|
|
Loading…
Add table
Reference in a new issue