From b4cddd0fb667295b83a34684f540df0b87dd8d39 Mon Sep 17 00:00:00 2001 From: David Siegfried <david.siegfried@uni-vechta.de> Date: Fri, 24 Feb 2023 15:02:31 +0000 Subject: [PATCH] display semester of the course in the news-ranges, closes #2213 Closes #2213 Merge request studip/studip!1446 --- lib/classes/forms/NewsRangesInput.php | 4 +++- lib/models/Course.class.php | 22 +++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/classes/forms/NewsRangesInput.php b/lib/classes/forms/NewsRangesInput.php index a515562cb81..1c70117ca41 100644 --- a/lib/classes/forms/NewsRangesInput.php +++ b/lib/classes/forms/NewsRangesInput.php @@ -167,6 +167,8 @@ class NewsRangesInput extends Input return []; } + $name_format = \Config::get()->IMPORANT_SEMNUMBER ? 'number-name-semester' : 'name-semester'; + $options = []; foreach (\Course::findByUser(\User::findCurrent()->id) as $course) { if (!\StudipNews::haveRangePermission('edit', $course->id)) { @@ -175,7 +177,7 @@ class NewsRangesInput extends Input $options[] = [ 'value' => $course->id . '__seminar', - 'name' => (string) $course->name, + 'name' => $course->getFullname($name_format), ]; } diff --git a/lib/models/Course.class.php b/lib/models/Course.class.php index d9325b099be..d0bc63d6ac7 100644 --- a/lib/models/Course.class.php +++ b/lib/models/Course.class.php @@ -545,12 +545,17 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe */ public function getFullname($format = 'default') { - $template['type-name'] = '%2$s: %1$s'; - $template['number-type-name'] = '%3$s %2$s: %1$s'; - $template['type-number-name'] = '%2$s: %3$s %1$s'; - $template['number-name'] = '%3$s %1$s'; - $template['number-name-semester'] = '%3$s %1$s (%4$s)'; - $template['sem-duration-name'] = '%4$s'; + $template = [ + 'name' => '%1$s', + 'name-semester' => '%1$s (%4$s)', + 'number-name' => '%3$s %1$s', + 'number-name-semester' => '%3$s %1$s (%4$s)', + 'number-type-name' => '%3$s %2$s: %1$s', + 'sem-duration-name' => '%4$s', + 'type-name' => '%2$s: %1$s', + 'type-number-name' => '%2$s: %3$s %1$s', + ]; + if ($format === 'default' || !isset($template[$format])) { $format = Config::get()->IMPORTANT_SEMNUMBER ? 'type-number-name' : 'type-name'; } @@ -957,11 +962,14 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe $sql = 'SELECT range_id FROM `deputies` WHERE `deputies`.`user_id` = :user_id'; $seminar_ids = array_merge($seminar_ids, $db->fetchFirst($sql, $sql_params)); } + + $name_sort = Config::get()->IMPORTANT_SEMNUMBER ? 'VeranstaltungsNummer, Name' : 'Name'; + return Course::findBySQL( "LEFT JOIN semester_courses ON (semester_courses.course_id = seminare.Seminar_id) WHERE Seminar_id IN (?) GROUP BY seminare.Seminar_id - ORDER BY IF(semester_courses.semester_id IS NULL, 1, 0) DESC, start_time DESC, Name ASC", + ORDER BY semester_courses.semester_id IS NULL DESC, start_time DESC, {$name_sort}", [$seminar_ids] ); } -- GitLab