diff --git a/app/controllers/calendar/calendar.php b/app/controllers/calendar/calendar.php index 6ae77ebb0850f93fa9fad315f2cc0e9291e4569d..a2b42e6aa7a4fbcbe836e5f338f0403655351277 100644 --- a/app/controllers/calendar/calendar.php +++ b/app/controllers/calendar/calendar.php @@ -613,19 +613,43 @@ class Calendar_CalendarController extends AuthenticatedController $result = []; + uasort($users, function(User $a, User $b) { + $fullname_a = $a->getFullName(); + $fullname_b = $b->getFullName(); + if ($fullname_a < $fullname_b) { + return -1; + } elseif ($fullname_a > $fullname_b) { + return 1; + } else { + return 0; + } + }); + 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) { + if ($timeline_view) { + $result[] = $data->toFullcalendarEvent(); + } else { + //Prevent duplicate entries: $data->title = $user->getFullName(); + 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()