Skip to content
Snippets Groups Projects
Commit 4d98ebd6 authored by André Noack's avatar André Noack Committed by David Siegfried
Browse files

Resolve #3989 "Filter "Vorletztes und aktuelles Semester" für meine Veranstaltungen"

Closes #3989

Merge request studip/studip!2838
parent 81d4d624
No related branches found
No related tags found
No related merge requests found
......@@ -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) {
......
......@@ -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 = [];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment