]> source.dussan.org Git - nextcloud-server.git/commitdiff
Invitation mail: Change subject if event got updated 36661/head
authorJonas Heinrich <heinrich@synyx.de>
Fri, 10 Feb 2023 12:41:40 +0000 (13:41 +0100)
committerJonas Heinrich <heinrich@synyx.de>
Mon, 20 Feb 2023 12:53:53 +0000 (13:53 +0100)
Signed-off-by: Jonas Heinrich <heinrich@synyx.de>
apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
apps/dav/lib/CalDAV/Schedule/IMipService.php
apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php

index d4c2976fc1a586cd8f5995ee5c5f63839974f59a..f50fc906cf7e3523c94f47835bcd0a892f37d536 100644 (file)
@@ -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
index 3e8e72bd2e4884fdd72a59ff7a1e73ddeb8ff059..60c4643ac646c60b9cd79b449c186121309b30d3 100644 (file)
@@ -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]));
index fdd707247acdf2d7fc08c95f2778ee70081b1a37..bf28fb472a85296d8609c3c40a3aa46ee1a08ee1 100644 (file)
@@ -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);