From cf20da4779a8818f2cb471b713319c353ea0f935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de> Date: Thu, 16 May 2024 12:46:45 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20#4146=20"Verwaltung=20von=20Veranstal?= =?UTF-8?q?tungen:=20Lehrendenfilter=20zeigt=20zuviele=20Eintr=C3=A4ge"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #4146 Merge request studip/studip!2988 --- app/controllers/admin/courses.php | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php index 27b6ca6bd50..a798880ead8 100644 --- a/app/controllers/admin/courses.php +++ b/app/controllers/admin/courses.php @@ -556,7 +556,9 @@ class Admin_CoursesController extends AuthenticatedController 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' ", [ + $include_children = $GLOBALS['user']->cfg->MY_INSTITUTES_INCLUDE_CHILDREN ? ' OR Institute.fakultaets_id = :institut_id ' : ''; + + $exists = InstituteMember::countBySQL("INNER JOIN `Institute` USING (`Institut_id`) WHERE `user_inst`.`user_id` = :user_id AND (`Institute`.`Institut_id` = :institut_id $include_children) AND `user_inst`.`inst_perms` = 'dozent' ", [ 'user_id' => $config->ADMIN_COURSES_TEACHERFILTER, 'institut_id' => $config->MY_INSTITUTES_DEFAULT ]) > 0; @@ -1679,11 +1681,20 @@ class Admin_CoursesController extends AuthenticatedController */ private function getTeacherWidget($institut_id = null) { - $institut_id = $institut_id ?: $GLOBALS['user']->cfg->MY_INSTITUTES_DEFAULT; - if (str_contains($institut_id, '_')) { - $institut_id = substr($institut_id, 0, strpos($institut_id, '_')); + if ($institut_id) { + if (str_contains($institut_id, '_')) { + $institut_id = substr($institut_id, 0, strpos($institut_id, '_')); + $GLOBALS['user']->cfg->store('MY_INSTITUTES_INCLUDE_CHILDREN', 1); + } else { + $GLOBALS['user']->cfg->store('MY_INSTITUTES_INCLUDE_CHILDREN', 0); + } + } else { + $institut_id = $GLOBALS['user']->cfg->MY_INSTITUTES_DEFAULT; } + $teachers = []; + $include_children = $GLOBALS['user']->cfg->MY_INSTITUTES_INCLUDE_CHILDREN ? ' OR Institute.fakultaets_id = :institut_id ' : ''; + if ($institut_id) { $teachers = DBManager::get()->fetchAll(" SELECT auth_user_md5.*, user_info.* @@ -1691,8 +1702,8 @@ class Admin_CoursesController extends AuthenticatedController LEFT JOIN user_info ON (auth_user_md5.user_id = user_info.user_id) INNER JOIN user_inst ON (user_inst.user_id = auth_user_md5.user_id) INNER JOIN Institute ON (Institute.Institut_id = user_inst.Institut_id) - WHERE (Institute.Institut_id = :institut_id OR Institute.fakultaets_id = :institut_id) - AND auth_user_md5.perms = 'dozent' + WHERE (Institute.Institut_id = :institut_id $include_children) + AND user_inst.inst_perms = 'dozent' GROUP BY auth_user_md5.user_id ORDER BY auth_user_md5.Nachname ASC, auth_user_md5.Vorname ASC ", [ -- GitLab