From ef1bd917309b0d78a9b8d864faf8313b3665ea51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Wed, 6 Sep 2023 11:26:09 +0000
Subject: [PATCH] Resolve #3141 "Administration von Veranstaltungen: csv Export
 wirft Exception"

Closes #3141

Merge request studip/studip!2117
---
 app/controllers/admin/courses.php | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index af3b5c721be..b3c7ec82a63 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -103,7 +103,7 @@ class Admin_CoursesController extends AuthenticatedController
                     false,
                     null,
                     null,
-                    $datafields_filters[$datafield->id]
+                    $datafields_filters[$datafield->id] ?? null
                 );
                 $textWidget->setOnSubmitHandler("STUDIP.AdminCourses.App.changeFilter({'df_".$datafield->id."': $(this).find('input').val()}); return false;");
                 return $textWidget;
@@ -866,9 +866,9 @@ class Admin_CoursesController extends AuthenticatedController
             $view_filters = $this->getViewFilters();
 
             $data = [];
-            foreach ($courses as $course_id => $course) {
-                $course_model = Course::find($course_id);
-                $sem = new Seminar($course_model);
+
+            foreach ($courses as $course) {
+                $sem = new Seminar($course);
                 $row = [];
 
                 if (in_array('number', $filter_config)) {
@@ -876,14 +876,14 @@ class Admin_CoursesController extends AuthenticatedController
                 }
 
                 if (in_array('name', $filter_config)) {
-                    $row['name'] = $course_model->name;
+                    $row['name'] = $course->name;
                 }
 
                 if (in_array('type', $filter_config)) {
                     $row['type'] = sprintf(
                         '%s: %s',
-                        $sem->getSemClass()['name'],
-                        $sem->getSemType()['name']
+                        $course->getSemClass()['name'],
+                        $course->getSemType()['name']
                     );
                 }
 
@@ -896,15 +896,18 @@ class Admin_CoursesController extends AuthenticatedController
                 }
 
                 if (in_array('requests', $filter_config)) {
-                    $row['requests'] = $course['room_requests'];
+                    $row['requests'] = $course->room_requests->count();
                 }
 
                 if (in_array('teachers', $filter_config)) {
                     $row['teachers'] = implode(
                         ', ',
-                        $course->teachers->map(function ($d) {
-                            return $d->user->getFullName();
-                        })
+                        array_map(
+                            function ($d) {
+                                return $d->getUserFullName();
+                            },
+                            CourseMember::findByCourseAndStatus($course->id, 'dozent')
+                        )
                     );
                 }
 
@@ -935,7 +938,7 @@ class Admin_CoursesController extends AuthenticatedController
                 foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) {
                     foreach ($plugin->adminAvailableContents() as $index => $label) {
                         if (in_array($plugin->getPluginId() . "_" . $index, $filter_config)) {
-                            $content = $plugin->adminAreaGetCourseContent($course_model, $index);
+                            $content = $plugin->adminAreaGetCourseContent($course, $index);
                             $row[$plugin->getPluginId() . "_" . $index] = strip_tags(is_a($content, 'Flexi_Template')
                                 ? $content->render()
                                 : $content
-- 
GitLab