From aeb44bd7d22da201800258cdb780a85fedea229e Mon Sep 17 00:00:00 2001 From: Moritz Strohm <strohm@data-quest.de> Date: Wed, 18 Sep 2024 14:21:27 +0000 Subject: [PATCH] removed DbView from settings/notifications controller, fixes #4593 Closes #4593 Merge request studip/studip!3411 --- app/controllers/settings/notification.php | 47 +++++++++-------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/app/controllers/settings/notification.php b/app/controllers/settings/notification.php index b36b0dd10f9..5fc3e7f1e28 100644 --- a/app/controllers/settings/notification.php +++ b/app/controllers/settings/notification.php @@ -52,25 +52,12 @@ class Settings_NotificationController extends Settings_SettingsController public function index_action() { $group_field = 'sem_number'; - - $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 - FROM seminar_user - LEFT JOIN seminare USING (Seminar_id) - WHERE seminar_user.user_id = ?"; - if (Config::get()->DEPUTIES_ENABLE) { - $query .= " UNION " . Deputy::getMySeminarsQuery( - 'notification', $dbv->sem_number_sql, $dbv->sem_number_end_sql, '', '' - ); - } - $query .= " ORDER BY sem_nr ASC"; - - $statement = DBManager::get()->prepare($query); - $statement->execute([$this->user->user_id]); - $seminars = $statement->fetchAll(PDO::FETCH_ASSOC); + $semesters = Semester::findAllVisible(); + $seminars = MyRealmModel::getCourses( + array_key_first($semesters), + array_key_last($semesters), + ['deputies_enabled' => Config::get()->DEPUTIES_ENABLE] + ); if (!count($seminars)) { $message = sprintf(_('Sie haben zur Zeit keine Veranstaltungen belegt. Bitte nutzen Sie %s<b>Veranstaltung suchen / hinzufügen</b>%s um sch für Veranstaltungen anzumdelden.'), @@ -85,22 +72,26 @@ class Settings_NotificationController extends Settings_SettingsController $groups = []; $my_sem = []; foreach ($seminars as $seminar) { + $su = CourseMember::findOneBySQL( + 'seminar_id = :course_id AND user_id = :user_id', + ['course_id' => $seminar->id, 'user_id' => $GLOBALS['user']->id] + ); $my_sem[$seminar['Seminar_id']] = [ 'obj_type' => "sem", - 'sem_nr' => $seminar['sem_nr'], + 'sem_nr' => $seminar->veranstaltungsnummer, 'name' => $seminar['Name'], 'visible' => $seminar['visible'], - 'gruppe' => $seminar['gruppe'], - 'sem_status' => $seminar['sem_status'], - 'sem_number' => $seminar['sem_number'], - 'sem_number_end' => $seminar['sem_number_end'], + 'gruppe' => $su->gruppe, + 'sem_status' => $seminar->status, + 'sem_number' => Semester::getIndexById($seminar->start_semester->id), + 'sem_number_end' => Semester::getIndexById($seminar->end_semester->id ?? '') ]; if ($group_field) { - fill_groups($groups, $seminar[$group_field], [ + fill_groups($groups, Semester::getIndexById($seminar->start_semester->id), [ 'seminar_id' => $seminar['Seminar_id'], - 'sem_nr' => $seminar['sem_nr'], + 'sem_nr' => $seminar->veranstaltungsnummer, 'name' => $seminar['Name'], - 'gruppe' => $seminar['gruppe'], + 'gruppe' => $su->gruppe, ]); } } @@ -130,7 +121,7 @@ class Settings_NotificationController extends Settings_SettingsController $this->modules = $enabled_modules; $this->groups = $groups; $this->group_names = $group_names; - $this->group_field = $group_field; + $this->group_field = 'sem_number'; $this->open = $open; $this->seminars = $my_sem; $this->notifications = $notifications; -- GitLab