/** * Call the extensions * * @param EventInterface $event The event * * @return EventInterface */ public function dispatch(EventInterface $event) { $this->logger->debug(__METHOD__ . ": Dispatching " . $event->getName()); $name = $event->getName(); if (!key_exists($name, $this->loadedEvents)) { $this->logger->debug(__METHOD__ . ": - Loading extension listeners"); $this->loadExtensionListeners($name, $this->factory->getExtensions()); $this->loadedEvents[$name] = $name; } $result = parent::dispatch($event); $this->logger->debug(__METHOD__ . ": Done."); return $result; }
/** * Add an event to this dispatcher, only if it is not existing. * * @param EventInterface $event The event. * * @return Dispatcher This method is chainable. * * @since 1.0 */ public function addEvent(EventInterface $event) { if (!isset($this->events[$event->getName()])) { $this->events[$event->getName()] = $event; } return $this; }
/** * Event listener for the onAfterDelete event. * * @param EventInterface $event The event we're handling * * @return void * * @since 4.0 */ public final function onAfterDeleteListener(EventInterface $event) { $k = $event->getArgument('k', false); $this->onBeforeDelete($k); }
/** * Dispatches an event to all registered listeners. * * @param EventInterface $event The event to pass to the event handlers/listeners. * * @return EventInterface * * @since __DEPLOY_VERSION__ */ public function dispatch(EventInterface $event) { $this->logger->debug(__METHOD__ . ": Dispatching " . $event->getName()); if (isset($this->listeners[$event->getName()])) { foreach ($this->listeners[$event->getName()] as $listener) { if ($event->isStopped()) { return $event; } call_user_func($listener, $event); } } $this->logger->debug(__METHOD__ . ": Done."); return $event; }