/** * @param EventDate $date * @param RecurrenceCollection $recurrences */ protected function mergeUpdatesWithExistingRecurrences(EventDate $date, RecurrenceCollection $recurrences) { $oldDates = $this->eventDateRepository->findRecurrencesByUid($date->getUid())->toArray(); foreach ($recurrences as $recurrence) { $updated = false; $start = $recurrence->getStart(); $end = $recurrence->getEnd(); if ($start == $end) { $end = null; } foreach ($oldDates as $eKey => $old) { if ($old->getStart() == $start && $old->getEnd() == $end) { $old->setIsFullDay($date->getIsFullDay()); $this->eventDateRepository->update($old); unset($oldDates[$eKey]); $updated = true; break; } } if (!$updated) { $new = $this->cloneDateAsRecurrence($date, $start, $end); $this->eventDateRepository->add($new); } } foreach ($oldDates as $old) { $this->eventDateRepository->remove($old); } $this->persistenceManager->persistAll(); }
/** * teaser */ public function teaserAction() { $demands = array(); if (isset($this->settings['demands']) && is_array($this->settings['demands']) && count($this->settings['demands']) > 0) { $demands = $this->settings['demands']; } $dates = $this->eventDateRepository->findUpcoming($demands, 1); $date = null; if ($dates instanceof \TYPO3\CMS\Extbase\Persistence\QueryResultInterface) { $date = $dates->getFirst(); } elseif (is_array($dates)) { $date = isset($dates[0]) ? $dates[0] : null; } $variables = ['date' => $date, 'contentObject' => $this->configurationManager->getContentObject()->data, 'extended' => []]; $variables = $this->signalSlotDispatcher->dispatch(__CLASS__, 'teaserAction_variables', $variables); $this->view->assignMultiple($variables); $GLOBALS['TSFE']->addCacheTags(array('tx_qbevents_domain_model_event', 'tx_qbevents_domain_model_eventdate')); }