From c5c53c473121e3902d0b79bbcf1a2c94e7ff8029 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Tue, 27 Aug 2024 11:45:12 +0000 Subject: [PATCH] ensure a valid semester is always selected, fixes #4527 Closes #4527 Merge request studip/studip!3327 --- app/controllers/calendar/schedule.php | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/controllers/calendar/schedule.php b/app/controllers/calendar/schedule.php index 5d9a26ef6e9..cf70dd3184c 100644 --- a/app/controllers/calendar/schedule.php +++ b/app/controllers/calendar/schedule.php @@ -83,17 +83,20 @@ class Calendar_ScheduleController extends AuthenticatedController // check, if the hidden seminar-entries shall be shown $show_hidden = Request::int('show_hidden', 0); + // load semester-data and current semester $this->semesters = array_reverse(Semester::findAllVisible(false)); - if (Request::option('semester_id')) { - $this->current_semester = Semester::find(Request::option('semester_id')); - $schedule_settings['semester_id'] = Request::option('semester_id'); - UserConfig::get($GLOBALS['user']->id)->store('SCHEDULE_SETTINGS', - $schedule_settings); - } else { - $this->current_semester = !empty($schedule_settings['semester_id']) ? - Semester::find($schedule_settings['semester_id']) : - Semester::findCurrent(); + $this->current_semester = Semester::findCurrent(); + + $semester_id = Request::option('semester_id', $schedule_settings['semester_id'] ?? null); + if ($semester_id && Semester::exists($semester_id)) { + $this->current_semester = Semester::find($semester_id); + + $schedule_settings['semester_id'] = $this->current_semester->id; + User::findCurrent()->getConfiguration()->store( + 'SCHEDULE_SETTINGS', + $schedule_settings + ); } // check type-safe if days is false otherwise sunday (0) cannot be chosen -- GitLab