diff options
| author | Moritz Strohm <strohm@data-quest.de> | 2024-03-22 13:54:57 +0000 |
|---|---|---|
| committer | Moritz Strohm <strohm@data-quest.de> | 2024-03-22 13:54:57 +0000 |
| commit | 14efe428dac4ec824060d19c5e493a45f5ba4ed8 (patch) | |
| tree | f438a1c5258e94936fee347ccaddee49eaafbeb4 /app/controllers/calendar/calendar.php | |
| parent | 46b7d7e771fbaaf6fa2843b8fd3ae0a82346e779 (diff) | |
group calendar: prevent multiple display of dates that are assigned to multiple personal calendars, fixes #3850
Closes #3850
Merge request studip/studip!2723
Diffstat (limited to 'app/controllers/calendar/calendar.php')
| -rw-r--r-- | app/controllers/calendar/calendar.php | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/app/controllers/calendar/calendar.php b/app/controllers/calendar/calendar.php index 6ae77eb..6789094 100644 --- a/app/controllers/calendar/calendar.php +++ b/app/controllers/calendar/calendar.php @@ -613,19 +613,40 @@ class Calendar_CalendarController extends AuthenticatedController $result = []; + uasort($users, function(User $a, User $b) { + $fullname_a = $a->getFullName('no_title'); + $fullname_b = $b->getFullName('no_title'); + if ($fullname_a == $fullname_b) { + return 0; + } + return ($fullname_a > $fullname_b) ? 1 : -1; + }); + foreach ($users as $user) { $events = CalendarDateAssignment::getEvents($begin, $end, $user->id); if ($events) { foreach ($events as $event) { $data = $event->toEventData(User::findCurrent()->id); - if (!$timeline_view) { - $data->title = $user->getFullName(); + if ($timeline_view) { + $result[] = $data->toFullcalendarEvent(); + } else { + //Prevent duplicate entries: + $data->title = $user->getFullName('no_title'); + if (array_key_exists($event->calendar_date_id, $result)) { + $result[$event->calendar_date_id]['title'] .= ', ' . $data->title; + } else { + $result[$event->calendar_date_id] = $data->toFullcalendarEvent(); + } } - $result[] = $data->toFullcalendarEvent(); } } } - $this->render_json($result); + if ($timeline_view) { + $this->render_json($result); + } else { + //Clean up the array keys: + $this->render_json(array_values($result)); + } } public function add_courses_action() |
