aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
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 /phpBB/includes
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
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/event/extension_subscriber_loader.php43
1 files changed, 43 insertions, 0 deletions
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);
+ }
+ }
+}