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/RangeTreeNode.php | |
| parent | 7355e3c9c0d5fd65b705dfd94ec231f12e379e9a (diff) | |
fix jsonapi calls for studip trees, fixes #4746
Closes #4746
Merge request studip/studip!3543
Diffstat (limited to 'lib/models/RangeTreeNode.php')
| -rw-r--r-- | lib/models/RangeTreeNode.php | 22 |
1 files changed, 13 insertions, 9 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'); } |
