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