From cbf5b3d68c5fbd5fc6cbc9f36a05ac63f0ef78da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Mon, 25 Mar 2024 15:21:18 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20#3886=20"REST-API=20Routen=20f=C3=BCr?=
 =?UTF-8?q?=20den=20Kalender=20sind=20kaputt"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #3886

Merge request studip/studip!2745
---
 app/routes/Events.php | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/app/routes/Events.php b/app/routes/Events.php
index 3612d9a5a37..368d6150af9 100644
--- a/app/routes/Events.php
+++ b/app/routes/Events.php
@@ -4,12 +4,9 @@ namespace RESTAPI\Routes;
 use Config;
 use Resource;
 use Room;
-use SingleCalendar;
-use SingleDate;
 use Seminar;
 use Issue;
-use CalendarExport;
-use CalendarWriterICalendar;
+
 
 /**
  * @author     André Klaßen <andre.klassen@elan-ev.de>
@@ -23,11 +20,6 @@ use CalendarWriterICalendar;
  */
 class Events extends \RESTAPI\RouteMap
 {
-    public function before($router, &$handler, &$parameters)
-    {
-        require_once 'lib/calendar/CalendarExportFile.class.php';
-        require_once 'lib/calendar/CalendarWriterICalendar.class.php';
-    }
 
     /**
      * returns all upcoming events within the next two weeks for a given user
@@ -53,7 +45,7 @@ class Events extends \RESTAPI\RouteMap
         $events = array_slice($list, $this->offset, $this->limit); ;
         foreach ($events as $event) {
 
-            $course_uri = $this->urlf('/course/%s', [htmlReady($event->course_id)]);
+            $course_uri = $this->urlf('/course/%s', [htmlReady($event->range_id)]);
 
             $json[] = [
                 'event_id'    => $event->id,
@@ -62,7 +54,7 @@ class Events extends \RESTAPI\RouteMap
                 'end'         => $event->end_time,
                 'title'       => $event->getTitle(),
                 'description' => $event->getDescription() ?: '',
-                'categories'  => $event->toStringCategories() ?: '',
+                'categories'  => $event->getTypeName(),
                 'room'        => $event->getRoomName(),
                 'canceled'    => $event instanceof \CourseExDate || holiday($event->date),
             ];
@@ -83,15 +75,15 @@ class Events extends \RESTAPI\RouteMap
         if ($user_id !== $GLOBALS['user']->id) {
             $this->error(401);
         }
-        $calender_writer = new CalendarWriterICalendar();
-        $export = new CalendarExport($calender_writer);
-        $export->exportFromDatabase($user_id, 0, 2114377200, 'ALL_EVENTS');
-
-        if ($GLOBALS['_calendar_error']->getMaxStatus(\ErrorHandler::ERROR_CRITICAL)) {
-            $this->halt(500);
-        }
-
-        $content = implode($export->getExport());
+        $end = new \DateTime();
+        $end->setTimestamp(\CalendarDate::NEVER_ENDING);
+        $start = new \DateTime();
+        $start->modify('-4 week');
+        $ical_export = new \ICalendarExport();
+        $ical = $ical_export->exportCalendarDates($user_id, $start, $end)
+            . $ical_export->exportCourseDates($user_id, $start, $end)
+            . $ical_export->exportCourseExDates($user_id, $start, $end);
+        $content = $ical_export->writeHeader() . $ical . $ical_export->writeFooter();
 
         $this->contentType('text/calendar');
         $this->headers([
-- 
GitLab