aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Wiedler <igor@wiedler.ch>2012-01-07 20:53:04 +0100
committerIgor Wiedler <igor@wiedler.ch>2012-01-07 20:53:44 +0100
commit581b5624f7be3675a35fc61ca6b67b409ae6e8c6 (patch)
tree347a8ec3e1b66a6f938d6a6889f55ad4b1c80ce8
parent80840a5f08c530d91f147c1bded1c316c2a73d0f (diff)
downloadforums-581b5624f7be3675a35fc61ca6b67b409ae6e8c6.tar
forums-581b5624f7be3675a35fc61ca6b67b409ae6e8c6.tar.gz
forums-581b5624f7be3675a35fc61ca6b67b409ae6e8c6.tar.bz2
forums-581b5624f7be3675a35fc61ca6b67b409ae6e8c6.tar.xz
forums-581b5624f7be3675a35fc61ca6b67b409ae6e8c6.zip
[feature/event-dispatcher] Allow subscribers to be loaded from extensions
PHPBB3-9550
-rw-r--r--phpBB/common.php4
-rw-r--r--phpBB/includes/event/extension_subscriber_loader.php43
2 files changed, 47 insertions, 0 deletions
diff --git a/phpBB/common.php b/phpBB/common.php
index b308037a0e..44a0e7cec3 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -98,6 +98,7 @@ $phpbb_class_loader_ext->set_cache($cache->get_driver());
$phpbb_class_loader->set_cache($cache->get_driver());
// Instantiate some basic classes
+$phpbb_dispatcher = new phpbb_event_dispatcher();
$request = new phpbb_request();
$user = new user();
$auth = new auth();
@@ -124,6 +125,9 @@ $phpbb_template_locator = new phpbb_template_locator();
$phpbb_template_path_provider = new phpbb_template_extension_path_provider($phpbb_extension_manager, new phpbb_template_path_provider());
$template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user, $phpbb_template_locator, $phpbb_template_path_provider);
+$phpbb_subscriber_loader = new phpbb_event_extension_subscriber_loader($phpbb_dispatcher, $phpbb_extension_manager);
+$phpbb_subscriber_loader->load();
+
// Add own hook handler
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));
diff --git a/phpBB/includes/event/extension_subscriber_loader.php b/phpBB/includes/event/extension_subscriber_loader.php
new file mode 100644
index 0000000000..2a53af1249
--- /dev/null
+++ b/phpBB/includes/event/extension_subscriber_loader.php
@@ -0,0 +1,43 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2011 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+class phpbb_event_extension_subscriber_loader
+{
+ private $dispatcher;
+ private $extension_manager;
+
+ public function __construct(phpbb_event_dispatcher $dispatcher, phpbb_extension_manager $extension_manager)
+ {
+ $this->dispatcher = $dispatcher;
+ $this->extension_manager = $extension_manager;
+ }
+
+ public function load()
+ {
+ $finder = $this->extension_manager->get_finder();
+ $subscriber_classes = $finder
+ ->extension_directory('/event')
+ ->suffix('subscriber')
+ ->core_path('event/')
+ ->get_classes();
+
+ foreach ($subscriber_classes as $class) {
+ $subscriber = new $class();
+ $this->dispatcher->add_subscriber($subscriber);
+ }
+ }
+}