diff --git a/apps/dav/lib/CalDAV/Reminder/INotificationProvider.php b/apps/dav/lib/CalDAV/Reminder/INotificationProvider.php index 3ce05476ff..69118c67d1 100644 --- a/apps/dav/lib/CalDAV/Reminder/INotificationProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/INotificationProvider.php @@ -44,9 +44,11 @@ interface INotificationProvider { * @param VEvent $vevent * @param string $calendarDisplayName * @param IUser[] $users + * @param IUser $reminderOwner * @return void */ public function send(VEvent $vevent, string $calendarDisplayName, - array $users = []): void; + array $users = [], + IUser $reminderOwner = null): void; } diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php index 5b46271f45..f15688cd21 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/AbstractProvider.php @@ -91,11 +91,13 @@ abstract class AbstractProvider implements INotificationProvider { * @param VEvent $vevent * @param string $calendarDisplayName * @param IUser[] $users + * @param IUser $reminderOwner * @return void */ abstract public function send(VEvent $vevent, string $calendarDisplayName, - array $users = []): void; + array $users = [], + IUser $reminderOwner = null): void; /** * @return string diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php index 38c875315b..056b633dc6 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php @@ -37,6 +37,7 @@ use OCP\IConfig; use OCP\IL10N; use OCP\ILogger; use OCP\IURLGenerator; +use OCP\IUser; use OCP\L10N\IFactory as L10NFactory; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; @@ -80,15 +81,24 @@ class EmailProvider extends AbstractProvider { * @param VEvent $vevent * @param string $calendarDisplayName * @param array $users + * @param IUser $reminderOwner * @throws \Exception */ public function send(VEvent $vevent, string $calendarDisplayName, - array $users = []):void { + array $users = [], + IUser $reminderOwner = null):void { $fallbackLanguage = $this->getFallbackLanguage(); $emailAddressesOfSharees = $this->getEMailAddressesOfAllUsersWithWriteAccessToCalendar($users); - $emailAddressesOfAttendees = $this->getAllEMailAddressesFromEvent($vevent); + + $organizer = $this->getOrganizerEMailAndNameFromEvent($vevent); + + $emailAddressesOfAttendees = []; + + if ($organizer !== null && $reminderOwner instanceof IUser && strcasecmp($reminderOwner->getEMailAddress(), key($organizer)) === 0) { + $emailAddressesOfAttendees = $this->getAllEMailAddressesFromEvent($vevent); + } // Quote from php.net: // If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. @@ -99,7 +109,6 @@ class EmailProvider extends AbstractProvider { ); $sortedByLanguage = $this->sortEMailAddressesByLanguage($emailAddresses, $fallbackLanguage); - $organizer = $this->getOrganizerEMailAndNameFromEvent($vevent); foreach ($sortedByLanguage as $lang => $emailAddresses) { if (!$this->hasL10NForLang($lang)) { diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php index 6db3ca563a..72c39cc904 100644 --- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php +++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php @@ -83,11 +83,13 @@ class PushProvider extends AbstractProvider { * @param VEvent $vevent * @param string $calendarDisplayName * @param IUser[] $users + * @param IUser $reminderOwner * @throws \Exception */ public function send(VEvent $vevent, string $calendarDisplayName = null, - array $users = []):void { + array $users = [], + IUser $reminderOwner = null):void { if ($this->config->getAppValue('dav', 'sendEventRemindersPush', 'no') !== 'yes') { return; } diff --git a/apps/dav/lib/CalDAV/Reminder/ReminderService.php b/apps/dav/lib/CalDAV/Reminder/ReminderService.php index 83fe413c0e..2c31001e33 100644 --- a/apps/dav/lib/CalDAV/Reminder/ReminderService.php +++ b/apps/dav/lib/CalDAV/Reminder/ReminderService.php @@ -142,13 +142,13 @@ class ReminderService { } $users = $this->getAllUsersWithWriteAccessToCalendar($reminder['calendar_id']); - $user = $this->getUserFromPrincipalURI($reminder['principaluri']); - if ($user) { - $users[] = $user; + $userOfReminder = $this->getUserFromPrincipalURI($reminder['principaluri']); + if ($userOfReminder) { + $users[] = $userOfReminder; } $notificationProvider = $this->notificationProviderManager->getProvider($reminder['type']); - $notificationProvider->send($vevent, $reminder['displayname'], $users); + $notificationProvider->send($vevent, $reminder['displayname'], $users, $userOfReminder); $this->deleteOrProcessNext($reminder, $vevent); }