From 4d98ebd6c7f57d8cc10599c74f2c8c061e907d09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de> Date: Mon, 6 May 2024 11:40:39 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20#3989=20"Filter=20"Vorletztes=20und?= =?UTF-8?q?=20aktuelles=20Semester"=20f=C3=BCr=20meine=20Veranstaltungen"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3989 Merge request studip/studip!2838 --- app/controllers/my_courses.php | 6 +++++- lib/classes/MyRealmModel.php | 22 ++++++++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/controllers/my_courses.php b/app/controllers/my_courses.php index 9e8e0b634b6..8205c12c743 100644 --- a/app/controllers/my_courses.php +++ b/app/controllers/my_courses.php @@ -344,7 +344,10 @@ class MyCoursesController extends AuthenticatedController $semesters = MyRealmModel::getSelectedSemesters($sem); $min_sem_key = min($semesters); $max_sem_key = max($semesters); - $courses = MyRealmModel::getCourses($min_sem_key, $max_sem_key, compact('deputies_enabled')); + $courses = MyRealmModel::getCourses($min_sem_key, $max_sem_key, [ + 'deputies_enabled' => $deputies_enabled, + 'exactly' => $semesters, + ]); foreach ($courses as $index => $course) { MyRealmModel::setObjectVisits($course, $GLOBALS['user']->id, $timestamp); } @@ -1168,6 +1171,7 @@ class MyCoursesController extends AuthenticatedController 'future' => _('Aktuelles und nächstes Semester'), 'last' => _('Aktuelles und letztes Semester'), 'lastandnext' => _('Letztes, aktuelles, nächstes Semester'), + 'lastbutone' => _('Aktuelles und vorletztes Semester'), ]; if (Config::get()->MY_COURSES_ENABLE_ALL_SEMESTERS) { diff --git a/lib/classes/MyRealmModel.php b/lib/classes/MyRealmModel.php index 0279fe54ab8..94bb30d8109 100644 --- a/lib/classes/MyRealmModel.php +++ b/lib/classes/MyRealmModel.php @@ -163,16 +163,22 @@ class MyRealmModel public static function getCourses($min_sem_key, $max_sem_key, $params = []) { // init - $order_by = $params['order_by'] ?? null; - $order = $params['order'] ?? null; - $deputies_enabled = $params['deputies_enabled']; + $order_by = $params['order_by'] ?? null; + $order = $params['order'] ?? null; + $deputies_enabled = $params['deputies_enabled']; $sem_data = Semester::getAllAsArray(); $semester_ids = []; if (is_numeric($min_sem_key) && is_numeric($max_sem_key)) { foreach ($sem_data as $index => $data) { - if ($index >= $min_sem_key && $index <= $max_sem_key) { + if ( + $index >= $min_sem_key && $index <= $max_sem_key + && ( + !isset($params['exactly']) + || in_array($index, $params['exactly']) + ) + ) { $semester_ids[] = $data['semester_id'] ?? ''; } } @@ -244,7 +250,7 @@ class MyRealmModel } // Get the needed semester - if (!in_array($sem, ['', 'current', 'future', 'last', 'lastandnext'])) { + if (!in_array($sem, ['', 'current', 'future', 'last', 'lastandnext','lastbutone'])) { $semesters[] = Semester::getIndexById($sem); } else { switch ($sem) { @@ -264,6 +270,10 @@ class MyRealmModel $semesters[] = $current_sem; $semesters[] = $max_sem; break; + case 'lastbutone': + $semesters[] = $current_sem - 2; + $semesters[] = $current_sem; + break; default: $semesters = array_keys($sem_data); break; @@ -287,7 +297,7 @@ class MyRealmModel $min_sem_key = min($semesters); $max_sem_key = max($semesters); $group_field = $params['group_field']; - $courses = self::getCourses($min_sem_key, $max_sem_key, $params); + $courses = self::getCourses($min_sem_key, $max_sem_key, $params + ['exactly' => $semesters]); $show_semester_name = UserConfig::get($GLOBALS['user']->id)->SHOWSEM_ENABLE; $sem_courses = []; -- GitLab