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(); }