diff --git a/lib/models/calendar/CalendarDateAssignment.class.php b/lib/models/calendar/CalendarDateAssignment.class.php index da4761d426aef0f94b24d96f139658eaae249d32..8eb536f90f70cfb3ca390566d01e412ef253b4ce 100644 --- a/lib/models/calendar/CalendarDateAssignment.class.php +++ b/lib/models/calendar/CalendarDateAssignment.class.php @@ -217,6 +217,10 @@ class CalendarDateAssignment extends SimpleORMap implements Event bool $with_declined = false ) : array { + // 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` WHERE @@ -254,8 +258,8 @@ class CalendarDateAssignment extends SimpleORMap implements Event $e_expire = $event->getExpire(); $cal_start = DateTimeImmutable::createFromMutable($m_start); - $cal_end = DateTimeImmutable::createFromMutable($m_start); - $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) @@ -265,9 +269,8 @@ class CalendarDateAssignment extends SimpleORMap implements Event ) { // exception for first event or single event 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; + && !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, true));