Skip to content
Snippets Groups Projects
Commit 921746e0 authored by Peter Thienel's avatar Peter Thienel Committed by Moritz Strohm
Browse files

Resolve "Mehrtägige Termine werden in der Wochenansicht des Kalenders mehrfach...

Resolve "Mehrtägige Termine werden in der Wochenansicht des Kalenders mehrfach an den Folgetagen ausgegeben"

Closes #3795

Merge request studip/studip!2666


(cherry picked from commit d0148002)

84aa135d removes duplicated events from calendar views, fixes #3795
99170807 removes duplicated events from calendar views, fixes #3795
449b3c65 Merge branch 'issue-3795' of https://gitlab.studip.de/studip/studip into issue-3795
d73537be pipline fixed, re #3795
parent 71c1e5cb
No related branches found
No related tags found
No related merge requests found
......@@ -217,8 +217,9 @@ class CalendarDateAssignment extends SimpleORMap implements Event
bool $with_declined = false
) : array
{
$begin->setTime(0, 0);
$end->setTime(23, 59, 59);
// one whole day as minimum (begin and end time stamp at the same day)
$begin->modify('midnight');
$end->modify('tomorrow -1 second');
$sql = "JOIN `calendar_dates`
ON calendar_date_id = `calendar_dates`.`id`
......@@ -256,12 +257,9 @@ class CalendarDateAssignment extends SimpleORMap implements Event
$e_end = clone $event->getEnd();
$e_expire = $event->getExpire();
// duration in full days
$duration = $event->getDurationDays();
$cal_start = DateTimeImmutable::createFromMutable($m_start);
$cal_end = DateTimeImmutable::createFromMutable($m_start)->setTime(23,59,59);
$cal_noon = $cal_start->setTime(12, 0);
$cal_end = DateTimeImmutable::createFromMutable($m_start)->modify('tomorrow -1 second');
$cal_noon = $cal_start->modify('noon');
// single events or first event
if (
($e_start >= $cal_start && $e_end <= $cal_end)
......@@ -270,11 +268,12 @@ class CalendarDateAssignment extends SimpleORMap implements Event
|| ($e_end > $cal_start && $e_start <= $cal_end)
) {
// exception for first event or single event
if (!$event->calendar_date->exceptions->findOneBy('date', $cal_start->format('Y-m-d'))) {
$events_created = array_merge($events_created, self::createRecurrentDate($event, $cal_noon));
if (!$event->calendar_date->exceptions->findOneBy('date', $cal_start->format('Y-m-d'))
&& !isset($events_created[$event->calendar_date->id])) {
$events_created[$event->calendar_date->id . '_' . $event->calendar_date->begin] = $event;
}
} elseif ($e_expire > $cal_start) {
$events_created = array_merge($events_created, self::getRepetition($event, $cal_noon));
$events_created = array_merge($events_created, self::getRepetition($event, $cal_noon, true));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment