From daf2bba059fd373c7a20f982faf65c4572a8c326 Mon Sep 17 00:00:00 2001
From: Moritz Strohm <strohm@data-quest.de>
Date: Mon, 25 Mar 2024 08:49:01 +0000
Subject: [PATCH] CalendarDateAssignment::cbSendDateDeletedMail: name the user
 that deleted the date instead of the editor, fixes #3884

Closes #3884

Merge request studip/studip!2735
---
 lib/models/calendar/CalendarDateAssignment.class.php | 7 +++++--
 locale/de/LC_MAILS/_date_information.php             | 2 +-
 locale/de/LC_MAILS/date_deleted.php                  | 2 +-
 locale/en/LC_MAILS/_date_information.php             | 4 ++++
 locale/en/LC_MAILS/date_deleted.php                  | 2 +-
 5 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/models/calendar/CalendarDateAssignment.class.php b/lib/models/calendar/CalendarDateAssignment.class.php
index 4e084c2436e..18cd6101cb3 100644
--- a/lib/models/calendar/CalendarDateAssignment.class.php
+++ b/lib/models/calendar/CalendarDateAssignment.class.php
@@ -102,7 +102,9 @@ class CalendarDateAssignment extends SimpleORMap implements Event
         if ($this->suppress_mails) {
             return;
         }
-        if ($this->range_id === $this->calendar_date->editor_id) {
+        $actor = User::findCurrent() ?? $this->calendar_date->editor;
+        if ($this->range_id === $actor->id) {
+            //The user who deleted the date shall not get notified about this.
             return;
         }
         if (!$this->calendar_date || !$this->user) {
@@ -116,12 +118,13 @@ class CalendarDateAssignment extends SimpleORMap implements Event
         $lang_path = getUserLanguagePath($this->range_id);
         $template = $template_factory->open($lang_path . '/LC_MAILS/date_deleted.php');
         $template->set_attribute('date', $this->calendar_date);
+        $template->set_attribute('actor', $actor);
         $template->set_attribute('receiver', $this->user);
         $mail_text = $template->render();
         Message::send(
             '____%system%____',
             [$this->user->username],
-            sprintf(_('%s hat einen Termin im Kalender gelöscht'), $this->calendar_date->editor->getFullName()),
+            sprintf(_('%s hat einen Termin im Kalender gelöscht'), $actor->getFullName()),
             $mail_text
         );
 
diff --git a/locale/de/LC_MAILS/_date_information.php b/locale/de/LC_MAILS/_date_information.php
index 5eab14d55df..ac8e981483f 100644
--- a/locale/de/LC_MAILS/_date_information.php
+++ b/locale/de/LC_MAILS/_date_information.php
@@ -23,6 +23,6 @@
 <? endforeach ?>
 <? endif ?>
 
-<? if ($receiver_date_assignment) : ?>
+<? if (!empty($receiver_date_assignment)) : ?>
 **Ihre Teilnahme:** <?= $receiver_date_assignment->getParticipationAsString() ?>
 <? endif ?>
diff --git a/locale/de/LC_MAILS/date_deleted.php b/locale/de/LC_MAILS/date_deleted.php
index 0ff6ef80a9d..0f319d37f88 100644
--- a/locale/de/LC_MAILS/date_deleted.php
+++ b/locale/de/LC_MAILS/date_deleted.php
@@ -1,4 +1,4 @@
-<?= $date->editor->getFullName() ?> hat einen Termin im Kalender gelöscht.
+<?= $actor->getFullName() ?> hat einen Termin im Kalender gelöscht.
 
 <?= $this->render_partial(__DIR__ . '/_date_information', [
     'date' => $date,
diff --git a/locale/en/LC_MAILS/_date_information.php b/locale/en/LC_MAILS/_date_information.php
index a0cb470287c..0619261adb9 100644
--- a/locale/en/LC_MAILS/_date_information.php
+++ b/locale/en/LC_MAILS/_date_information.php
@@ -22,3 +22,7 @@
 - <?= $participant_string ?>
 <? endforeach ?>
 <? endif ?>
+
+<? if (!empty($receiver_date_assignment)) : ?>
+**Your participation:** <?= $receiver_date_assignment->getParticipationAsString() ?>
+<? endif ?>
diff --git a/locale/en/LC_MAILS/date_deleted.php b/locale/en/LC_MAILS/date_deleted.php
index b4bafd66c40..91ef248c32d 100644
--- a/locale/en/LC_MAILS/date_deleted.php
+++ b/locale/en/LC_MAILS/date_deleted.php
@@ -1,4 +1,4 @@
-<?= $date->editor->getFullName() ?> has deleted a date in the calendar.
+<?= $actor->getFullName() ?> has deleted a date in the calendar.
 
 <?= $this->render_partial(__DIR__ . '/_date_information', [
     'date' => $date,
-- 
GitLab