diff options
author | Andreas Fischer <bantu@phpbb.com> | 2011-09-27 20:24:16 +0200 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2011-09-27 20:24:16 +0200 |
commit | af66fbb93b2ca3091d2d10270c2bcc65c522b89d (patch) | |
tree | f9d9928ec432ef20e01bebb650eebe39c2f99499 | |
parent | d01c028c1c1aab04b5cf9c0cdc785c05e52e138a (diff) | |
parent | fd376dfbe6cd491dae5f6a67edd2bb69aeee3c04 (diff) | |
download | forums-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.php | 19 | ||||
-rw-r--r-- | tests/template/template_test.php | 2 | ||||
-rw-r--r-- | tests/template/templates/loop_nested_deep_multilevel_ref.html | 3 |
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 --> |