diff --git a/app/controllers/my_courses.php b/app/controllers/my_courses.php index 9e8e0b634b68b16d8c3c4b0e0ce79c9758ea7c00..8205c12c743e0a1855bd7473d6b6a2f9ee14ced4 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 0279fe54ab89ce48462bc2de41c60d55989f777a..94bb30d8109e9c0029469e4f71fc6242e9951f56 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 = [];