mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/12382] Allow nested loops in included files.
They have to reference the fully qualified loop name in BEGIN and END. PHPBB3-12382
This commit is contained in:
parent
936518d201
commit
d18f19a3bb
3 changed files with 13 additions and 7 deletions
|
@ -191,9 +191,16 @@ class lexer extends \Twig_Lexer
|
||||||
$parent_class = $this;
|
$parent_class = $this;
|
||||||
$callback = function ($matches) use ($parent_class, $parent_nodes)
|
$callback = function ($matches) use ($parent_class, $parent_nodes)
|
||||||
{
|
{
|
||||||
$name = $matches[1];
|
$hard_parents = explode('.', $matches[1]);
|
||||||
$subset = trim(substr($matches[2], 1, -1)); // Remove parenthesis
|
array_pop($hard_parents); // ends with .
|
||||||
$body = $matches[3];
|
if ($hard_parents)
|
||||||
|
{
|
||||||
|
$parent_nodes = array_merge($hard_parents, $parent_nodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
$name = $matches[2];
|
||||||
|
$subset = trim(substr($matches[3], 1, -1)); // Remove parenthesis
|
||||||
|
$body = $matches[4];
|
||||||
|
|
||||||
// Replace <!-- BEGINELSE -->
|
// Replace <!-- BEGINELSE -->
|
||||||
$body = str_replace('<!-- BEGINELSE -->', '{% else %}', $body);
|
$body = str_replace('<!-- BEGINELSE -->', '{% else %}', $body);
|
||||||
|
@ -242,7 +249,7 @@ class lexer extends \Twig_Lexer
|
||||||
return "{% for {$name} in {$parent}{$name}{$subset} %}{$body}{% endfor %}";
|
return "{% for {$name} in {$parent}{$name}{$subset} %}{$body}{% endfor %}";
|
||||||
};
|
};
|
||||||
|
|
||||||
return preg_replace_callback('#<!-- BEGIN ([!a-zA-Z0-9_]+)(\([0-9,\-]+\))? -->(.+?)<!-- END \1 -->#s', $callback, $code);
|
return preg_replace_callback('#<!-- BEGIN ((?:[a-zA-Z0-9_]+\.)*)([!a-zA-Z0-9_]+)(\([0-9,\-]+\))? -->(.+?)<!-- END \1\2 -->#s', $callback, $code);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[{event_loop.S_ROW_COUNT}<!-- BEGIN subloop -->[subloop:{event_loop.subloop.S_ROW_COUNT}]
|
[{event_loop.S_ROW_COUNT}<!-- BEGIN event_loop.subloop -->[subloop:{event_loop.subloop.S_ROW_COUNT}]
|
||||||
<!-- END subloop -->]
|
<!-- END event_loop.subloop -->]
|
||||||
|
|
|
@ -102,7 +102,6 @@ Zeta test event in all',
|
||||||
),
|
),
|
||||||
array(),
|
array(),
|
||||||
'event_loop[0[subloop:0]]',
|
'event_loop[0[subloop:0]]',
|
||||||
'Event files are missing opened parent loops: PHPBB3-12382',
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue