aboutsummaryrefslogtreecommitdiff
path: root/lib/models/StudipStudyArea.php
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-10-24 13:02:29 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-10-24 13:02:29 +0000
commiteef7f9f64f67afa97353e723457feada7edf4411 (patch)
tree5d213843e73b238043653d7c8c7af656b3fdde06 /lib/models/StudipStudyArea.php
parent7355e3c9c0d5fd65b705dfd94ec231f12e379e9a (diff)
fix jsonapi calls for studip trees, fixes #4746
Closes #4746 Merge request studip/studip!3543
Diffstat (limited to 'lib/models/StudipStudyArea.php')
-rw-r--r--lib/models/StudipStudyArea.php20
1 files changed, 12 insertions, 8 deletions
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');
}