aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Pudeyev <oleg@bsdpower.com>2011-11-27 00:46:36 -0500
committerOleg Pudeyev <oleg@bsdpower.com>2012-11-17 16:39:54 -0500
commitd6c881d0c67de80f0b60eab6be0c1dda33296657 (patch)
treea4eb34acd0fcd8be8bbc8d00d16dc6043ad59ff1
parented548ae8ff0e87035c0c173d40212a96fa642135 (diff)
downloadforums-d6c881d0c67de80f0b60eab6be0c1dda33296657.tar
forums-d6c881d0c67de80f0b60eab6be0c1dda33296657.tar.gz
forums-d6c881d0c67de80f0b60eab6be0c1dda33296657.tar.bz2
forums-d6c881d0c67de80f0b60eab6be0c1dda33296657.tar.xz
forums-d6c881d0c67de80f0b60eab6be0c1dda33296657.zip
[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
-rw-r--r--phpBB/config/services.yml1
-rw-r--r--phpBB/includes/bbcode.php2
-rw-r--r--phpBB/includes/functions_messenger.php2
-rw-r--r--phpBB/includes/template/compile.php8
-rw-r--r--phpBB/includes/template/filter.php8
-rw-r--r--phpBB/includes/template/template.php13
6 files changed, 27 insertions, 7 deletions
diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml
index 20aa0546d5..83a1c1fa69 100644
--- a/phpBB/config/services.yml
+++ b/phpBB/config/services.yml
@@ -128,6 +128,7 @@ services:
- @user
- @style.resource_locator
- @template_context
+ - @ext.manager
template_context:
class: phpbb_template_context
diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php
index b9ffa8091c..e8681420d4 100644
--- a/phpBB/includes/bbcode.php
+++ b/phpBB/includes/bbcode.php
@@ -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'));
diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php
index cf03de08c4..55884caedb 100644
--- a/phpBB/includes/functions_messenger.php
+++ b/phpBB/includes/functions_messenger.php
@@ -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;
diff --git a/phpBB/includes/template/compile.php b/phpBB/includes/template/compile.php
index 82b301c1a2..fb7d146701 100644
--- a/phpBB/includes/template/compile.php
+++ b/phpBB/includes/template/compile.php
@@ -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,
);
}
diff --git a/phpBB/includes/template/filter.php b/phpBB/includes/template/filter.php
index fc99ba5917..911f21ef00 100644
--- a/phpBB/includes/template/filter.php
+++ b/phpBB/includes/template/filter.php
@@ -88,6 +88,13 @@ class phpbb_template_filter extends php_user_filter
private $phpbb_root_path;
/**
+ * Extension manager.
+ *
+ * @var phpbb_extension_manager
+ */
+ private $extension_manager;
+
+ /**
* Stream filter
*
* Is invoked for evey chunk of the stream, allowing us
@@ -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;
}
diff --git a/phpBB/includes/template/template.php b/phpBB/includes/template/template.php
index 5396ddbfad..96a16fee77 100644
--- a/phpBB/includes/template/template.php
+++ b/phpBB/includes/template/template.php
@@ -75,14 +75,22 @@ class phpbb_template
private $locator;
/**
+ * Extension manager.
+ *
+ * @var phpbb_extension_manager
+ */
+ private $extension_manager;
+
+ /**
* Constructor.
*
* @param string $phpbb_root_path phpBB root path
* @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)
{