aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/calendar/calendar.php
diff options
context:
space:
mode:
authorMoritz Strohm <strohm@data-quest.de>2024-03-22 13:54:57 +0000
committerMoritz Strohm <strohm@data-quest.de>2024-03-22 13:54:57 +0000
commit14efe428dac4ec824060d19c5e493a45f5ba4ed8 (patch)
treef438a1c5258e94936fee347ccaddee49eaafbeb4 /app/controllers/calendar/calendar.php
parent46b7d7e771fbaaf6fa2843b8fd3ae0a82346e779 (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.php29
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()