diff --git a/lib/classes/JsonApi/RouteMap.php b/lib/classes/JsonApi/RouteMap.php index 579b4e91f3eba024b9dcbbed1a26a9385fb5fdea..8c6037ac99035326c79ba1ddfec2667c49cc88f9 100644 --- a/lib/classes/JsonApi/RouteMap.php +++ b/lib/classes/JsonApi/RouteMap.php @@ -325,7 +325,7 @@ class RouteMap $group->get('/tree-node/{id}', Routes\Tree\TreeShow::class); $group->get('/tree-node/{id}/children', Routes\Tree\ChildrenOfTreeNode::class); - $group->get('/tree-node/{id}/courseinfo', Routes\Tree\CourseinfoOfTreeNode::class); + $group->get('/tree-node/{id}/courseinfo', Routes\Tree\CourseInfoOfTreeNode::class); $group->get('/tree-node/{id}/courses', Routes\Tree\CoursesOfTreeNode::class); $group->get('/tree-node/course/pathinfo/{classname}/{id}', Routes\Tree\PathinfoOfTreeNodeCourse::class); $group->get('/tree-node/course/details/{id}', Routes\Tree\DetailsOfTreeNodeCourse::class); diff --git a/lib/classes/JsonApi/Routes/Tree/CourseInfoOfTreeNode.php b/lib/classes/JsonApi/Routes/Tree/CourseInfoOfTreeNode.php index e684c40301b2e26d4a3c9e109129229de257753f..086b25265c510bbd3bffb7b3353628d73e25ab9b 100644 --- a/lib/classes/JsonApi/Routes/Tree/CourseInfoOfTreeNode.php +++ b/lib/classes/JsonApi/Routes/Tree/CourseInfoOfTreeNode.php @@ -8,7 +8,7 @@ use Psr\Http\Message\ResponseInterface as Response; use JsonApi\Errors\RecordNotFoundException; use JsonApi\NonJsonApiController; -class CourseinfoOfTreeNode extends NonJsonApiController +class CourseInfoOfTreeNode extends NonJsonApiController { protected $allowedFilteringParameters = ['q', 'semester', 'semclass', 'recursive']; diff --git a/lib/models/RangeTreeNode.php b/lib/models/RangeTreeNode.php index ebd6cc0df4e7955b0885e545092ef7aa2faa689b..066c021860230d04717558ef695d9be5f96a1755 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 4e407b4169016b54991a62615d953a042657c617..8189907001a3693dead7caa190bdca4141a3bf5f 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'); }