aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-09-19 13:07:11 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-09-19 13:07:11 +0000
commit9514cdb9b7bbe34a2b73c09774c36e8d3c68c882 (patch)
tree87ba3a12be549671c00901622349897b53fd9bbe /lib
parente94466a5c1a54050525489abe36955a3b595c97b (diff)
fix faulty access to semesters in global course search, fixes #4604
Closes #4604 Merge request studip/studip!3419
Diffstat (limited to 'lib')
-rw-r--r--lib/classes/globalsearch/GlobalSearchCourses.php10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/classes/globalsearch/GlobalSearchCourses.php b/lib/classes/globalsearch/GlobalSearchCourses.php
index cb1fbae..6359e8a 100644
--- a/lib/classes/globalsearch/GlobalSearchCourses.php
+++ b/lib/classes/globalsearch/GlobalSearchCourses.php
@@ -84,10 +84,9 @@ class GlobalSearchCourses extends GlobalSearchModule implements GlobalSearchFull
$semester = Semester::findByTimestamp($filter['semester']);
$semester_ids = [$semester->id];
}
- $semester_join = "LEFT JOIN semester_courses ON (courses.Seminar_id = semester_courses.course_id) ";
$semester_condition = "
AND (
- semester_courses.semester_id IS NULL OR semester_courses.semester_id IN (" . join(',', array_map([DBManager::get(), 'quote'], $semester_ids)) . ")
+ semester_courses.semester_id IS NULL OR semester_courses.semester_id IN (" . implode(',', array_map([DBManager::get(), 'quote'], $semester_ids)) . ")
) ";
}
if (!empty($filter['institute'])) {
@@ -104,12 +103,11 @@ class GlobalSearchCourses extends GlobalSearchModule implements GlobalSearchFull
{$language_name} AS `Name`,
courses.`VeranstaltungsNummer`, courses.`status`
FROM `seminare` AS courses
- JOIN `semester_courses` ON courses.`seminar_id` = `semester_courses`.`course_id`
- JOIN `semester` USING (`semester_id`)
+ LEFT JOIN `semester_courses` ON courses.`seminar_id` = `semester_courses`.`course_id`
+ LEFT JOIN `semester_data` USING (`semester_id`)
{$language_join}
JOIN `seminar_user` u ON (u.`Seminar_id` = courses.`Seminar_id` AND u.`status` = 'dozent')
JOIN `auth_user_md5` a ON (a.`user_id` = u.`user_id`)
- {$semester_join}
WHERE {$visibility}
(
{$language_name} LIKE {$query}
@@ -120,7 +118,7 @@ class GlobalSearchCourses extends GlobalSearchModule implements GlobalSearchFull
{$seminar_type_condition}
{$semester_condition}
GROUP BY courses.Seminar_id
- ORDER BY `semester`.`beginn` DESC";
+ ORDER BY MAX(`semester_data`.`beginn`) DESC";
if (Config::get()->IMPORTANT_SEMNUMBER) {
$sql .= ", courses.`VeranstaltungsNummer`";