diff options
author | Igor Wiedler <igor@wiedler.ch> | 2012-01-07 20:53:04 +0100 |
---|---|---|
committer | Igor Wiedler <igor@wiedler.ch> | 2012-01-07 20:53:44 +0100 |
commit | 581b5624f7be3675a35fc61ca6b67b409ae6e8c6 (patch) | |
tree | 347a8ec3e1b66a6f938d6a6889f55ad4b1c80ce8 /phpBB/includes | |
parent | 80840a5f08c530d91f147c1bded1c316c2a73d0f (diff) | |
download | forums-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.php | 43 |
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); + } + } +} |