From 9b30b87617cfe7fc8de837ca4095295e2e79ec3c Mon Sep 17 00:00:00 2001 From: Moritz Strohm <strohm@data-quest.de> Date: Wed, 13 Nov 2024 11:34:36 +0000 Subject: [PATCH] calendar/date/delete: fixed check for figuring out if a date shall be deleted, fixes #4291 #4726 Closes #4291 and #4726 Merge request studip/studip!3638 --- app/controllers/calendar/date.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/controllers/calendar/date.php b/app/controllers/calendar/date.php index c812cb1ae82..a3a80f14673 100644 --- a/app/controllers/calendar/date.php +++ b/app/controllers/calendar/date.php @@ -792,7 +792,11 @@ class Calendar_DateController extends AuthenticatedController ); $this->render_nothing(); } - $this->date_has_repetitions = !empty($this->date->repetition_type); + if (!$this->date->isWritable($GLOBALS['user']->id)) { + throw new AccessDeniedException(_('Sie sind nicht berechtigt, diesen Termin zu löschen.')); + } + + $this->date_has_repetitions = $this->date->repetition_type !== CalendarDate::REPETITION_SINGLE; $this->selected_date = null; if ($this->date_has_repetitions) { $this->selected_date = Request::getDateTime('selected_date'); @@ -835,7 +839,8 @@ class Calendar_DateController extends AuthenticatedController $delete_whole_date = true; } } else { - $delete_whole_date = $this->multiple_calendar_handling === 'delete_all'; + $delete_whole_date = !$this->date_is_in_multiple_calendars + || $this->multiple_calendar_handling === 'delete_all'; } if ($delete_whole_date) { if ($this->date->delete()) { -- GitLab