public function getInformation(PostFilterInformationEvent $event, $name, EventDispatcher $eventDispatcher)
 {
     if ($event->getFilter() != 'categories') {
         return;
     }
     $information = array();
     /** @var Collection $categoriesModel */
     $categoriesModel = MaeEventCatModel::findAll();
     foreach ($event->getEvents() as $eventItem) {
         if (empty($eventItem['categories'])) {
             continue;
         }
         $chunks = deserialize($eventItem['categories']);
         foreach ($chunks as $chunk) {
             if (array_key_exists($chunk, $information)) {
                 continue;
             }
             if ($categoriesModel) {
                 while ($categoriesModel->next()) {
                     if ($categoriesModel->id != $chunk) {
                         continue;
                     }
                     $information[$chunk] = $categoriesModel->title;
                 }
                 $categoriesModel->reset();
             }
         }
     }
     $event->setInformation($information);
 }
 public function getInformation(PostFilterInformationEvent $event, $name, EventDispatcher $eventDispatcher)
 {
     if ($event->getFilter() != 'tag') {
         return;
     }
     $information = array();
     foreach ($event->getEvents() as $eventItem) {
         if (empty($eventItem['tag'])) {
             continue;
         }
         $chunks = explode(',', $eventItem['tag']);
         foreach ($chunks as $chunk) {
             if (array_key_exists($chunk, $information)) {
                 continue;
             }
             $information[$chunk] = $chunk;
         }
     }
     $event->setInformation($information);
 }
 protected function getFilterFieldInformation($field, $data)
 {
     if (empty($field) && !is_array($data)) {
         return null;
     }
     global $container, $TL_DCA;
     $information = array();
     if (empty($information) && array_key_exists($field, $TL_DCA['tl_calendar_events']['fields']) && array_key_exists('foreignKey', $TL_DCA['tl_calendar_events']['fields'][$field])) {
         $cache = array();
         $foreignKey = explode('.', $TL_DCA['tl_calendar_events']['fields'][$field]['foreignKey']);
         /** @var \Model $model */
         $model = \Model::getClassFromTable($foreignKey[0]);
         foreach ($data as $value) {
             if (!$value[$field]) {
                 continue;
             }
             if (!array_key_exists($value[$field], $cache)) {
                 $cache[$value[$field]] = $model::findByPk($value[$field]);
             }
             if (array_key_exists($value[$field], $cache)) {
                 $cache[$value[$field]] = $model::findByPk($value[$field]);
                 $information[$value[$field]] = $cache[$value[$field]];
             }
         }
     }
     if (empty($information) && array_key_exists('eval', $TL_DCA['tl_calendar_events']['fields']['startDate']) && array_key_exists('rgxp', $TL_DCA['tl_calendar_events']['fields']['startDate']['eval']) && $TL_DCA['tl_calendar_events']['fields']['startDate']['eval']['rgxp'] === 'date') {
         foreach ($data as $value) {
             if ($value[$field] && \Validator::isNumeric($value[$field])) {
                 if (array_key_exists('start', $value) && $value['start'] && $value['start'] < time()) {
                     continue;
                 }
                 if (array_key_exists('stop', $value) && $value['stop'] && $value['stop'] > time()) {
                     continue;
                 }
                 $month = \Date::parse('m::3', $value[$field]);
                 $year = \Date::parse('Y', $value[$field]);
                 $stringDate = $month . ' - ' . $year;
                 if (!in_array($stringDate, $information)) {
                     $dateTime = new \DateTime();
                     $dateTime->setTimestamp($value[$field]);
                     $dateTime->modify('first day of this month');
                     $beginMonth = $dateTime->getTimestamp();
                     $dateTime->modify('last day of this month');
                     $endMonth = $dateTime->getTimestamp();
                     $information[$beginMonth . '-' . $endMonth] = $stringDate;
                 }
             }
         }
     }
     /** @var EventDispatcher $eventDispatcher */
     $eventDispatcher = $container['event-dispatcher'];
     $informationEvent = new PostFilterInformationEvent($field, $data);
     $informationEvent->setInformation($information);
     $eventDispatcher->dispatch(PostFilterInformationEvent::NAME, $informationEvent);
     return $informationEvent->getInformation();
 }