vendor/simpledot/cms-bundle/AWCmsBundle/EventListener/ModuleEventListener.php line 55

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: albert
  5.  * Date: 1/10/18
  6.  * Time: 18:35
  7.  */
  8. namespace AWCmsBundle\EventListener;
  9. use AWCmsBundle\Event\ModuleEvent;;
  10. use AWCmsBundle\Modules\Module;
  11. use AWCmsBundle\Modules\ModuleAdderInterface;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. class ModuleEventListener implements EventSubscriberInterface
  14. {
  15.     /** @var ModuleAdderInterface[] */
  16.     private $moduleAdders = [];
  17.     /** @var Module[] */
  18.     private $modules = [];
  19.     public function __construct($moduleAdders = [])
  20.     {
  21.         $this->moduleAdders $moduleAdders;
  22.     }
  23.     /**
  24.      * Returns the events to which this class has subscribed.
  25.      *
  26.      * Return format:
  27.      *     array(
  28.      *         array('event' => 'the-event-name', 'method' => 'onEventName', 'class' => 'some-class', 'format' => 'json'),
  29.      *         array(...),
  30.      *     )
  31.      *
  32.      * The class may be omitted if the class wants to subscribe to events of all classes.
  33.      * Same goes for the format key.
  34.      *
  35.      * @return array
  36.      */
  37.     public static function getSubscribedEvents()
  38.     {
  39.         return [
  40.             ModuleEvent::TO_POPULATE_EVENT => 'onModuleToPopulate'
  41.         ];
  42.     }
  43.     /**
  44.      * @param ModuleEvent $event
  45.      * @return array||Module[]
  46.      */
  47.     public function onModuleToPopulate(ModuleEvent $event)
  48.     {
  49.         if(!$this->modules) {
  50.             $modules $event->getModules();
  51.             foreach ($this->moduleAdders as $moduleAdder) {
  52.                 $modules $moduleAdder->addModules($modules);
  53.             }
  54.             $this->modules $modules;
  55.         }
  56.         $event->setModules($this->modules);
  57.         return $this->modules;
  58.     }
  59.     public function addModuleAdder(ModuleAdderInterface $moduleAdder)
  60.     {
  61.         $this->moduleAdders[] = $moduleAdder;
  62.     }
  63. }