From a756b09921d5f21ed4e8d90ecd0f7eb879d591bd Mon Sep 17 00:00:00 2001 From: Rasmus Fuhse <fuhse@data-quest.de> Date: Thu, 2 May 2024 09:49:31 +0000 Subject: [PATCH] Resolve "Verwaltung von Veranstaltungen: Lehrendenfilter wird angewendet, obwohl das nicht angezeigt wird" Closes #4053 Merge request studip/studip!2946 --- app/controllers/admin/courses.php | 34 +++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php index d0e2d5331a1..5ae810ddada 100644 --- a/app/controllers/admin/courses.php +++ b/app/controllers/admin/courses.php @@ -535,12 +535,42 @@ class Admin_CoursesController extends AuthenticatedController if (isset($filters[$key])) { $config->store($field, $filters[$key]); } + unset($filters[$key]); + } + + if ($config->ADMIN_COURSES_TEACHERFILTER) { if (!$config->MY_INSTITUTES_DEFAULT) { $config->delete('ADMIN_COURSES_TEACHERFILTER'); + } else { + $exists = InstituteMember::countBySQL("INNER JOIN `auth_user_md5` USING (`user_id`) WHERE `user_inst`.`user_id` = :user_id AND `user_inst`.`Institut_id` = :institut_id AND `auth_user_md5`.`perms` = 'dozent' ", [ + 'user_id' => $config->ADMIN_COURSES_TEACHERFILTER, + 'institut_id' => $config->MY_INSTITUTES_DEFAULT + ]) > 0; + if (!$exists) { + $config->delete('ADMIN_COURSES_TEACHERFILTER'); + } + } + } + if ($config->MY_COURSES_SELECTED_STGTEIL) { + if (!$config->MY_INSTITUTES_DEFAULT) { $config->delete('MY_COURSES_SELECTED_STGTEIL'); + } else { + $statement = DBManager::get()->prepare(" + SELECT 1 + FROM `mvv_stg_stgteil` + INNER JOIN `mvv_studiengang` ON (`mvv_stg_stgteil`.`studiengang_id` = `mvv_studiengang`.`studiengang_id`) + WHERE `mvv_studiengang`.`institut_id` = :institut_id + AND `mvv_stg_stgteil`.`stgteil_id` = :stgteil_id + "); + $statement->execute([ + 'institut_id' => $config->MY_INSTITUTES_DEFAULT, + 'stgteil_id' => $config->MY_COURSES_SELECTED_STGTEIL + ]); + $exists = (bool) $statement->fetch(PDO::FETCH_COLUMN); + if (!$exists) { + $config->delete('MY_COURSES_SELECTED_STGTEIL'); + } } - - unset($filters[$key]); } // Datafield filters -- GitLab