/**
  * action list
  *
  * @param array $overwriteDemand
  * @return void
  */
 public function listAction($overwriteDemand = NULL)
 {
     $demand = $this->createDemandFromSettings($overwriteDemand);
     $courses = $this->courseRepository->findDemanded($demand);
     if ($courses instanceof QueryResult and !$courses->count() or !count($courses)) {
         $this->addFlashMessage($this->translate('message.noCoursesFound.text'), $this->translate('message.noCoursesFound.title'), FlashMessage::WARNING);
     }
     $configuration = $this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
     $this->view->assignMultiple(['courses' => $courses, 'demand' => $demand, 'settings' => $this->settings, 'storagePid' => $configuration['persistence']['storagePid']]);
 }
 /**
  * action list
  *
  * @param array $overwriteDemand
  * @return void
  */
 public function listAction($overwriteDemand = NULL)
 {
     $demand = $this->createDemandFromSettings($this->settings);
     if ($overwriteDemand === NULL) {
         $overwriteDemand = $this->moduleData->getOverwriteDemand();
     } else {
         $this->moduleData->setOverwriteDemand($overwriteDemand);
     }
     $this->overwriteDemandObject($demand, $overwriteDemand);
     $this->moduleData->setDemand($demand);
     $courses = $this->courseRepository->findDemanded($demand);
     if ($courses instanceof QueryResultInterface and !$courses->count() or !count($courses)) {
         $this->addFlashMessage($this->translate('message.noCoursesFound.text'), $this->translate('message.noCoursesFound.title'), FlashMessage::WARNING);
     }
     $configuration = $this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
     $templateVariables = ['courses' => $courses, 'demand' => $demand, 'overwriteDemand' => $overwriteDemand, 'filterOptions' => $this->getFilterOptions($this->settings['filter']), 'storagePid' => $configuration['persistence']['storagePid'], 'settings' => $this->settings];
     $this->emitSignal(__CLASS__, self::COURSE_LIST_ACTION, $templateVariables);
     $this->view->assignMultiple($templateVariables);
 }
 /**
  * Filter action
  *
  * @param array $overwriteDemand
  */
 public function filterAction($overwriteDemand = NULL)
 {
     $genreUids = GeneralUtility::intExplode(',', $this->settings['genres'], TRUE);
     $eventLocationUids = GeneralUtility::intExplode(',', $this->settings['eventLocations'], TRUE);
     $eventTypeUids = GeneralUtility::intExplode(',', $this->settings['eventTypes'], TRUE);
     $audienceUids = GeneralUtility::intExplode(',', $this->settings['audiences'], TRUE);
     if (count($genreUids)) {
         $genres = [];
         foreach ($genreUids as $genreUid) {
             if ($this->courseRepository->countContainingGenre($genreUid)) {
                 $genres[] = $this->genreRepository->findByUid($genreUid);
             }
         }
     } else {
         $genres = $this->genreRepository->findAll();
     }
     if (count($eventLocationUids)) {
         $eventLocations = [];
         foreach ($eventLocationUids as $eventLocationUid) {
             if ($this->lessonRepository->countByEventLocation($eventLocationUid)) {
                 $eventLocations[] = $this->eventLocationRepository->findByUid($eventLocationUid);
             }
         }
     } else {
         $eventLocations = $this->eventLocationRepository->findAll();
     }
     if (count($eventTypeUids)) {
         $eventTypes = [];
         foreach ($eventTypeUids as $eventTypeUid) {
             if ($this->courseRepository->countByEventType($eventTypeUid)) {
                 $eventTypes[] = $this->eventTypeRepository->findByUid($eventTypeUid);
             }
         }
     } else {
         $eventTypes = $this->eventTypeRepository->findAll();
     }
     if (count($audienceUids)) {
         $audiences = [];
         foreach ($audienceUids as $audienceUid) {
             if ($this->courseRepository->countContainingAudience($audienceUid)) {
                 $audiences[] = $this->audienceRepository->findByUid($audienceUid);
             }
         }
     } else {
         $audiences = $this->audienceRepository->findAll();
     }
     $this->view->assignMultiple(['overwriteDemand' => $overwriteDemand, 'genres' => $genres, 'eventLocations' => $eventLocations, 'audiences' => $audiences, 'eventTypes' => $eventTypes]);
 }