From a35b960c7a74c41f24910e3110c7a53a996a70e3 Mon Sep 17 00:00:00 2001 From: Richard Steinmetz Date: Wed, 1 Mar 2023 12:24:28 +0100 Subject: [PATCH] fix(caldav): harden null handling of iMip scheduling method Signed-off-by: Richard Steinmetz --- apps/dav/lib/CalDAV/Schedule/IMipPlugin.php | 21 +++++++++++++++----- apps/dav/lib/CalDAV/Schedule/IMipService.php | 10 +++++++--- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index 646cf0f831ace..ca79205c09f6a 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -209,9 +209,11 @@ public function schedule(Message $iTipMessage) { $senderName = $senderName->getValue() ?? null; } - if ($senderName === null || empty(trim($senderName))) { + // Try to get the sender name from the current user id if available. + if ($this->userId !== null && ($senderName === null || empty(trim($senderName)))) { $senderName = $this->userManager->getDisplayName($this->userId); } + $sender = substr($iTipMessage->sender, 7); switch (strtolower($iTipMessage->method)) { @@ -229,7 +231,6 @@ public function schedule(Message $iTipMessage) { break; } - $data['attendee_name'] = ($recipientName ?: $recipient); $data['invitee_name'] = ($senderName ?: $sender); @@ -237,9 +238,19 @@ public function schedule(Message $iTipMessage) { $fromName = $this->imipService->getFrom($senderName, $this->defaults->getName()); $message = $this->mailer->createMessage() - ->setFrom([$fromEMail => $fromName]) - ->setTo([$recipient => $recipientName]) - ->setReplyTo([$sender => $senderName]); + ->setFrom([$fromEMail => $fromName]); + + if ($recipientName !== null) { + $message->setTo([$recipient => $recipientName]); + } else { + $message->setTo([$recipient]); + } + + if ($senderName !== null) { + $message->setReplyTo([$sender => $senderName]); + } else { + $message->setReplyTo([$sender]); + } $template = $this->mailer->createEMailTemplate('dav.calendarInvite.' . $method, $data); $template->addHeader(); diff --git a/apps/dav/lib/CalDAV/Schedule/IMipService.php b/apps/dav/lib/CalDAV/Schedule/IMipService.php index 3e8e72bd2e488..50e770e6b4054 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipService.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipService.php @@ -70,11 +70,15 @@ public function __construct(URLGenerator $urlGenerator, } /** - * @param string $senderName - * @param $default + * @param string|null $senderName + * @param string $default * @return string */ - public function getFrom(string $senderName, $default): string { + public function getFrom(?string $senderName, string $default): string { + if ($senderName === null) { + return $default; + } + return $this->l10n->t('%1$s via %2$s', [$senderName, $default]); }