diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index ed8354292436c43fbe0463bdff7d31db42410ccc..4f68e7014bfe8b832c81919ec7adffbcc2e410a6 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -32,15 +32,13 @@ class InvitationMiddleware extends Middleware "meeting_head" => "Tentatively Accepted", ], "accept" => [ - "meeting_title" => "Invitation Tentatively Accepted: %s", - "meeting_body" => - "%s has tentatively accepted your invitation to %s on %s", + "meeting_title" => "Invitation Accepted: %s", + "meeting_body" => "%s has accepted your invitation to %s on %s", "meeting_head" => "Accepted", ], "decline" => [ - "meeting_title" => "Invitation Tentatively Accepted: %s", - "meeting_body" => - "%s has tentatively accepted your invitation to %s on %s", + "meeting_title" => "Invitation Declined: %s", + "meeting_body" => "%s has declined your invitation to %s on %s", "meeting_head" => "Declined", ], ]; @@ -93,6 +91,15 @@ class InvitationMiddleware extends Middleware "meeting_head" => $meetingHead, ]; } + private function extract_emails_from($string) + { + $matches = []; + $found = preg_match("/mailto:(.*)/i", $string, $matches); + if ($found === 1) { + return $matches[1]; + } + return ""; + } public function afterController( $controller, $methodName, @@ -123,10 +130,9 @@ class InvitationMiddleware extends Middleware ); $stmt = $queryCalendarInvitations->execute(); $row = $stmt->fetch(\PDO::FETCH_ASSOC); - $uid = $row["uid"]; - $sender = substr($row["attendee"], 7); - $recipient = substr($row["organizer"], 7); + $sender = $this->extract_emails_from($row["attendee"]); + $recipient = $this->extract_emails_from($row["organizer"]); $userdata = $this->iusermanager->getByEmail($recipient); if (count($userdata) > 0) { $username = $userdata[0]->getUID(); @@ -164,16 +170,26 @@ class InvitationMiddleware extends Middleware ) ); $stmt2 = $queryCalendarObjects->execute(); + if ($row2 = $stmt2->fetch(\PDO::FETCH_ASSOC)) { $vObject = Reader::read($row2["calendardata"]); - $SUMMARY = $vObject->VEVENT->SUMMARY; - $datestart = (string) $vObject->VEVENT->DTSTART; - $attendeeName = empty($vObject->VEVENT->ATTENDEE["CN"]) - ? $sender - : $vObject->VEVENT->ATTENDEE["CN"]; - $organizername = empty($vObject->VEVENT->ORGANIZER["CN"]) + + foreach ($vObject->VEVENT->ATTENDEE as $attendee1) { + $attendee = $this->extract_emails_from($attendee1); + + if ($attendee == $sender) { + $attendeeName = empty($attendee1["CN"]) + ? $sender + : $attendee1["CN"]; + break; + } + } + $organizerName = empty($vObject->VEVENT->ORGANIZER["CN"]) ? $recipient : $vObject->VEVENT->ORGANIZER["CN"]; + + $SUMMARY = $vObject->VEVENT->SUMMARY; + $datestart = (string) $vObject->VEVENT->DTSTART; if (str_contains($datestart, "T")) { $eventdate = date("F d, Y h:i", strtotime($datestart)); } else { @@ -210,13 +226,13 @@ class InvitationMiddleware extends Middleware $emailTemplate->addHeading($translations["meeting_head"]); $emailTemplate->addBodyText( htmlspecialchars($translations["meeting_body"]), - $mailbodytext + $translations["meeting_body"] ); $emailTemplate->addFooter(); try { $message = $this->mailer->createMessage(); - $message->setTo([$recipient => $organizername]); - $message->setReplyTo([$sender => $attendeename]); + $message->setTo([$recipient => $organizerName]); + $message->setReplyTo([$sender => $attendeeName]); $message->useTemplate($emailTemplate); $this->mailer->send($message); } catch (\Exception $e) { @@ -226,6 +242,7 @@ class InvitationMiddleware extends Middleware } } } + return $response; } }