/** * Event which is fired to collect plugin parameters * to register additionally application components or configurations. * * @param $event * @param ArrayCollection $collection * @param null $eventArgs * * @throws Enlight_Event_Exception * @return ArrayCollection|null */ public function collect($event, ArrayCollection $collection, $eventArgs = null) { if (!$this->hasListeners($event)) { return $collection; } if (isset($eventArgs) && is_array($eventArgs)) { $eventArgs = new Enlight_Event_EventArgs($eventArgs); } elseif (!isset($eventArgs)) { $eventArgs = new Enlight_Event_EventArgs(); } elseif (!$eventArgs instanceof Enlight_Event_EventArgs) { throw new Enlight_Event_Exception('Parameter "eventArgs" must be an instance of "Enlight_Event_EventArgs"'); } $eventArgs->setName($event); $eventArgs->setProcessed(false); foreach ($this->getListeners($event) as $listener) { $listenerCollection = $listener->execute($eventArgs); if ($listenerCollection instanceof ArrayCollection) { foreach ($listenerCollection->getValues() as $value) { $collection->add($value); } } elseif ($listenerCollection !== null) { $collection->add($listenerCollection); } } $eventArgs->setProcessed(true); return $collection; }
/** * Checks if the event has registered listeners. * If the event has listeners this listeners will be executed with the given event arguments. * The event arguments have to been an array or an instance of the Enlight_Event_EventArgs class. * If the given arguments not an array or an instance of the Enlight_Event_EventArgs class enlight * throw an Enlight_Event_Exception. * Before the listener will be executed the the flag "processed" will be set to false in the event arguments. * After all event listeners has been executed the "processed" flag will be set to true. * * The return value of the execute method will be set in the event arguments return value. * * @throws Enlight_Event_Exception * @param string $event * @param mixed $value * @param Enlight_Event_EventArgs|array|null $eventArgs * @return mixed */ public function filter($event, $value, $eventArgs = null) { if (!$this->hasListeners($event)) { return $value; } if (isset($eventArgs) && is_array($eventArgs)) { $eventArgs = new Enlight_Event_EventArgs($eventArgs); } elseif (!isset($eventArgs)) { $eventArgs = new Enlight_Event_EventArgs(); } elseif (!$eventArgs instanceof Enlight_Event_EventArgs) { throw new Enlight_Event_Exception('Parameter "eventArgs" must be an instance of "Enlight_Event_EventArgs"'); } $eventArgs->setReturn($value); $eventArgs->setName($event); $eventArgs->setProcessed(false); foreach ($this->getListeners($event) as $listener) { if (null !== ($return = $listener->execute($eventArgs))) { $eventArgs->setReturn($return); } } $eventArgs->setProcessed(true); return $eventArgs->getReturn(); }