diff options
| author | André Noack <noack@data-quest.de> | 2024-02-12 15:34:02 +0000 |
|---|---|---|
| committer | André Noack <noack@data-quest.de> | 2024-02-12 15:34:02 +0000 |
| commit | a02daa90ef7411285810fc241c68a3f1e7d15d0b (patch) | |
| tree | 9e074332feb1b7b823eda90f5a4707954e655cb7 | |
| parent | e36aea0881f808a9b4572034761135b3bdcb4d0e (diff) | |
Resolve #1043 "Belegungsplan: Bearbeiten von Wiederholungsterminen versucht, ausfallende Termine zu buchen"
Closes #1043
Merge request studip/studip!2602
| -rw-r--r-- | lib/models/resources/ResourceBooking.class.php | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/models/resources/ResourceBooking.class.php b/lib/models/resources/ResourceBooking.class.php index e496867..84fc9c7 100644 --- a/lib/models/resources/ResourceBooking.class.php +++ b/lib/models/resources/ResourceBooking.class.php @@ -511,7 +511,24 @@ class ResourceBooking extends SimpleORMap implements PrivacyObject, Studip\Calen $time_intervals = $this->calculateTimeIntervals(true); $time_interval_overlaps = []; + $existing_deleted_intervals = []; + if (!$this->isNew()) { + $existing_deleted_intervals = array_filter( + $this->getTimeIntervals(), + function ($i): bool { + return !$i->takes_place; + } + ); + } foreach ($time_intervals as $time_interval) { + foreach ($existing_deleted_intervals as $deleted_interval) { + if ( + $time_interval['begin']->getTimestamp() == $deleted_interval['begin'] + && $time_interval['end']->getTimestamp() == $deleted_interval['end'] + ) { + continue 2; + } + } $is_locked = $derived_resource->isLocked( $time_interval['begin'], $time_interval['end'], |
