public function listeners($eventKey)
{
$localListeners = array();
$priorities = array();
if (!$this->_isGlobal) {
$localListeners = $this->prioritisedListeners($eventKey);
$localListeners = empty($localListeners) ? array() : $localListeners;
}
$globalListeners = self::instance()->prioritisedListeners($eventKey);
$globalListeners = empty($globalListeners) ? array() : $globalListeners;
$priorities = array_merge(array_keys($globalListeners), array_keys($localListeners));
$priorities = array_unique($priorities);
asort($priorities);
$result = array();
foreach ($priorities as $priority) {
if (isset($globalListeners[$priority])) {
$result = array_merge($result, $globalListeners[$priority]);
}
if (isset($localListeners[$priority])) {
$result = array_merge($result, $localListeners[$priority]);
}
}
return $result;
}
/** * Tests subscribing a listener object and firing the events it subscribed to * * @return void */ public function testDetachSubscriber() { $manager = new CakeEventManager(); $listener = $this->getMock('CustomTestEventListerner', array('secondListenerFunction')); $manager->attach($listener); $expected = array(array('callable' => array($listener, 'secondListenerFunction'), 'passParams' => true)); $this->assertEquals($expected, $manager->listeners('another.event')); $expected = array(array('callable' => array($listener, 'listenerFunction'), 'passParams' => false)); $this->assertEquals($expected, $manager->listeners('fake.event')); $manager->detach($listener); $this->assertEquals(array(), $manager->listeners('fake.event')); $this->assertEquals(array(), $manager->listeners('another.event')); }