config->getAppValue('dav', 'sendEventRemindersPush', 'yes') !== 'yes') { return; } $eventDetails = $this->extractEventDetails($vevent); $eventUUID = (string)$vevent->UID; if (!$eventUUID) { return; }; $eventUUIDHash = hash('sha256', $eventUUID, false); foreach ($users as $user) { $eventDetails['calendar_displayname'] = $calendarDisplayName ?? $this->getCalendarDisplayNameFallback($this->l10nFactory->getUserLanguage($user)); /** @var INotification $notification */ $notification = $this->manager->createNotification(); $notification->setApp(Application::APP_ID) ->setUser($user->getUID()) ->setDateTime($this->timeFactory->getDateTime()) ->setObject(Application::APP_ID, $eventUUIDHash) ->setSubject('calendar_reminder', [ 'title' => $eventDetails['title'], 'start_atom' => $eventDetails['start_atom'] ]) ->setMessage('calendar_reminder', $eventDetails); $this->manager->notify($notification); } } /** * @throws \Exception */ protected function extractEventDetails(VEvent $vevent):array { /** @var Property\ICalendar\DateTime $start */ $start = $vevent->DTSTART; $end = $this->getDTEndFromEvent($vevent); return [ 'title' => isset($vevent->SUMMARY) ? ((string)$vevent->SUMMARY) : null, 'description' => isset($vevent->DESCRIPTION) ? ((string)$vevent->DESCRIPTION) : null, 'location' => isset($vevent->LOCATION) ? ((string)$vevent->LOCATION) : null, 'all_day' => $start instanceof Property\ICalendar\Date, 'start_atom' => $start->getDateTime()->format(\DateTimeInterface::ATOM), 'start_is_floating' => $start->isFloating(), 'start_timezone' => $start->getDateTime()->getTimezone()->getName(), 'end_atom' => $end->getDateTime()->format(\DateTimeInterface::ATOM), 'end_is_floating' => $end->isFloating(), 'end_timezone' => $end->getDateTime()->getTimezone()->getName(), ]; } }