diff options
Diffstat (limited to 'phpBB')
-rw-r--r-- | phpBB/config/default/container/services_twig.yml | 1 | ||||
-rw-r--r-- | phpBB/config/installer/container/services.yml | 1 | ||||
-rw-r--r-- | phpBB/includes/functions_messenger.php | 6 | ||||
-rw-r--r-- | phpBB/phpbb/template/twig/environment.php | 36 |
4 files changed, 41 insertions, 3 deletions
diff --git a/phpBB/config/default/container/services_twig.yml b/phpBB/config/default/container/services_twig.yml index 3ca6d62c07..a9b5b6d4cd 100644 --- a/phpBB/config/default/container/services_twig.yml +++ b/phpBB/config/default/container/services_twig.yml @@ -11,6 +11,7 @@ services: - '%core.template.cache_path%' - '@ext.manager' - '@template.twig.loader' + - '@dispatcher' - [] calls: - [setLexer, ['@template.twig.lexer']] diff --git a/phpBB/config/installer/container/services.yml b/phpBB/config/installer/container/services.yml index c16547c649..7203c0ab10 100644 --- a/phpBB/config/installer/container/services.yml +++ b/phpBB/config/installer/container/services.yml @@ -84,6 +84,7 @@ services: - '%core.template.cache_path%' - null - '@template.twig.loader' + - null - [] calls: - [setLexer, ['@template.twig.lexer']] diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index 757a49003b..802246c1c5 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -656,7 +656,7 @@ class messenger */ protected function setup_template() { - global $phpbb_container; + global $phpbb_container, $phpbb_dispatcher; if ($this->template instanceof \phpbb\template\template) { @@ -671,7 +671,9 @@ class messenger $phpbb_container->get('ext.manager'), new \phpbb\template\twig\loader( $phpbb_container->get('filesystem') - ) + ), + $phpbb_dispatcher, + array() ); $template_environment->setLexer($phpbb_container->get('template.twig.lexer')); diff --git a/phpBB/phpbb/template/twig/environment.php b/phpBB/phpbb/template/twig/environment.php index 179412a2e3..ac4b16e457 100644 --- a/phpBB/phpbb/template/twig/environment.php +++ b/phpBB/phpbb/template/twig/environment.php @@ -32,6 +32,9 @@ class environment extends \Twig_Environment /** @var \phpbb\extension\manager */ protected $extension_manager; + /** @var \phpbb\event\dispatcher_interface */ + protected $phpbb_dispatcher; + /** @var string */ protected $phpbb_root_path; @@ -53,15 +56,17 @@ class environment extends \Twig_Environment * @param string $cache_path The path to the cache directory * @param \phpbb\extension\manager $extension_manager phpBB extension manager * @param \Twig_LoaderInterface $loader Twig loader interface + * @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher object * @param array $options Array of options to pass to Twig */ - public function __construct(\phpbb\config\config $phpbb_config, \phpbb\filesystem\filesystem $filesystem, \phpbb\path_helper $path_helper, $cache_path, \phpbb\extension\manager $extension_manager = null, \Twig_LoaderInterface $loader = null, $options = array()) + public function __construct(\phpbb\config\config $phpbb_config, \phpbb\filesystem\filesystem $filesystem, \phpbb\path_helper $path_helper, $cache_path, \phpbb\extension\manager $extension_manager = null, \Twig_LoaderInterface $loader = null, \phpbb\event\dispatcher_interface $phpbb_dispatcher = null, $options = array()) { $this->phpbb_config = $phpbb_config; $this->filesystem = $filesystem; $this->phpbb_path_helper = $path_helper; $this->extension_manager = $extension_manager; + $this->phpbb_dispatcher = $phpbb_dispatcher; $this->phpbb_root_path = $this->phpbb_path_helper->get_phpbb_root_path(); $this->web_root_path = $this->phpbb_path_helper->get_web_root_path(); @@ -202,8 +207,37 @@ class environment extends \Twig_Environment $context['definition']->set('STYLESHEETS', '__STYLESHEETS_' . $placeholder_salt . '__'); } + /** + * Allow changing the template output stream before rendering + * + * @event core.twig_environment_render_template_before + * @var array context Array with template variables + * @var string name The template name + * @since 3.2.1-RC1 + */ + if ($this->phpbb_dispatcher) + { + $vars = array('context', 'name'); + extract($this->phpbb_dispatcher->trigger_event('core.twig_environment_render_template_before', compact($vars))); + } + $output = parent::render($name, $context); + /** + * Allow changing the template output stream after rendering + * + * @event core.twig_environment_render_template_after + * @var array context Array with template variables + * @var string name The template name + * @var string output Rendered template output stream + * @since 3.2.1-RC1 + */ + if ($this->phpbb_dispatcher) + { + $vars = array('context', 'name', 'output'); + extract($this->phpbb_dispatcher->trigger_event('core.twig_environment_render_template_after', compact($vars))); + } + return $this->inject_assets($output, $placeholder_salt); } |