1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-07 08:05:25 +02:00

Merge branch 'develop' of git://github.com/phpbb/phpbb3 into develop

* 'develop' of git://github.com/phpbb/phpbb3:
  [ticket/10392] Alter parent namespace stripping.
  [ticket/10392] Test for magic loop variables with nested namespaces.
  [ticket/10392] Missed fix for S_BLOCK_NAME.
  [ticket/10392] Fix access to nested special block variables.
This commit is contained in:
Andreas Fischer 2011-09-27 20:24:16 +02:00
commit af66fbb93b
3 changed files with 17 additions and 7 deletions

View File

@ -873,6 +873,15 @@ class phpbb_template_filter extends php_user_filter
// Strip the trailing period. // Strip the trailing period.
$namespace = substr($namespace, 0, -1); $namespace = substr($namespace, 0, -1);
if (($pos = strrpos($namespace, '.')) !== false)
{
$local_namespace = substr($namespace, $pos + 1);
}
else
{
$local_namespace = $namespace;
}
$expr = true; $expr = true;
// S_ROW_COUNT is deceptive, it returns the current row number now the number of rows // S_ROW_COUNT is deceptive, it returns the current row number now the number of rows
@ -881,23 +890,23 @@ class phpbb_template_filter extends php_user_filter
{ {
case 'S_ROW_NUM': case 'S_ROW_NUM':
case 'S_ROW_COUNT': case 'S_ROW_COUNT':
$varref = "\$_${namespace}_i"; $varref = "\$_${local_namespace}_i";
break; break;
case 'S_NUM_ROWS': case 'S_NUM_ROWS':
$varref = "\$_${namespace}_count"; $varref = "\$_${local_namespace}_count";
break; break;
case 'S_FIRST_ROW': case 'S_FIRST_ROW':
$varref = "(\$_${namespace}_i == 0)"; $varref = "(\$_${local_namespace}_i == 0)";
break; break;
case 'S_LAST_ROW': case 'S_LAST_ROW':
$varref = "(\$_${namespace}_i == \$_${namespace}_count - 1)"; $varref = "(\$_${local_namespace}_i == \$_${local_namespace}_count - 1)";
break; break;
case 'S_BLOCK_NAME': case 'S_BLOCK_NAME':
$varref = "'$namespace'"; $varref = "'$local_namespace'";
break; break;
default: default:

View File

@ -248,7 +248,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
array('outer' => array(array()), 'outer.middle' => array(array()), 'outer.middle.inner' => array(array('VARIABLE' => 'z'), array('VARIABLE' => 'zz'))), array('outer' => array(array()), 'outer.middle' => array(array()), 'outer.middle.inner' => array(array('VARIABLE' => 'z'), array('VARIABLE' => 'zz'))),
array(), array(),
// I don't completely understand this output, hopefully it's correct // I don't completely understand this output, hopefully it's correct
"top-level content\nouter\n\ninner z\nfirst row\n\ninner zz", "top-level content\nouter\nmiddle\ninner z\nfirst row of 2 in inner\n\ninner zz",
), ),
array( array(
'loop_size.html', 'loop_size.html',

View File

@ -2,10 +2,11 @@ top-level content
<!-- BEGIN outer --> <!-- BEGIN outer -->
outer outer
<!-- BEGIN middle --> <!-- BEGIN middle -->
{outer.middle.S_BLOCK_NAME}
<!-- BEGIN inner --> <!-- BEGIN inner -->
inner {inner.VARIABLE} inner {inner.VARIABLE}
<!-- IF outer.middle.inner.S_FIRST_ROW --> <!-- IF outer.middle.inner.S_FIRST_ROW -->
first row first row of {outer.middle.inner.S_NUM_ROWS} in {middle.inner.S_BLOCK_NAME}
<!-- ENDIF --> <!-- ENDIF -->
<!-- END inner --> <!-- END inner -->
<!-- END middle --> <!-- END middle -->