/** * {@inheritDoc} */ public function trigger(EventInterface $event) { if ($event instanceof BaseCakeEvent) { $this->eventManager->dispatch($event); } return $this; }
/** * Create the template loader. * * @return \Twig_LoaderInterface */ protected function getLoader() { $event = new Event('TwigView.TwigView.loader', $this, ['loader' => new Loader()]); $this->eventManager->dispatch($event); if (isset($event->result['loader'])) { return $event->result['loader']; } return $event->data['loader']; }
/** * Similar to "trigger()" but this method expects that data is given as an * associative array instead of function arguments. * * ### Usage: * * ```php * EventDispatcher::instance()->triggerArray('myEvent', [$data1, $data2]); * ``` * * Which is equivalent to: * * ```php * EventDispatcher::instance()->trigger('myEvent', $data1, $data2); * ``` * * @param array|string $eventName The event name to trigger * @param array $data Information to be passed to event listener * @return \Cake\Event\Event The event object that was triggered */ public function triggerArray($eventName, array $data = []) { $event = $this->_prepareEvent($eventName, $data); $this->_log($event->name()); $this->_eventManager->dispatch($event); return $event; }
/** * Triggers a Crud event by creating a new subject and filling it with $data * if $data is an instance of CrudSubject it will be reused as the subject * object for this event. * * If Event listeners return a CakeResponse object, the this method will throw an * exception and fill a 'response' property on it with a reference to the response * object. * * @param string $eventName Event name * @param \Crud\Event\Subject $data Event data * @throws Exception if any event listener return a CakeResponse object. * @return \Cake\Event\Event */ public function trigger($eventName, Subject $data = null) { $eventName = $this->_config['eventPrefix'] . '.' . $eventName; $Subject = $data ?: $this->getSubject(); $Subject->addEvent($eventName); if (!empty($this->_config['eventLogging'])) { $this->logEvent($eventName, $data); } $Event = new Event($eventName, $Subject); $this->_eventManager->dispatch($Event); if ($Event->result instanceof Response) { $Exception = new Exception(); $Exception->response = $Event->result; throw $Exception; } return $Event; }
/** * Test that events are dispatched properly when there are global and local * listeners at the same priority. * * @return void */ public function testDispatchWithGlobalAndLocalEvents() { $listener = new CustomTestEventListener(); EventManager::instance()->attach($listener); $listener2 = new EventTestListener(); $manager = new EventManager(); $manager->attach(array($listener2, 'listenerFunction'), 'fake.event'); $manager->dispatch(new Event('fake.event', $this)); $this->assertEquals(array('listenerFunction'), $listener->callStack); $this->assertEquals(array('listenerFunction'), $listener2->callStack); }
/** * Create the template loader. * * @return \Twig_LoaderInterface */ protected function getLoader() { $event = LoaderEvent::create(new Loader()); $this->eventManager->dispatch($event); return $event->getResultLoader(); }
public function dispatch($event) { $this->_log[] = ['name' => $event->name(), 'subject' => $event->subject()]; parent::dispatch($event); }
/** * Test getting a list of dispatched events from the manager. * * @return void * @triggers my_event $this * @triggers my_second_event $this */ public function testGetDispatchedEvents() { $eventList = new EventList(); $event = new Event('my_event', $this); $event2 = new Event('my_second_event', $this); $manager = new EventManager(); $manager->setEventList($eventList); $manager->dispatch($event); $manager->dispatch($event2); $result = $manager->getEventList(); $this->assertInstanceOf('\\Cake\\Event\\EventList', $result); $this->assertCount(2, $result); $this->assertEquals($result[0], $event); $this->assertEquals($result[1], $event2); $manager->getEventList()->flush(); $result = $manager->getEventList(); $this->assertCount(0, $result); $manager->unsetEventList(); $manager->dispatch($event); $manager->dispatch($event2); $result = $manager->getEventList(); $this->assertNull($result); }
/** * tests assertEventFired * * @return void */ public function testEventFired() { $manager = EventManager::instance(); $manager->setEventList(new EventList()); $manager->trackEvents(true); $event = new Event('my.event'); $manager->dispatch($event); $this->assertEventFired('my.event'); $manager = new EventManager(); $manager->setEventList(new EventList()); $manager->trackEvents(true); $event = new Event('my.event'); $manager->dispatch($event); $this->assertEventFired('my.event', $manager); }