From 2eef63f1d37ce5621fb3b8078b5d20c2b24dc993 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Mon, 10 Oct 2022 14:08:40 +0000 Subject: [PATCH] make semester and semtype condition optional, fixes #145 Closes #145 Merge request studip/studip!1063 --- app/controllers/course/members.php | 9 +++------ app/controllers/wiki.php | 8 -------- lib/classes/searchtypes/MyCoursesSearch.class.php | 10 ++++++++-- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php index bad1d8ebbdd..1fe9f57e70a 100644 --- a/app/controllers/course/members.php +++ b/app/controllers/course/members.php @@ -451,26 +451,23 @@ class Course_MembersController extends AuthenticatedController global $perm; if ($perm->have_perm('root')) { $parameters = [ - 'semtypes' => studygroup_sem_types() ?: [], + 'semtypes' => studygroup_sem_types() ?: null, 'exclude' => [Context::getId()], - 'semesters' => array_map(function ($s) { return $s->semester_id; }, Semester::getAll()) ]; } else if ($perm->have_perm('admin')) { $parameters = [ - 'semtypes' => studygroup_sem_types() ?: [], + 'semtypes' => studygroup_sem_types() ?: null, 'institutes' => array_map(function ($i) { return $i['Institut_id']; }, Institute::getMyInstitutes()), 'exclude' => [Context::getId()], - 'semesters' => array_map(function ($s) { return $s->semester_id; }, Semester::getAll()) ]; } else { $parameters = [ 'userid' => $GLOBALS['user']->id, - 'semtypes' => studygroup_sem_types() ?: [], + 'semtypes' => studygroup_sem_types() ?: null, 'exclude' => [Context::getId()], - 'semesters' => array_map(function ($s) { return $s->semester_id; }, Semester::getAll()) ]; } $coursesearch = MyCoursesSearch::get('Seminar_id', $GLOBALS['perm']->get_perm(), $parameters); diff --git a/app/controllers/wiki.php b/app/controllers/wiki.php index 95e38465b99..50bed349c61 100644 --- a/app/controllers/wiki.php +++ b/app/controllers/wiki.php @@ -269,12 +269,6 @@ class WikiController extends AuthenticatedController ); } - $all_semesters = Semester::getAll(); - $all_semester_ids = []; - foreach ($all_semesters as $semester) { - $all_semester_ids[] = $semester->id; - } - $this->course_search = new QuickSearch( 'selected_course_id', new MyCoursesSearch( @@ -282,9 +276,7 @@ class WikiController extends AuthenticatedController $GLOBALS['perm']->get_perm(), [ 'userid' => $GLOBALS['user']->id, - 'semtypes' => [], 'exclude' => [$course_id], - 'semesters' => $all_semester_ids, ], 's.`Seminar_id` IN ( SELECT range_id FROM wiki diff --git a/lib/classes/searchtypes/MyCoursesSearch.class.php b/lib/classes/searchtypes/MyCoursesSearch.class.php index dad725c1413..64bee64cb7e 100644 --- a/lib/classes/searchtypes/MyCoursesSearch.class.php +++ b/lib/classes/searchtypes/MyCoursesSearch.class.php @@ -189,11 +189,17 @@ class MyCoursesSearch extends StandardSearch { $conditions = [ '(s.`VeranstaltungsNummer` LIKE :input OR s.`Name` LIKE :input)', - 's.`status` NOT IN (:semtypes)', 's.`Seminar_id` NOT IN (:exclude)', - 'semester_data.`semester_id` IN (:semesters)' ]; + if (isset($this->parameters['semtypes'])) { + $conditions[] = 's.`status` NOT IN (:semtypes)'; + } + + if (isset($this->parameters['semesters'])) { + $conditions[] = 'semester_data.`semester_id` IN (:semesters)'; + } + if ($this->additional_sql_conditions) { $conditions[] = $this->additional_sql_conditions; } -- GitLab