mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-25 03:18:52 +00:00
[feature/template-events] Inject extension manager into template class.
Template class passes extension manager to template compiler. Template compiler passes extension manager to template filter. Template filter will use extension manager to locate hooks as it is compiling templates. All extension manager arguments are optional. If an extension manager is not given, template hooks will not be invoked. PHPBB3-9550
This commit is contained in:
parent
ed548ae8ff
commit
d6c881d0c6
6 changed files with 27 additions and 7 deletions
|
@ -128,6 +128,7 @@ services:
|
|||
- @user
|
||||
- @style.resource_locator
|
||||
- @template_context
|
||||
- @ext.manager
|
||||
|
||||
template_context:
|
||||
class: phpbb_template_context
|
||||
|
|
|
@ -134,7 +134,7 @@ class bbcode
|
|||
|
||||
$style_resource_locator = new phpbb_style_resource_locator();
|
||||
$style_path_provider = new phpbb_style_extension_path_provider($phpbb_extension_manager, new phpbb_style_path_provider());
|
||||
$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, new phpbb_template_context());
|
||||
$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, new phpbb_template_context(), $phpbb_extension_manager);
|
||||
$style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, $style_path_provider, $template);
|
||||
$style->set_style();
|
||||
$template->set_filenames(array('bbcode.html' => 'bbcode.html'));
|
||||
|
|
|
@ -210,7 +210,7 @@ class messenger
|
|||
{
|
||||
$style_resource_locator = new phpbb_style_resource_locator();
|
||||
$style_path_provider = new phpbb_style_extension_path_provider($phpbb_extension_manager, new phpbb_style_path_provider());
|
||||
$tpl = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, new phpbb_template_context());
|
||||
$tpl = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, new phpbb_template_context(), $extension_manager);
|
||||
$style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $style_resource_locator, $style_path_provider, $tpl);
|
||||
|
||||
$this->tpl_msg[$template_lang . $template_file] = $tpl;
|
||||
|
|
|
@ -35,16 +35,18 @@ class phpbb_template_compile
|
|||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param bool @allow_php Whether PHP code will be allowed in templates (inline PHP code, PHP tag and INCLUDEPHP tag)
|
||||
* @param bool $allow_php Whether PHP code will be allowed in templates (inline PHP code, PHP tag and INCLUDEPHP tag)
|
||||
* @param phpbb_style_resource_locator $locator Resource locator
|
||||
* @param string $phpbb_root_path Path to phpBB root directory
|
||||
* @param phpbb_extension_manager $extension_manager Extension manager to use for finding template fragments in extensions; if null, template hooks will not be invoked
|
||||
*/
|
||||
public function __construct($allow_php, $locator, $phpbb_root_path)
|
||||
public function __construct($allow_php, $locator, $phpbb_root_path, $extension_manager = null)
|
||||
{
|
||||
$this->filter_params = array(
|
||||
'allow_php' => $allow_php,
|
||||
'locator' => $locator,
|
||||
'phpbb_root_path' => $phpbb_root_path
|
||||
'phpbb_root_path' => $phpbb_root_path,
|
||||
'extension_manager' => $extension_manager,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -87,6 +87,13 @@ class phpbb_template_filter extends php_user_filter
|
|||
*/
|
||||
private $phpbb_root_path;
|
||||
|
||||
/**
|
||||
* Extension manager.
|
||||
*
|
||||
* @var phpbb_extension_manager
|
||||
*/
|
||||
private $extension_manager;
|
||||
|
||||
/**
|
||||
* Stream filter
|
||||
*
|
||||
|
@ -148,6 +155,7 @@ class phpbb_template_filter extends php_user_filter
|
|||
$this->allow_php = $this->params['allow_php'];
|
||||
$this->locator = $this->params['locator'];
|
||||
$this->phpbb_root_path = $this->params['phpbb_root_path'];
|
||||
$this->extension_manager = $this->params['extension_manager'];
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,13 @@ class phpbb_template
|
|||
*/
|
||||
private $locator;
|
||||
|
||||
/**
|
||||
* Extension manager.
|
||||
*
|
||||
* @var phpbb_extension_manager
|
||||
*/
|
||||
private $extension_manager;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
|
@ -81,8 +88,9 @@ class phpbb_template
|
|||
* @param user $user current user
|
||||
* @param phpbb_template_locator $locator template locator
|
||||
* @param phpbb_template_context $context template context
|
||||
* @param phpbb_extension_manager $extension_manager extension manager, if null then template hooks will not be invoked
|
||||
*/
|
||||
public function __construct($phpbb_root_path, $php_ext, $config, $user, phpbb_template_locator $locator, phpbb_template_context $context)
|
||||
public function __construct($phpbb_root_path, $php_ext, $config, $user, phpbb_template_locator $locator, phpbb_template_context $context, phpbb_extension_manager $extension_manager = null)
|
||||
{
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
|
@ -90,6 +98,7 @@ class phpbb_template
|
|||
$this->user = $user;
|
||||
$this->locator = $locator;
|
||||
$this->context = $context;
|
||||
$this->extension_manager = $extension_manager;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -282,7 +291,7 @@ class phpbb_template
|
|||
return new phpbb_template_renderer_include($output_file, $this);
|
||||
}
|
||||
|
||||
$compile = new phpbb_template_compile($this->config['tpl_allow_php'], $this->locator, $this->phpbb_root_path);
|
||||
$compile = new phpbb_template_compile($this->config['tpl_allow_php'], $this->locator, $this->phpbb_root_path, $this->extension_manager);
|
||||
|
||||
if ($compile->compile_file_to_file($source_file, $output_file) !== false)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue