/**
  * Modify the given times via the configuration
  *
  * @param array         $times
  * @param Configuration $configuration
  *
  * @return void
  */
 public function handleConfiguration(array &$times, Configuration $configuration)
 {
     $url = $configuration->getExternalIcsUrl();
     if (!GeneralUtility::isValidUrl($url)) {
         HelperUtility::createFlashMessage('Configuration with invalid ICS URL: ' . $url, 'Index ICS URL', FlashMessage::ERROR);
         return;
     }
     $events = $this->icsReaderService->toArray($url);
     foreach ($events as $event) {
         /** @var $event ICalEvent */
         $startTime = DateTimeUtility::getDaySecondsOfDateTime($event->getStart());
         $endTime = DateTimeUtility::getDaySecondsOfDateTime($event->getEnd());
         if ($endTime === self::DAY_END) {
             $endTime = 0;
         }
         $entry = ['pid' => 0, 'start_date' => $event->getStart(), 'end_date' => $event->getEnd() ?: $event->getStart(), 'start_time' => $startTime, 'end_time' => $endTime, 'all_day' => $endTime === 0];
         $times[] = $entry;
     }
 }
 /**
  * Build the timetable for the given configuration matrix (sorted)
  *
  * @param array $ids
  *
  * @return array
  */
 public function getTimeTablesByConfigurationIds(array $ids)
 {
     $timeTable = [];
     if (!$ids) {
         return $timeTable;
     }
     /** @var \HDNET\Calendarize\Domain\Repository\ConfigurationRepository $configRepository */
     $configRepository = HelperUtility::create('HDNET\\Calendarize\\Domain\\Repository\\ConfigurationRepository');
     foreach ($ids as $configurationUid) {
         $configuration = $configRepository->findByUid($configurationUid);
         if (!$configuration instanceof Configuration) {
             continue;
         }
         $handler = $this->buildConfigurationHandler($configuration);
         if (!$handler) {
             HelperUtility::createFlashMessage('There is no TimeTable handler for the given configuration type: ' . $configuration->getType(), 'Index invalid', FlashMessage::ERROR);
             continue;
         }
         $handler->handleConfiguration($timeTable, $configuration);
     }
     return $timeTable;
 }