update(LvPlan Feiertage): checks if the query result is array before performing array operations and returns success status instead of raw data

This commit is contained in:
SimonGschnell
2025-07-02 08:55:21 +02:00
parent 34220a8f39
commit bf1dac3fd9
3 changed files with 52 additions and 47 deletions
@@ -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){
@@ -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);
+50 -43
View File
@@ -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 ########################################################################################################