aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2011-09-27 20:24:16 +0200
committerAndreas Fischer <bantu@phpbb.com>2011-09-27 20:24:16 +0200
commitaf66fbb93b2ca3091d2d10270c2bcc65c522b89d (patch)
treef9d9928ec432ef20e01bebb650eebe39c2f99499
parentd01c028c1c1aab04b5cf9c0cdc785c05e52e138a (diff)
parentfd376dfbe6cd491dae5f6a67edd2bb69aeee3c04 (diff)
downloadforums-af66fbb93b2ca3091d2d10270c2bcc65c522b89d.tar
forums-af66fbb93b2ca3091d2d10270c2bcc65c522b89d.tar.gz
forums-af66fbb93b2ca3091d2d10270c2bcc65c522b89d.tar.bz2
forums-af66fbb93b2ca3091d2d10270c2bcc65c522b89d.tar.xz
forums-af66fbb93b2ca3091d2d10270c2bcc65c522b89d.zip
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.
-rw-r--r--phpBB/includes/template/filter.php19
-rw-r--r--tests/template/template_test.php2
-rw-r--r--tests/template/templates/loop_nested_deep_multilevel_ref.html3
3 files changed, 17 insertions, 7 deletions
diff --git a/phpBB/includes/template/filter.php b/phpBB/includes/template/filter.php
index d8ea603efd..115fe21e35 100644
--- a/phpBB/includes/template/filter.php
+++ b/phpBB/includes/template/filter.php
@@ -873,6 +873,15 @@ class phpbb_template_filter extends php_user_filter
// Strip the trailing period.
$namespace = substr($namespace, 0, -1);
+ if (($pos = strrpos($namespace, '.')) !== false)
+ {
+ $local_namespace = substr($namespace, $pos + 1);
+ }
+ else
+ {
+ $local_namespace = $namespace;
+ }
+
$expr = true;
// 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_COUNT':
- $varref = "\$_${namespace}_i";
+ $varref = "\$_${local_namespace}_i";
break;
case 'S_NUM_ROWS':
- $varref = "\$_${namespace}_count";
+ $varref = "\$_${local_namespace}_count";
break;
case 'S_FIRST_ROW':
- $varref = "(\$_${namespace}_i == 0)";
+ $varref = "(\$_${local_namespace}_i == 0)";
break;
case 'S_LAST_ROW':
- $varref = "(\$_${namespace}_i == \$_${namespace}_count - 1)";
+ $varref = "(\$_${local_namespace}_i == \$_${local_namespace}_count - 1)";
break;
case 'S_BLOCK_NAME':
- $varref = "'$namespace'";
+ $varref = "'$local_namespace'";
break;
default:
diff --git a/tests/template/template_test.php b/tests/template/template_test.php
index 8ea21444f3..86ff2e9ec6 100644
--- a/tests/template/template_test.php
+++ b/tests/template/template_test.php
@@ -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(),
// 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(
'loop_size.html',
diff --git a/tests/template/templates/loop_nested_deep_multilevel_ref.html b/tests/template/templates/loop_nested_deep_multilevel_ref.html
index 60fad7b4cd..bcc2a7c07b 100644
--- a/tests/template/templates/loop_nested_deep_multilevel_ref.html
+++ b/tests/template/templates/loop_nested_deep_multilevel_ref.html
@@ -2,10 +2,11 @@ top-level content
<!-- BEGIN outer -->
outer
<!-- BEGIN middle -->
+ {outer.middle.S_BLOCK_NAME}
<!-- BEGIN inner -->
inner {inner.VARIABLE}
<!-- 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 -->
<!-- END inner -->
<!-- END middle -->