diff --git a/application/libraries/KalenderLib.php b/application/libraries/KalenderLib.php index b79afd8fc..54c354233 100644 --- a/application/libraries/KalenderLib.php +++ b/application/libraries/KalenderLib.php @@ -1601,7 +1601,7 @@ class KalenderLib return $this->_ci->KalenderModel->execReadOnlyQuery($query); } - private function _mapEvents($data, $collisionCheck = true) + private function _mapEvents($data, $collisionCheck = true, $maxDailyEventLimit = null) { $stundenplan_data = []; @@ -1769,6 +1769,21 @@ class KalenderLib usort($event->ort_kurzbz, 'strnatcasecmp'); } + if (!is_null($maxDailyEventLimit) && is_numeric($maxDailyEventLimit) && $maxDailyEventLimit > 0) + { + $eventsPerDay = []; + $events = array_filter($events, function ($event) use (&$eventsPerDay, $maxDailyEventLimit) { + $date = $event->datum; + $eventsPerDay[$date] = $eventsPerDay[$date] ?? 0; + + if ($eventsPerDay[$date] >= $maxDailyEventLimit) + return false; + + $eventsPerDay[$date]++; + return true; + }); + } + return array_values($events); }