From 0febc37237ad6c8c4840ed75e09c35d52b8a34be Mon Sep 17 00:00:00 2001
From: Rasmus Fuhse <fuhse@data-quest.de>
Date: Thu, 25 Jan 2024 13:24:38 +0000
Subject: [PATCH] Draft: Resolve "Unterveranstaltungen lassen sich eventuell
 nicht finden"

Closes #3670

Merge request studip/studip!2549
---
 app/controllers/admin/courses.php | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index e822eab1477..aa56bfbad73 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -393,14 +393,27 @@ class Admin_CoursesController extends AuthenticatedController
         $activated_fields = $this->getFilterConfig();
 
         $GLOBALS['user']->cfg->store('MY_COURSES_ACTION_AREA', Request::option('action'));
+        $course_ids = [];
         foreach ($courses as $course) {
             if ($course->parent && !Request::option('course_id')) {
-                $data['data'][] = $this->getCourseData($course->parent, $activated_fields);
-                $data['data'][] = $this->getCourseData($course, $activated_fields);
+                if (!in_array($course->parent->id, $course_ids)) {
+                    $data['data'][] = $this->getCourseData($course->parent, $activated_fields);
+                    $course_ids[] = $course->parent->id;
+                }
+                if (!in_array($course->id, $course_ids)) {
+                    $data['data'][] = $this->getCourseData($course, $activated_fields);
+                    $course_ids[] = $course->id;
+                }
             } else {
-                $data['data'][] = $this->getCourseData($course, $activated_fields);
+                if (!in_array($course->id, $course_ids)) {
+                    $data['data'][] = $this->getCourseData($course, $activated_fields);
+                    $course_ids[] = $course->id;
+                }
                 foreach ($course->children as $childcourse) {
-                    $data['data'][] = $this->getCourseData($childcourse, $activated_fields);
+                    if (!in_array($childcourse->id, $course_ids)) {
+                        $data['data'][] = $this->getCourseData($childcourse, $activated_fields);
+                        $course_ids[] = $childcourse->id;
+                    }
                 }
             }
         }
-- 
GitLab