diff --git a/classes/LernraumObject.trait.php b/classes/LernraumObject.trait.php index 74fa10b2882395c4e43065166295e23c8da6ae86..79d5efd13998c6662bf7b8acf25fb254ef03f80f 100644 --- a/classes/LernraumObject.trait.php +++ b/classes/LernraumObject.trait.php @@ -218,7 +218,9 @@ trait LernraumObject ); $included_resource_booking_ids = []; foreach ($study_room_bookings as $booking) { - $included_resource_booking_ids[] = $booking->resource_booking_id; + if ($booking->resource_booking_id) { + $included_resource_booking_ids[] = $booking->resource_booking_id; + } $occupied_ranges[] = [ 'begin' => $booking->begin, 'end' => $booking->end @@ -232,7 +234,7 @@ trait LernraumObject 'eventStartEditable' => false, 'eventDurationEditable' => false, 'title' => '', - 'color' => '#d60001', + 'color' => '#d60000', 'textColor' => '#ffffff', 'rendering' => 'background', 'editable' => false @@ -262,27 +264,31 @@ trait LernraumObject $intervals[] = $booking_interval; } - $bookings = ResourceBooking::findByResourceAndTimeRanges( - $this, + $resource_booking_intervals = ResourceBookingInterval::findBySql( + '`resource_id` = :room_id + AND ( + `begin` BETWEEN :begin AND :end + OR + `end` BETWEEN :begin AND :end + ) + AND `booking_id` NOT IN ( :booking_ids )', [ - [ - 'begin' => $begin, - 'end' => $end - ] - ], - [], - $included_resource_booking_ids + 'room_id' => $this->id, + 'begin' => $begin->getTimestamp(), + 'end' => $end->getTimestamp(), + 'booking_ids' => $included_resource_booking_ids ?: [''] + ] ); - foreach ($bookings as $booking) { + foreach ($resource_booking_intervals as $interval) { $occupied_ranges[] = [ - 'begin' => $booking->begin, - 'end' => $booking->end + 'begin' => $interval->begin, + 'end' => $interval->end ]; - $booking_interval = [ - 'resourceId' => $booking->resource_id, - 'booking_id' => $booking->id, - 'start' => date('Y-m-d\TH:i:s', $booking->begin), - 'end' => date('Y-m-d\TH:i:s', $booking->end), + $interval_data = [ + 'resourceId' => $interval->resource_id, + 'booking_id' => '', + 'start' => date('Y-m-d\TH:i:s', $interval->begin), + 'end' => date('Y-m-d\TH:i:s', $interval->end), 'eventStartEditable' => false, 'eventDurationEditable' => false, 'title' => '', @@ -291,7 +297,7 @@ trait LernraumObject 'rendering' => 'background', 'editable' => false ]; - $intervals[] = $booking_interval; + $intervals[] = $interval_data; } uasort( diff --git a/plugin.manifest b/plugin.manifest index de6ad678a0c7e847e9cc76ca2a9129bf248d9f67..4bb443bf54b80ba467cbeb1ad0410acac421e8fe 100755 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,7 +1,7 @@ pluginclassname=LernraumPlugin pluginname=LernraumPlugin origin=data-quest -version=5.10.6 +version=5.10.7 description=Verwaltung von Lernräumen studipMinVersion=4.5 studipMaxVersion=4.9.99