diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-10-24 13:02:29 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-10-24 13:02:29 +0000 |
| commit | eef7f9f64f67afa97353e723457feada7edf4411 (patch) | |
| tree | 5d213843e73b238043653d7c8c7af656b3fdde06 /lib/models | |
| parent | 7355e3c9c0d5fd65b705dfd94ec231f12e379e9a (diff) | |
fix jsonapi calls for studip trees, fixes #4746
Closes #4746
Merge request studip/studip!3543
Diffstat (limited to 'lib/models')
| -rw-r--r-- | lib/models/RangeTreeNode.php | 22 | ||||
| -rw-r--r-- | lib/models/StudipStudyArea.php | 20 |
2 files changed, 25 insertions, 17 deletions
diff --git a/lib/models/RangeTreeNode.php b/lib/models/RangeTreeNode.php index ebd6cc0..066c021 100644 --- a/lib/models/RangeTreeNode.php +++ b/lib/models/RangeTreeNode.php @@ -132,7 +132,8 @@ class RangeTreeNode extends SimpleORMap implements StudipTreeNode 'semester' => $semester_id ]; } else { - $query .= " JOIN `seminare` s ON (s.`Seminar_id` = i.`seminar_id`)"; + $query .= " JOIN `seminare` s ON (s.`Seminar_id` = i.`seminar_id`) + WHERE 1"; $parameters = []; } @@ -175,16 +176,18 @@ class RangeTreeNode extends SimpleORMap implements StudipTreeNode ): array { $query = "SELECT DISTINCT s.* FROM `seminar_inst` i"; + $order_by = []; if ($semester_id !== 'all') { $query .= " JOIN `seminare` s ON (s.`Seminar_id` = i.`seminar_id`) LEFT JOIN `semester_courses` sc ON (i.`seminar_id` = sc.`course_id`) - WHERE sc.`semester_id` = :semester"; - $parameters = [ - 'semester' => $semester_id - ]; + LEFT JOIN `semester_data` sd USING (`semester_id`) + WHERE sc.`semester_id` = :semester)"; + $parameters = ['semester' => $semester_id]; + $order_by[] = 'sd.`beginn`'; } else { - $query .= " JOIN `seminare` s ON (s.`Seminar_id` = i.`seminar_id`)"; + $query .= " JOIN `seminare` s ON (s.`Seminar_id` = i.`seminar_id`) + WHERE 1"; $parameters = []; } @@ -226,10 +229,11 @@ class RangeTreeNode extends SimpleORMap implements StudipTreeNode } if (Config::get()->IMPORTANT_SEMNUMBER) { - $query .= " ORDER BY s.`start_time`, s.`VeranstaltungsNummer`, s.`Name`"; - } else { - $query .= " ORDER BY s.`start_time`, s.`Name`"; + $order_by[] = 's.`VeranstaltungsNummer`'; } + $order_by[] = 's.`Name`'; + + $query .= " ORDER BY " . implode(', ', $order_by); return DBManager::get()->fetchAll($query, $parameters, 'Course::buildExisting'); } diff --git a/lib/models/StudipStudyArea.php b/lib/models/StudipStudyArea.php index 4e407b4..8189907 100644 --- a/lib/models/StudipStudyArea.php +++ b/lib/models/StudipStudyArea.php @@ -516,7 +516,8 @@ class StudipStudyArea extends SimpleORMap implements StudipTreeNode 'semester' => $semester_id ]; } else { - $query .= " JOIN `seminare` s ON (s.`Seminar_id` = t.`seminar_id`)"; + $query .= " JOIN `seminare` s ON (s.`Seminar_id` = t.`seminar_id`) + WHERE 1"; $parameters = []; } @@ -557,16 +558,18 @@ class StudipStudyArea extends SimpleORMap implements StudipTreeNode ): array { $query = "SELECT DISTINCT s.* FROM `seminar_sem_tree` t"; + $order_by = []; if ($semester_id !== 'all') { $query .= " JOIN `seminare` s ON (s.`Seminar_id` = t.`seminar_id`) LEFT JOIN `semester_courses` sc ON (t.`seminar_id` = sc.`course_id`) + LEFT JOIN `semester_data` sd USING (`semester_id`) WHERE sc.`semester_id` = :semester"; - $parameters = [ - 'semester' => $semester_id - ]; + $parameters = ['semester' => $semester_id]; + $order_by = 'sd.`beginn`'; } else { - $query .= " JOIN `seminare` s ON (s.`Seminar_id` = t.`seminar_id`)"; + $query .= " JOIN `seminare` s ON (s.`Seminar_id` = t.`seminar_id`) + WHERE 1"; $parameters = []; } @@ -606,10 +609,11 @@ class StudipStudyArea extends SimpleORMap implements StudipTreeNode } if (Config::get()->IMPORTANT_SEMNUMBER) { - $query .= " ORDER BY s.`start_time`, s.`VeranstaltungsNummer`, s.`Name`"; - } else { - $query .= " ORDER BY s.`start_time`, s.`Name`"; + $order_by[] = 's.`VeranstaltungsNummer`'; } + $order_by[] = 's.`Name`'; + + $query .= " ORDER BY " . implode(', ', $order_by); return DBManager::get()->fetchAll($query, $parameters, 'Course::buildExisting'); } |
