From b27c896200662d087fe449aa963c68ba98d06430 Mon Sep 17 00:00:00 2001 From: Anna Larch Date: Fri, 7 Apr 2023 15:07:20 +0200 Subject: [PATCH] fix(dav): Parse sender PARTSTAT in REPLYs Signed-off-by: Anna Larch --- apps/dav/lib/CalDAV/Schedule/IMipPlugin.php | 2 ++ apps/dav/lib/CalDAV/Schedule/IMipService.php | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index ca79205c09f6a..d1cb48c06cbec 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -216,10 +216,12 @@ public function schedule(Message $iTipMessage) { $sender = substr($iTipMessage->sender, 7); + $replyingAttendee = null; switch (strtolower($iTipMessage->method)) { case self::METHOD_REPLY: $method = self::METHOD_REPLY; $data = $this->imipService->buildBodyData($vEvent, $oldVevent); + $replyingAttendee = $this->imipService->getReplyingAttendee($iTipMessage); break; case self::METHOD_CANCEL: $method = self::METHOD_CANCEL; diff --git a/apps/dav/lib/CalDAV/Schedule/IMipService.php b/apps/dav/lib/CalDAV/Schedule/IMipService.php index 4caf801bf2dfc..dd24613adbd78 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipService.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipService.php @@ -598,4 +598,17 @@ public function addMoreOptionsButton(IEMailTemplate $template, $token) { $template->addBodyText($html, $text); } + + public function getReplyingAttendee(Message $iTipMessage): ?Property { + /** @var VEvent $vevent */ + $vevent = $iTipMessage->message->VEVENT; + $attendees = $vevent->select('ATTENDEE'); + foreach ($attendees as $attendee) { + /** @var Property $attendee */ + if (strcasecmp($attendee->getValue(), $iTipMessage->sender) === 0) { + return $attendee; + } + } + return null; + } }