From c2a4da64dcbb8db4df4419ac7a3f683dd1cdcbe9 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+github@gmail.com> Date: Fri, 25 Oct 2024 09:37:51 +0200 Subject: [PATCH] fix Course::getDatesWithExDates() in the wake of the changes in #4758, re #4758 --- lib/classes/SimpleORMapCollection.php | 1 - lib/models/Course.php | 26 +++++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/classes/SimpleORMapCollection.php b/lib/classes/SimpleORMapCollection.php index 20162e5613d..f437084191a 100644 --- a/lib/classes/SimpleORMapCollection.php +++ b/lib/classes/SimpleORMapCollection.php @@ -234,7 +234,6 @@ class SimpleORMapCollection extends SimpleCollection */ public function merge(SimpleCollection $a_collection, string $mode = 'ignore') { - $mode = func_get_arg(1); foreach ($a_collection as $element) { try { /** diff --git a/lib/models/Course.php b/lib/models/Course.php index d7ffff7a956..17c06ca382e 100644 --- a/lib/models/Course.php +++ b/lib/models/Course.php @@ -1906,17 +1906,25 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe */ public function getDatesWithExdates($range_begin = 0, $range_end = 0) { - $dates = []; - if (($range_begin > 0) && ($range_end > 0) && ($range_end > $range_begin)) { - $ex_dates = $this->ex_dates->findBy('content', '', '<>') - ->findBy('date', $range_begin, '>=') - ->findBy('end_time', $range_end, '<='); - $dates = $this->dates->findBy('date', $range_begin, '>=') - ->findBy('end_time', $range_end, '<='); - $dates->merge($ex_dates); + $dates = SimpleCollection::createFromArray([]); + if ( + $range_begin > 0 + && $range_end > 0 + && $range_end > $range_begin + ) { + $dates->merge( + $this->dates->findBy('date', $range_begin, '>=') + ->findBy('end_time', $range_end, '<=') + ); + + $dates->merge( + $this->ex_dates->findBy('content', '', '<>') + ->findBy('date', $range_begin, '>=') + ->findBy('end_time', $range_end, '<=') + ); } else { - $dates = $this->ex_dates->findBy('content', '', '<>'); $dates->merge($this->dates); + $dates->merge($this->ex_dates->findBy('content', '', '<>')); } $dates->uasort(function($a, $b) { return $a->date - $b->date -- GitLab