From bf1dac3fd9844d019cdc01d4f663062df71b92de Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 2 Jul 2025 08:55:21 +0200 Subject: [PATCH] update(LvPlan Feiertage): checks if the query result is array before performing array operations and returns success status instead of raw data --- .../controllers/api/frontend/v1/LvPlan.php | 2 +- .../controllers/api/frontend/v1/Studium.php | 4 +- application/libraries/StundenplanLib.php | 93 ++++++++++--------- 3 files changed, 52 insertions(+), 47 deletions(-) diff --git a/application/controllers/api/frontend/v1/LvPlan.php b/application/controllers/api/frontend/v1/LvPlan.php index 63ca5b159..69d08110a 100644 --- a/application/controllers/api/frontend/v1/LvPlan.php +++ b/application/controllers/api/frontend/v1/LvPlan.php @@ -119,7 +119,7 @@ class LvPlan extends FHCAPI_Controller } $ferienEvents = $this->stundenplanlib->fetchFerienTageEvents($start_date, $end_date, $studiengang); - + $ferienEvents = $this->getDataOrTerminateWithError($ferienEvents); $allEvents = array_merge($lvAndMoodleEvents,$ferienEvents); // sort array with moodle events first usort($lvAndMoodleEvents, function($a, $b){ diff --git a/application/controllers/api/frontend/v1/Studium.php b/application/controllers/api/frontend/v1/Studium.php index e4cf9e6a3..23c6b87d5 100644 --- a/application/controllers/api/frontend/v1/Studium.php +++ b/application/controllers/api/frontend/v1/Studium.php @@ -311,9 +311,7 @@ SELECT tbl_lehrveranstaltung.*, private function computeLektorenFromLehrveranstaltung($lehreinheit_id, $semester, $studiengang, $studiensemester){ $this->load->library('StundenplanLib'); $lektoren = $this->stundenplanlib->getLektorenFromLehrveranstaltung($lehreinheit_id,$semester, $studiengang,$studiensemester); - if(!$lektoren){ - return []; - } + $lektoren = $this->getDataOrTerminateWithError($lektoren); $lektoren = array_map(function($lektor){ return ["name"=>$this->getDataOrTerminateWithError($this->PersonModel->getFullName($lektor)), "email"=>$lektor."@".DOMAIN]; },$lektoren); diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index b2c82fd77..a16c8e02e 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -176,7 +176,7 @@ class StundenplanLib{ },$lektoren); } - return $lektoren; + return success($lektoren); } public function expand_object_information($data){ @@ -267,49 +267,56 @@ class StundenplanLib{ return error(getData($ferienEvents)); } $ferienEvents = getData($ferienEvents); + + if(is_array($ferienEvents) && count($ferienEvents) > 0){ + + $ferienEvents = array_map(function($event){ + $event_start = new DateTime($event->vondatum); + $event_end = new DateTime($event->bisdatum); + $event_end->modify('+1 day'); + + $interval = new DateInterval('P1D'); + $period = new DatePeriod($event_start, $interval, $event_end); + $event->dates = array_map(function($date){ + return $date->format('Y-m-d'); + }, iterator_to_array($period)); + return $event; + }, $ferienEvents); + + $ferienEventsFlattened=[]; + foreach($ferienEvents as $ferien_event){ + foreach($ferien_event->dates as $date){ + $event = new stdClass(); + $event->bezeichnung = $ferien_event->bezeichnung; + $event->datum = $date; + $event->type = 'ferien'; + $ferienEventsFlattened[] = $event; + } + }; + + $today=new DateTime(); + $ferienEventsFlattened = array_map(function($event) use($today){ + $ferien_event = (object) array( + 'type' => 'ferien', + 'beginn' => $today->format('H:i:s'), + 'ende' => $today->format('H:i:s'), + 'allDayEvent' => true, + 'datum' => $event->datum, + 'topic' => $event->bezeichnung, + 'titel' => $event->bezeichnung, + 'farbe' => '00689E' + + ); + return $ferien_event; + }, $ferienEventsFlattened); + + return success($ferienEventsFlattened); + } + else{ + return success([]); + } - $ferienEvents = array_map(function($event){ - $event_start = new DateTime($event->vondatum); - $event_end = new DateTime($event->bisdatum); - $event_end->modify('+1 day'); - - $interval = new DateInterval('P1D'); - $period = new DatePeriod($event_start, $interval, $event_end); - $event->dates = array_map(function($date){ - return $date->format('Y-m-d'); - }, iterator_to_array($period)); - return $event; - }, $ferienEvents); - - $ferienEventsFlattened=[]; - foreach($ferienEvents as $ferien_event){ - foreach($ferien_event->dates as $date){ - $event = new stdClass(); - $event->bezeichnung = $ferien_event->bezeichnung; - $event->datum = $date; - $event->type = 'ferien'; - $ferienEventsFlattened[] = $event; - } - }; - - $today=new DateTime(); - $ferienEventsFlattened = array_map(function($event) use($today){ - $ferien_event = (object) array( - 'type' => 'ferien', - 'beginn' => $today->format('H:i:s'), - 'ende' => $today->format('H:i:s'), - 'allDayEvent' => true, - 'datum' => $event->datum, - 'topic' => $event->bezeichnung, - 'titel' => $event->bezeichnung, - 'farbe' => '00689E' - - ); - return $ferien_event; - }, $ferienEventsFlattened); - - - return $ferienEventsFlattened; + } // start of the private functions ########################################################################################################