Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit d61e132c authored by Richard Steinmetz's avatar Richard Steinmetz Committed by GitHub
Browse files

Merge pull request #5497 from nextcloud/backport/5486/stable4.5

[stable4.5] fix(dashboard): properly handle recurring events
parents 31e71b49 0bed42bb
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -155,10 +155,23 @@ class CalendarWidget implements IAPIWidget, IButtonWidget, IIconWidget, IOptionW
		foreach ($calendars as $calendar) {
			$searchResult = $calendar->search('', [], $options, $limit);
			foreach ($searchResult as $calendarEvent) {
				// Find first recurrence in the future
				$recurrence = null;
				foreach ($calendarEvent['objects'] as $object) {
					/** @var DateTimeImmutable $startDate */
				$startDate = $calendarEvent['objects'][0]['DTSTART'][0];
					$startDate = $object['DTSTART'][0];
					if ($startDate->getTimestamp() >= $dateTime->getTimestamp()) {
						$recurrence = $object;
						break;
					}
				}

				if ($recurrence === null) {
					continue;
				}

				$widget = new WidgetItem(
					$calendarEvent['objects'][0]['SUMMARY'][0] ?? 'New Event',
					$recurrence['SUMMARY'][0] ?? 'New Event',
					$this->dateTimeFormatter->formatTimeSpan(DateTime::createFromImmutable($startDate)),
					$this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkToRoute('calendar.view.index', ['objectId' => $calendarEvent['uid']])),
					$this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkToRoute('calendar.view.getCalendarDotSvg', ['color' => $calendar->getDisplayColor() ?? '#0082c9'])), // default NC blue fallback
@@ -167,6 +180,11 @@ class CalendarWidget implements IAPIWidget, IButtonWidget, IIconWidget, IOptionW
				$widgetItems[] = $widget;
			}
		}

		usort($widgetItems, static function (WidgetItem $a, WidgetItem $b) {
			return (int)$a->getSinceId() - (int)$b->getSinceId();
		});

		return $widgetItems;
	}

+2 −4
Original line number Diff line number Diff line
@@ -43,12 +43,10 @@ class CalendarWidgetV2 extends CalendarWidget implements IAPIWidgetV2 {
		$halfEmptyContentMessage = '';
		if (!empty($widgetItems)) {
			$startOfTomorrow = $this->timeFactory->getDateTime('tomorrow')->getTimestamp();
			foreach ($widgetItems as $item) {
				if ((int)$item->getSinceId() >= $startOfTomorrow) {
			if ($widgetItems[0]->getSinceId() >= $startOfTomorrow) {
				$halfEmptyContentMessage = $this->l10n->t('No more events today');
			}
		}
		}

		return new WidgetItems(
			$widgetItems,