diff options
author | Nils Adermann <naderman@naderman.de> | 2013-11-13 08:45:48 -0800 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2013-11-13 08:45:48 -0800 |
commit | e48b2c07ebe95aaff93eed6c7df5dff5d6c50fe2 (patch) | |
tree | d96f99dacd067c1b65fef41c194c62ec9dde479a /phpBB | |
parent | 37f73f86e2c332fdaa89a6fe015e45f65c068a6f (diff) | |
parent | fbf5911ac54c83d439121e90032afca0ec2a7fc4 (diff) | |
download | forums-e48b2c07ebe95aaff93eed6c7df5dff5d6c50fe2.tar forums-e48b2c07ebe95aaff93eed6c7df5dff5d6c50fe2.tar.gz forums-e48b2c07ebe95aaff93eed6c7df5dff5d6c50fe2.tar.bz2 forums-e48b2c07ebe95aaff93eed6c7df5dff5d6c50fe2.tar.xz forums-e48b2c07ebe95aaff93eed6c7df5dff5d6c50fe2.zip |
Merge pull request #1871 from nickvergessen/ticket/12016
Ticket/12016 Event listeners should be services
Diffstat (limited to 'phpBB')
-rw-r--r-- | phpBB/config/services.yml | 9 | ||||
-rw-r--r-- | phpBB/phpbb/event/extension_subscriber_loader.php | 20 |
2 files changed, 16 insertions, 13 deletions
diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml index f61ed5f87f..4280f90375 100644 --- a/phpBB/config/services.yml +++ b/phpBB/config/services.yml @@ -141,10 +141,17 @@ services: class: phpbb\event\extension_subscriber_loader arguments: - @dispatcher - - @ext.manager + - @event.listener_collection calls: - [load, []] + event.listener_collection: + class: phpbb\di\service_collection + arguments: + - @service_container + tags: + - { name: service_collection, tag: event.listener } + ext.manager: class: phpbb\extension\manager arguments: diff --git a/phpBB/phpbb/event/extension_subscriber_loader.php b/phpBB/phpbb/event/extension_subscriber_loader.php index df8e093f4a..6408f93e2a 100644 --- a/phpBB/phpbb/event/extension_subscriber_loader.php +++ b/phpBB/phpbb/event/extension_subscriber_loader.php @@ -14,26 +14,22 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface; class extension_subscriber_loader { private $dispatcher; - private $extension_manager; + private $listener_collection; - public function __construct(EventDispatcherInterface $dispatcher, \phpbb\extension\manager $extension_manager) + public function __construct(EventDispatcherInterface $dispatcher, \phpbb\di\service_collection $listener_collection) { $this->dispatcher = $dispatcher; - $this->extension_manager = $extension_manager; + $this->listener_collection = $listener_collection; } public function load() { - $finder = $this->extension_manager->get_finder(); - $subscriber_classes = $finder - ->extension_directory('/event') - ->core_path('event/') - ->get_classes(); - - foreach ($subscriber_classes as $class) + if (!empty($this->listener_collection)) { - $subscriber = new $class(); - $this->dispatcher->addSubscriber($subscriber); + foreach ($this->listener_collection as $listener) + { + $this->dispatcher->addSubscriber($listener); + } } } } |