diff --git a/lib/models/calendar/CalendarDateAssignment.class.php b/lib/models/calendar/CalendarDateAssignment.class.php index 6caae9e9c85fcdc982ce5bb881b3d567e0b1af41..da4761d426aef0f94b24d96f139658eaae249d32 100644 --- a/lib/models/calendar/CalendarDateAssignment.class.php +++ b/lib/models/calendar/CalendarDateAssignment.class.php @@ -217,9 +217,6 @@ class CalendarDateAssignment extends SimpleORMap implements Event bool $with_declined = false ) : array { - $begin->setTime(0, 0); - $end->setTime(23, 59, 59); - $sql = "JOIN `calendar_dates` ON calendar_date_id = `calendar_dates`.`id` WHERE @@ -256,11 +253,8 @@ 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_end = DateTimeImmutable::createFromMutable($m_start); $cal_noon = $cal_start->setTime(12, 0); // single events or first event if ( @@ -270,11 +264,13 @@ 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]) + && !$event->calendar_date->repetition_type) { + $events_created[$event->calendar_date->id] = $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)); } }