From 39ab82b14435d17d56eba145ce7db3d9b7ba8552 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Thu, 26 Sep 2024 14:57:23 +0000 Subject: [PATCH] fix access to dbview by replacing it with the same method that retrieves the courses anywhere else on my courses, fixes #4638 Closes #4638 Merge request studip/studip!3453 --- app/controllers/my_courses.php | 84 ++++++++------------------------- app/views/my_courses/groups.php | 2 +- 2 files changed, 21 insertions(+), 65 deletions(-) diff --git a/app/controllers/my_courses.php b/app/controllers/my_courses.php index b3677aed330..c3a3c032d41 100644 --- a/app/controllers/my_courses.php +++ b/app/controllers/my_courses.php @@ -174,71 +174,27 @@ class MyCoursesController extends AuthenticatedController $group_field = $this->getGroupField(); - $groups = []; - $add_fields = ''; - $add_query = ''; - - if ($group_field === 'sem_tree_id') { - $add_fields = ', sem_tree_id'; - $add_query = "LEFT JOIN seminar_sem_tree sst ON (sst.seminar_id=seminare.Seminar_id)"; - } elseif ($group_field === 'dozent_id') { - $add_fields = ', su1.user_id as dozent_id'; - $add_query = "LEFT JOIN seminar_user as su1 ON (su1.seminar_id=seminare.Seminar_id AND su1.status='dozent')"; - } elseif ($group_field === 'mvv') { - $add_fields = ', mm.`modul_id` AS mvv'; - $add_query = "LEFT JOIN `mvv_lvgruppe_seminar` AS mls ON (mls.`seminar_id` = seminare.`Seminar_id`) - LEFT JOIN `mvv_lvgruppe` AS ml ON (mls.`lvgruppe_id` = ml.`lvgruppe_id`) - LEFT JOIN `mvv_lvgruppe_modulteil` AS mlm on(mls.`lvgruppe_id` = mlm.`lvgruppe_id`) - LEFT JOIN `mvv_modulteil` AS mmt ON (mlm.`modulteil_id` = mmt.`modulteil_id`) - LEFT JOIN `mvv_modul` AS mm ON (mmt.`modul_id` = mm.`modul_id` AND mm.`stat` = 'genehmigt')"; - - } - - $dbv = DbView::getView('sem_tree'); - - $query = "SELECT seminare.VeranstaltungsNummer AS sem_nr, seminare.Name, seminare.Seminar_id, - seminare.status AS sem_status, seminar_user.gruppe, seminare.visible, - {$dbv->sem_number_sql} AS sem_number, - {$dbv->sem_number_end_sql} AS sem_number_end {$add_fields} - FROM seminar_user - JOIN semester_data sd - LEFT JOIN seminare USING (Seminar_id) - {$add_query} - WHERE seminar_user.user_id = ?"; - if (Config::get()->MY_COURSES_ENABLE_STUDYGROUPS && !$studygroups) { - $studygroup_types = DBManager::get()->quote(studygroup_sem_types()); - $query .= " AND seminare.status NOT IN ({$studygroup_types})"; - } elseif ($studygroups) { - $studygroup_types = DBManager::get()->quote(studygroup_sem_types()); - $query .= " AND seminare.status IN ({$studygroup_types})"; - } - - if (Config::get()->DEPUTIES_ENABLE) { - $query .= " UNION " - . Deputy::getMySeminarsQuery('gruppe', $dbv->sem_number_sql, $dbv->sem_number_end_sql, $add_fields, $add_query); - } - $query .= " ORDER BY sem_nr ASC"; + $temp = MyRealmModel::getPreparedCourses('', [ + 'group_field' => $group_field, + 'order_by' => null, + 'order' => 'asc', + 'studygroups_enabled' => Config::get()->MY_COURSES_ENABLE_STUDYGROUPS, + 'deputies_enabled' => Config::get()->DEPUTIES_ENABLE, + ]); - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $my_sem[$row['Seminar_id']] = [ - 'obj_type' => 'sem', - 'sem_nr' => $row['sem_nr'], - 'name' => $row['Name'], - 'visible' => $row['visible'], - 'gruppe' => $row['gruppe'], - 'sem_status' => $row['sem_status'], - 'sem_number' => $row['sem_number'], - 'sem_number_end' => $row['sem_number_end'], - ]; - if ($group_field) { - fill_groups($groups, $row[$group_field], [ - 'seminar_id' => $row['Seminar_id'], - 'sem_nr' => $row['sem_nr'], - 'name' => $row['Name'], - 'gruppe' => $row['gruppe'] - ]); + $groups = []; + $my_sem = []; + foreach ($temp as $courses) { + foreach ($courses as $course) { + $my_sem[$course['seminar_id']] = $course; + if ($group_field) { + fill_groups($groups, $course[$group_field], [ + 'seminar_id' => $course['seminar_id'], + 'sem_nr' => $course['veranstaltungsnummer'], + 'name' => $course['name'], + 'gruppe' => $course['gruppe'] + ]); + } } } diff --git a/app/views/my_courses/groups.php b/app/views/my_courses/groups.php index fff9d63e945..689f51b9d96 100644 --- a/app/views/my_courses/groups.php +++ b/app/views/my_courses/groups.php @@ -48,7 +48,7 @@ <tr> <td> <a href="<?= URLHelper::getLink('seminar_main.php?auswahl=' . $member['seminar_id']) ?>"> - <?= htmlReady(Config::get()->IMPORTANT_SEMNUMBER ? $my_sem[$member['seminar_id']]['sem_nr'] : '') ?> + <?= htmlReady(Config::get()->IMPORTANT_SEMNUMBER ? $my_sem[$member['seminar_id']]['veranstaltungsnummer'] : '') ?> <?= htmlReady($my_sem[$member['seminar_id']]['name']) ?> </a> <? if (!$my_sem[$member['seminar_id']]['visible']): ?> -- GitLab