summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJonas Heinrich <heinrich@synyx.de>2023-02-10 13:41:40 +0100
committerJonas Heinrich <heinrich@synyx.de>2023-02-20 13:53:53 +0100
commit944efa388aed137937dfd21ef795d83a9b2b2ce7 (patch)
tree2a4b2bc52fa99de5a6eb06d49cdc6b9d241bc3f5 /apps
parent95eeba83b6570b3cf7cbb79aea42222f7d3e03f4 (diff)
downloadnextcloud-server-944efa388aed137937dfd21ef795d83a9b2b2ce7.tar.gz
nextcloud-server-944efa388aed137937dfd21ef795d83a9b2b2ce7.zip
Invitation mail: Change subject if event got updated
Signed-off-by: Jonas Heinrich <heinrich@synyx.de>
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CalDAV/Schedule/IMipPlugin.php4
-rw-r--r--apps/dav/lib/CalDAV/Schedule/IMipService.php7
-rw-r--r--apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php10
3 files changed, 13 insertions, 8 deletions
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
index d4c2976fc1a..f50fc906cf7 100644
--- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
+++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
@@ -183,6 +183,7 @@ class IMipPlugin extends SabreIMipPlugin {
$vEvent = array_pop($modified['new']);
/** @var VEvent $oldVevent */
$oldVevent = !empty($modified['old']) && is_array($modified['old']) ? array_pop($modified['old']) : null;
+ $isModified = isset($oldVevent);
// No changed events after all - this shouldn't happen if there is significant change yet here we are
// The scheduling status is debatable
@@ -229,7 +230,6 @@ class IMipPlugin extends SabreIMipPlugin {
break;
}
-
$data['attendee_name'] = ($recipientName ?: $recipient);
$data['invitee_name'] = ($senderName ?: $sender);
@@ -244,7 +244,7 @@ class IMipPlugin extends SabreIMipPlugin {
$template = $this->mailer->createEMailTemplate('dav.calendarInvite.' . $method, $data);
$template->addHeader();
- $this->imipService->addSubjectAndHeading($template, $method, $data['invitee_name'], $data['meeting_title']);
+ $this->imipService->addSubjectAndHeading($template, $method, $data['invitee_name'], $data['meeting_title'], $isModified);
$this->imipService->addBulletList($template, $vEvent, $data);
// Only add response buttons to invitation requests: Fix Issue #11230
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipService.php b/apps/dav/lib/CalDAV/Schedule/IMipService.php
index 3e8e72bd2e4..60c4643ac64 100644
--- a/apps/dav/lib/CalDAV/Schedule/IMipService.php
+++ b/apps/dav/lib/CalDAV/Schedule/IMipService.php
@@ -359,9 +359,10 @@ class IMipService {
* @param string $sender
* @param string $summary
* @param string|null $partstat
+ * @param bool $isModified
*/
public function addSubjectAndHeading(IEMailTemplate $template,
- string $method, string $sender, string $summary): void {
+ string $method, string $sender, string $summary, bool $isModified): void {
if ($method === IMipPlugin::METHOD_CANCEL) {
// TRANSLATORS Subject for email, when an invitation is cancelled. Ex: "Cancelled: {{Event Name}}"
$template->setSubject($this->l10n->t('Cancelled: %1$s', [$summary]));
@@ -370,6 +371,10 @@ class IMipService {
// TRANSLATORS Subject for email, when an invitation is replied to. Ex: "Re: {{Event Name}}"
$template->setSubject($this->l10n->t('Re: %1$s', [$summary]));
$template->addHeading($this->l10n->t('%1$s has responded to your invitation', [$sender]));
+ } elseif ($method === IMipPlugin::METHOD_REQUEST && $isModified) {
+ // TRANSLATORS Subject for email, when an invitation is updated. Ex: "Invitation updated: {{Event Name}}"
+ $template->setSubject($this->l10n->t('Invitation updated: %1$s', [$summary]));
+ $template->addHeading($this->l10n->t('%1$s updated the event "%2$s"', [$sender, $summary]));
} else {
// TRANSLATORS Subject for email, when an invitation is sent. Ex: "Invitation: {{Event Name}}"
$template->setSubject($this->l10n->t('Invitation: %1$s', [$summary]));
diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
index fdd707247ac..bf28fb472a8 100644
--- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
+++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
@@ -204,7 +204,7 @@ class IMipPluginTest extends TestCase {
->method('getFrom');
$this->service->expects(self::once())
->method('addSubjectAndHeading')
- ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting without (!) Boromir');
+ ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting without (!) Boromir', true);
$this->service->expects(self::once())
->method('addBulletList')
->with($this->emailTemplate, $newVevent, $data);
@@ -296,7 +296,7 @@ class IMipPluginTest extends TestCase {
->method('getFrom');
$this->service->expects(self::once())
->method('addSubjectAndHeading')
- ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Elevenses');
+ ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Elevenses', false);
$this->service->expects(self::once())
->method('addBulletList')
->with($this->emailTemplate, $newVevent, $data);
@@ -405,7 +405,7 @@ class IMipPluginTest extends TestCase {
->method('getFrom');
$this->service->expects(self::once())
->method('addSubjectAndHeading')
- ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting without (!) Boromir');
+ ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting without (!) Boromir', false);
$this->service->expects(self::once())
->method('addBulletList')
->with($this->emailTemplate, $newVevent, $data);
@@ -480,7 +480,7 @@ class IMipPluginTest extends TestCase {
->method('getFrom');
$this->service->expects(self::once())
->method('addSubjectAndHeading')
- ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting');
+ ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting', false);
$this->service->expects(self::once())
->method('addBulletList')
->with($this->emailTemplate, $newVevent, $data);
@@ -553,7 +553,7 @@ class IMipPluginTest extends TestCase {
->method('getFrom');
$this->service->expects(self::once())
->method('addSubjectAndHeading')
- ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting');
+ ->with($this->emailTemplate, 'request', 'Mr. Wizard', 'Fellowship meeting', false);
$this->service->expects(self::once())
->method('addBulletList')
->with($this->emailTemplate, $newVevent, $data);