[ticket/12957] Update the constructions of the template engine

PHPBB3-12957
This commit is contained in:
Tristan Darricau 2014-08-10 02:26:16 +02:00
parent 59b5ab4866
commit e7e6d45789
5 changed files with 66 additions and 5 deletions

View file

@ -129,13 +129,30 @@ class bbcode
*/ */
function bbcode_cache_init() function bbcode_cache_init()
{ {
global $phpbb_root_path, $phpEx, $config, $user, $phpbb_extension_manager, $phpbb_path_helper; global $phpbb_root_path, $phpEx, $config, $user, $phpbb_extension_manager, $phpbb_path_helper, $phpbb_container;
if (empty($this->template_filename)) if (empty($this->template_filename))
{ {
$this->template_bitfield = new bitfield($user->style['bbcode_bitfield']); $this->template_bitfield = new bitfield($user->style['bbcode_bitfield']);
$template = new phpbb\template\twig\twig($phpbb_path_helper, $config, $user, new phpbb\template\context(), $phpbb_extension_manager); $template = new \phpbb\template\twig\twig(
$phpbb_container->get('path_helper'),
$phpbb_container->get('config'),
$phpbb_container->get('user'),
new \phpbb\template\context(),
new \phpbb\template\twig\environment(
$phpbb_container->get('config'),
$phpbb_container->get('path_helper'),
$phpbb_container,
$phpbb_container->getParameter('core.root_path') . 'cache/',
$phpbb_container->get('ext.manager'),
new \phpbb\template\twig\loader()
),
$phpbb_container->getParameter('core.root_path') . 'cache/',
$phpbb_container->get('template.twig.extensions.collection'),
$phpbb_extension_manager
);
$template->set_style(); $template->set_style();
$template->set_filenames(array('bbcode.html' => 'bbcode.html')); $template->set_filenames(array('bbcode.html' => 'bbcode.html'));
$this->template_filename = $template->get_source_file_for_handle('bbcode.html'); $this->template_filename = $template->get_source_file_for_handle('bbcode.html');

View file

@ -637,14 +637,30 @@ class messenger
*/ */
protected function setup_template() protected function setup_template()
{ {
global $config, $phpbb_path_helper, $user, $phpbb_extension_manager; global $config, $phpbb_path_helper, $user, $phpbb_extension_manager, $phpbb_container;
if ($this->template instanceof \phpbb\template\template) if ($this->template instanceof \phpbb\template\template)
{ {
return; return;
} }
$this->template = new \phpbb\template\twig\twig($phpbb_path_helper, $config, $user, new \phpbb\template\context(), $phpbb_extension_manager); $this->template = new \phpbb\template\twig\twig(
$phpbb_container->get('path_helper'),
$phpbb_container->get('config'),
$phpbb_container->get('user'),
new \phpbb\template\context(),
new \phpbb\template\twig\environment(
$phpbb_container->get('config'),
$phpbb_container->get('path_helper'),
$phpbb_container,
$phpbb_container->getParameter('core.root_path') . 'cache/',
$phpbb_container->get('ext.manager'),
new \phpbb\template\twig\loader()
),
$phpbb_container->getParameter('core.root_path') . 'cache/',
$phpbb_container->get('template.twig.extensions.collection'),
$phpbb_extension_manager
);
} }
/** /**

View file

@ -137,6 +137,7 @@ $phpbb_container_builder->set_custom_parameters(array(
$phpbb_container = $phpbb_container_builder->get_container(); $phpbb_container = $phpbb_container_builder->get_container();
$phpbb_container->register('dbal.conn.driver')->setSynthetic(true); $phpbb_container->register('dbal.conn.driver')->setSynthetic(true);
$phpbb_container->register('template.twig.environment')->setSynthetic(true);
$phpbb_container->compile(); $phpbb_container->compile();
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver')); $phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
@ -268,7 +269,28 @@ $config = new \phpbb\config\config(array(
$symfony_request = $phpbb_container->get('symfony_request'); $symfony_request = $phpbb_container->get('symfony_request');
$phpbb_filesystem = $phpbb_container->get('filesystem'); $phpbb_filesystem = $phpbb_container->get('filesystem');
$phpbb_path_helper = $phpbb_container->get('path_helper'); $phpbb_path_helper = $phpbb_container->get('path_helper');
$template = new \phpbb\template\twig\twig($phpbb_path_helper, $config, $user, new \phpbb\template\context()); $cache_path = $phpbb_root_path . 'cache/';
$twig_environment = new \phpbb\template\twig\environment(
$config,
$phpbb_path_helper,
$phpbb_container,
$cache_path,
null,
$phpbb_container->get('template.twig.loader')
);
$phpbb_container->set('template.twig.environment', $twig_environment);
$template = new \phpbb\template\twig\twig(
$phpbb_path_helper,
$config,
$user,
new \phpbb\template\context(),
$twig_environment,
$cache_path,
array($phpbb_container->get('template.twig.extensions.phpbb'))
);
$paths = array($phpbb_root_path . 'install/update/new/adm/style', $phpbb_admin_path . 'style'); $paths = array($phpbb_root_path . 'install/update/new/adm/style', $phpbb_admin_path . 'style');
$paths = array_filter($paths, 'is_dir'); $paths = array_filter($paths, 'is_dir');
$template->set_custom_style(array( $template->set_custom_style(array(

View file

@ -79,6 +79,7 @@ class environment extends \Twig_Environment
if (null === $this->lexer) if (null === $this->lexer)
{ {
$this->lexer = $this->container->get('template.twig.lexer'); $this->lexer = $this->container->get('template.twig.lexer');
$this->lexer->set_environment($this);
} }
return $this->lexer; return $this->lexer;

View file

@ -15,6 +15,11 @@ namespace phpbb\template\twig;
class lexer extends \Twig_Lexer class lexer extends \Twig_Lexer
{ {
public function set_environment(\Twig_Environment $env)
{
$this->env = $env;
}
public function tokenize($code, $filename = null) public function tokenize($code, $filename = null)
{ {
// Our phpBB tags // Our phpBB tags