From f70e52b5d4043141982d36c56032063d6141115c Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Fri, 27 Sep 2024 12:00:49 +0000
Subject: [PATCH] prevent warnings in times/rooms, fixes #4647

Closes #4647

Merge request studip/studip!3458
---
 app/controllers/course/timesrooms.php | 32 +++++++++++++--------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php
index 783f5d2be57..3d55469a8c3 100644
--- a/app/controllers/course/timesrooms.php
+++ b/app/controllers/course/timesrooms.php
@@ -59,14 +59,21 @@ class Course_TimesroomsController extends AuthenticatedController
 
         PageLayout::setTitle($title);
 
-        $dates_in_time_range = CourseDate::countBySql(
-            "`range_id` = :course_id AND `date` BETWEEN :beginning AND :end",
-            [
-                'course_id' => $this->course->id,
-                'beginning' => $this->course->start_semester->beginn,
-                'end'       => $this->course->end_semester->vorles_ende
-            ]
-        ) > 0;
+        $parameters = [
+            ':course_id' => $this->course->id,
+            ':beginning' => $this->course->start_semester->beginn,
+        ];
+        if ($this->course->isOpenEnded()) {
+            $condition_in = '`range_id` = :course_id AND `date` >= :beginning';
+            $condition_out = '`range_id` = :course_id AND `date` < :beginning';
+        } else {
+            $condition_in = '`range_id` = :course_id AND `date` BETWEEN :beginning AND :end';
+            $condition_out = '`range_id` = :course_id AND `date` NOT BETWEEN :beginning AND :end';
+            $parameters[':end'] = $this->course->end_semester->vorles_ende;
+        }
+
+        $dates_in_time_range = CourseDate::countBySql($condition_in, $parameters) > 0;
+        $dates_outside_of_time_range = CourseDate::countBySql($condition_out, $parameters) > 0;
 
         URLHelper::bindLinkParam('semester_filter', $this->semester_filter);
 
@@ -84,15 +91,6 @@ class Course_TimesroomsController extends AuthenticatedController
             $selectable_semesters = $this->course->semesters->toArray();
         }
 
-        $dates_outside_of_time_range = CourseDate::countBySql(
-            "`range_id` = :course_id AND `date` NOT BETWEEN :beginning AND :end",
-            [
-                'course_id' => $this->course->id,
-                'beginning' => $this->course->start_semester->beginn,
-                'end'       => $this->course->end_semester->vorles_ende
-            ]
-        ) > 0;
-
         if (count($selectable_semesters) > 1 || (count($selectable_semesters) == 1 && $dates_outside_of_time_range)) {
             $selectable_semesters[] = ['name' => _('Alle Semester'), 'semester_id' => 'all'];
         }
-- 
GitLab