Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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();
 }