aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/template/twig
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2013-08-28 13:30:48 -0500
committerNathan Guse <nathaniel.guse@gmail.com>2013-08-28 13:30:48 -0500
commit68ed2b603556dd509172a2c061622ded693e88db (patch)
tree5424c5e3d4dd6d451e9971e905f6026ac0372479 /phpBB/phpbb/template/twig
parent57bc3c7d3aaa66fc66798bc1e60b88ae17b110a9 (diff)
parentdcf82d9a5ae26de462687325b4d8553e4aaca7d4 (diff)
downloadforums-68ed2b603556dd509172a2c061622ded693e88db.tar
forums-68ed2b603556dd509172a2c061622ded693e88db.tar.gz
forums-68ed2b603556dd509172a2c061622ded693e88db.tar.bz2
forums-68ed2b603556dd509172a2c061622ded693e88db.tar.xz
forums-68ed2b603556dd509172a2c061622ded693e88db.zip
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/11628
# By Bruno Ais (42) and others # Via Joas Schilling (39) and others * 'develop' of github.com:phpbb/phpbb3: (157 commits) [ticket/11803] Revert POLL_MAX_OPTIONS min value to 0 [ticket/11799] Send anti abuse headers in "new password" emails. [ticket/11792] Add functional test for var lang_set_ext of core.user_setup [ticket/11804] Remove </li> from overall_header which was not open [ticket/11802] replace $browser with $user->browser [ticket/11801] removed some whitespace and added missing semi colon's in css [ticket/11792] Add performance remark to core.user_setup event PHPDoc [ticket/11792] Add variable 'lang_set_ext' to event core.user_setup [ticket/11789] Remove inline color in memberlist_view [ticket/11800] Fix scripts variable in subsilver simple_footer [ticket/11800] Fix JavaScript in simple_footer.html [ticket/11800] Remove forum_fn from memberlist_search.html [ticket/11796] Replace pagination with pagination.html [ticket/11794] Add missing array element commas to docs/coding-guidelines.html [ticket/11775] Fix doc blocks syntax [ticket/11775] Remove spaces at line ends [ticket/11789] Remove colors from HTML code [ticket/11784] Remove naming redundancy for event listeners [ticket/11775] Split test into multiple steps [ticket/11777] Fix new test for loop variables in extension template listeners ... Conflicts: phpBB/install/index.php phpBB/install/install_update.php
Diffstat (limited to 'phpBB/phpbb/template/twig')
-rw-r--r--phpBB/phpbb/template/twig/lexer.php17
-rw-r--r--phpBB/phpbb/template/twig/node/event.php8
-rw-r--r--phpBB/phpbb/template/twig/twig.php4
3 files changed, 18 insertions, 11 deletions
diff --git a/phpBB/phpbb/template/twig/lexer.php b/phpBB/phpbb/template/twig/lexer.php
index 4f88147542..3534311b7a 100644
--- a/phpBB/phpbb/template/twig/lexer.php
+++ b/phpBB/phpbb/template/twig/lexer.php
@@ -191,20 +191,18 @@ class phpbb_template_twig_lexer extends Twig_Lexer
// Recursive...fix any child nodes
$body = $parent_class->fix_begin_tokens($body, $parent_nodes);
- // Rename loopname vars (to prevent collisions, loop children are named (loop name)_loop_element)
- $body = str_replace($name . '.', $name . '_loop_element.', $body);
-
// Need the parent variable name
array_pop($parent_nodes);
- $parent = (!empty($parent_nodes)) ? end($parent_nodes) . '_loop_element.' : '';
+ $parent = (!empty($parent_nodes)) ? end($parent_nodes) . '.' : '';
if ($subset !== '')
{
$subset = '|subset(' . $subset . ')';
}
- // Turn into a Twig for loop, using (loop name)_loop_element for each child
- return "{% for {$name}_loop_element in {$parent}{$name}{$subset} %}{$body}{% endfor %}";
+ $parent = ($parent) ?: 'loops.';
+ // Turn into a Twig for loop
+ return "{% for {$name} in {$parent}{$name}{$subset} %}{$body}{% endfor %}";
};
// Replace <!-- BEGINELSE --> correctly, only needs to be done once
@@ -227,8 +225,11 @@ class phpbb_template_twig_lexer extends Twig_Lexer
// Replace $TEST with definition.TEST
$inner = preg_replace('#\s\$([a-zA-Z_0-9]+)#', ' definition.$1', $inner);
- // Replace .test with test|length
- $inner = preg_replace('#\s\.([a-zA-Z_0-9\.]+)#', ' $1|length', $inner);
+ // Replace .foo with loops.foo|length
+ $inner = preg_replace('#\s\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', ' loops.$1|length$2', $inner);
+
+ // Replace .foo.bar with foo.bar|length
+ $inner = preg_replace('#\s\.([a-zA-Z_0-9\.]+)([^a-zA-Z_0-9\.])#', ' $1|length$2', $inner);
return "<!-- {$matches[1]}IF{$inner}-->";
};
diff --git a/phpBB/phpbb/template/twig/node/event.php b/phpBB/phpbb/template/twig/node/event.php
index 971dea14fa..c94e5fdf20 100644
--- a/phpBB/phpbb/template/twig/node/event.php
+++ b/phpBB/phpbb/template/twig/node/event.php
@@ -18,6 +18,12 @@ if (!defined('IN_PHPBB'))
class phpbb_template_twig_node_event extends Twig_Node
{
+ /**
+ * The subdirectory in which all template listener files must be placed
+ * @var string
+ */
+ protected $listener_directory = 'event/';
+
/** @var Twig_Environment */
protected $environment;
@@ -37,7 +43,7 @@ class phpbb_template_twig_node_event extends Twig_Node
{
$compiler->addDebugInfo($this);
- $location = $this->getNode('expr')->getAttribute('name');
+ $location = $this->listener_directory . $this->getNode('expr')->getAttribute('name');
foreach ($this->environment->get_phpbb_extensions() as $ext_namespace => $ext_path)
{
diff --git a/phpBB/phpbb/template/twig/twig.php b/phpBB/phpbb/template/twig/twig.php
index 582939c252..a96bdcbdb9 100644
--- a/phpBB/phpbb/template/twig/twig.php
+++ b/phpBB/phpbb/template/twig/twig.php
@@ -470,15 +470,15 @@ class phpbb_template_twig implements phpbb_template
$vars = array_merge(
$context_vars['.'][0], // To get normal vars
- $context_vars, // To get loops
array(
'definition' => new phpbb_template_twig_definition(),
'user' => $this->user,
+ 'loops' => $context_vars, // To get loops
)
);
// cleanup
- unset($vars['.']);
+ unset($vars['loops']['.']);
return $vars;
}