Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / EventDispatcher / TestworkEventDispatcher.php
1 <?php
2
3 /*
4  * This file is part of the Behat.
5  * (c) Konstantin Kudryashov <ever.zet@gmail.com>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 namespace Behat\Testwork\EventDispatcher;
12
13 use Symfony\Component\EventDispatcher\Event;
14 use Symfony\Component\EventDispatcher\EventDispatcher;
15
16 /**
17  * Extends Symfony2 event dispatcher with catch-all listeners.
18  *
19  * @author Konstantin Kudryashov <ever.zet@gmail.com>
20  */
21 final class TestworkEventDispatcher extends EventDispatcher
22 {
23     const BEFORE_ALL_EVENTS = '*~';
24     const AFTER_ALL_EVENTS = '~*';
25
26     /**
27      * {@inheritdoc}
28      */
29     public function dispatch($eventName, Event $event = null)
30     {
31         if (null === $event) {
32             $event = new Event();
33         }
34
35         if (method_exists($event, 'setName')) {
36             $event->setName($eventName);
37         }
38
39         $this->doDispatch($this->getListeners($eventName), $eventName, $event);
40
41         return $event;
42     }
43
44     /**
45      * {@inheritdoc}
46      */
47     public function getListeners($eventName = null)
48     {
49         if (null == $eventName || self::BEFORE_ALL_EVENTS === $eventName) {
50             return parent::getListeners($eventName);
51         }
52
53         return array_merge(
54             parent::getListeners(self::BEFORE_ALL_EVENTS),
55             parent::getListeners($eventName),
56             parent::getListeners(self::AFTER_ALL_EVENTS)
57         );
58     }
59 }