Loading lib/Middleware/InvitationMiddleware.php +152 −151 Original line number Diff line number Diff line Loading @@ -24,6 +24,26 @@ class InvitationMiddleware extends Middleware private $request; /** @var IManager */ private $calendarManager; private const translations = [ "tentative" => [ "meeting_title" => "Invitation Tentatively Accepted: %s", "meeting_body" => "%s has tentatively accepted your invitation to %s on %s", "meeting_head" => "Tentatively Accepted", ], "accept" => [ "meeting_title" => "Invitation Tentatively Accepted: %s", "meeting_body" => "%s has tentatively 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_head" => "Declined", ], ]; public function __construct( IRequest $request, Loading @@ -48,7 +68,31 @@ class InvitationMiddleware extends Middleware $this->iusermanager = $iusermanager; $this->languageFactory = $languageFactory; } private function getMailAttributes( string $methodName, array $translationData ) { $meetingTitle = $this->l10n->t( self::translations[$methodName]["meeting_title"], $translationData["summary"] ); $meetingBody = $this->l10n->t( self::translations[$methodName]["meeting_body"], [ $translationData["attendee_name"], $translationData["summary"], $translationData["event_date"], ] ); $meetingHead = $this->l10n->t( self::translations[$methodName]["meeting_head"] ); return [ "meeting_title" => $meetingTitle, "meeting_body" => $meetingBody, "meeting_head" => $meetingHead, ]; } public function afterController( $controller, $methodName, Loading @@ -63,153 +107,109 @@ class InvitationMiddleware extends Middleware $response->getTemplateName() == "schedule-response-success") ) { $token = $this->request->getParam("token"); $query = $this->db->getQueryBuilder(); $query ->select("*") $queryCalendarInvitations = $this->db->getQueryBuilder(); $queryCalendarInvitations ->select("id", "uid", "attendee", "organizer") ->from("calendar_invitations") ->where( $query $queryCalendarInvitations ->expr() ->eq("token", $query->createNamedParameter($token)) ->eq( "token", $queryCalendarInvitations->createNamedParameter( $token ) ) ); $stmt = $query->execute(); $stmt = $queryCalendarInvitations->execute(); $row = $stmt->fetch(\PDO::FETCH_ASSOC); $uid = $row["uid"]; $sender = substr($row["attendee"], 7); $recipient = substr($row["organizer"], 7); $query2 = $this->db->getQueryBuilder(); $query2 ->select("*") ->from("calendarobjects") ->where( $query $userdata = $this->iusermanager->getByEmail($recipient); if (count($userdata) > 0) { $username = $userdata[0]->getUID(); $principaluri = "principals/users/" . $username; $queryCalendarObjects = $this->db->getQueryBuilder(); $queryCalendarObjects ->select("co.id", "co.calendardata") ->from("calendarobjects", "co") ->innerJoin( "co", "calendars", "c", $queryCalendarObjects ->expr() ->eq("uid", $query2->createNamedParameter($uid)) ); $stmt2 = $query2->execute(); $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); $calendarobjectid = $row2["id"]; $query3 = $this->db->getQueryBuilder(); $query3 ->select("*") ->from("calendarobjects_props") ->eq("co.calendarid", "c.id") ) ->where( $query3 $queryCalendarObjects ->expr() ->eq( "c.principaluri", $queryCalendarObjects->createNamedParameter( $principaluri ) ) ) ->andWhere( $queryCalendarObjects ->expr() ->eq( "objectid", $query3->createNamedParameter($calendarobjectid) "co.uid", $queryCalendarObjects->createNamedParameter( $uid ) ) ); $stmt3 = $query3->execute(); $row3 = $stmt3->fetchAll(\PDO::FETCH_ASSOC); foreach ($row3 as $calendarobj1) { if ( $calendarobj1["parameter"] == "CN" && $calendarobj1["name"] == "ATTENDEE" ) { $attendeename = $calendarobj1["value"]; } if ( $calendarobj1["parameter"] == "CN" && $calendarobj1["name"] == "ORGANIZER" ) { $organizername = $calendarobj1["value"]; } } $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"]) ? $recipient : $vObject->VEVENT->ORGANIZER["CN"]; if (str_contains($datestart, "T")) { $eventdate = date("F d, Y h:i", strtotime($datestart)); } else { $eventdate = date("F d, Y", strtotime($datestart)); } if ($attendeename == "") { $attendeename = $sender; } if ($organizername == "") { $organizername = $recipient; } $userdata = $this->iusermanager->getByEmail($recipient); $username = $userdata[0]->getUID(); $userlang = $this->languageFactory->getUserLanguage($userdata[0]); if ($methodName === "tentative") { $meetingTitle = $this->l10n->t("Invitation Tentatively Accepted: %s", [$SUMMARY] ); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, "meeting_title" => (string) $meetingTitle ?: $defaultVal, ]; $method = "reply"; $emailTemplate = $this->mailer->createEMailTemplate( "dav.calendarInvite." . $method, $data ); $emailTemplate->setSubject($this->l10n->t("Invitation Tentatively Accepted: %s",[$SUMMARY])); $emailTemplate->addHeader(); $emailTemplate->addHeading( $this->l10n->t("Tentatively Accepted") ); $mailbodytext = $this->l10n->t( "%s has tentatively accepted your invitation to %s on %s", [$attendeename, $SUMMARY, $eventdate] ); } if ($methodName === "accept") { $meetingTitle = $this->l10n->t("Invitation Accepted: %s", [$SUMMARY]); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, "meeting_title" => (string) $meetingTitle ?: $defaultVal, $translationData = [ "summary" => $SUMMARY, "attendee_name" => $attendeeName, "event_date" => $eventdate, ]; $method = "reply"; $emailTemplate = $this->mailer->createEMailTemplate( $recipient, $data ); $emailTemplate->setSubject($this->l10n->t("Invitation Accepted: %s", [$SUMMARY])); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l10n->t("Accepted")); $mailbodytext = $this->l10n->t( "%s has accepted your invitation to %s on %s", [$attendeename, $SUMMARY, $eventdate] $translations = $this->getMailAttributes( $methodName, $translationData ); } if ($methodName === "decline") { $meetingTitle = $this->l10n->t("Invitation Declined: %s", [$SUMMARY]); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, "meeting_title" => (string) $meetingTitle ?: $defaultVal, "meeting_title" => (string) $translations["meeting_title"] ?: $defaultVal, ]; $method = "reply"; $emailTemplate = $this->mailer->createEMailTemplate( "dav.calendarInvite." . $method, $data ); $emailTemplate->setSubject($this->l10n->t("Invitation Declined: %s", [$SUMMARY])); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l10n->t("Declined")); $mailbodytext = $this->l10n->t( "%s has declined your invitation to %s on %s", [$attendeename, $SUMMARY, $eventdate] $emailTemplate->setSubject( $this->l10n->t($translations["meeting_title"], [ $SUMMARY, ]) ); } $emailTemplate->addHeader(); $emailTemplate->addHeading($translations["meeting_head"]); $emailTemplate->addBodyText( htmlspecialchars($mailbodytext), htmlspecialchars($translations["meeting_body"]), $mailbodytext ); $emailTemplate->addFooter(); Loading @@ -224,7 +224,8 @@ class InvitationMiddleware extends Middleware $this->logger->logException($e); } } } } return $response; } } Loading
lib/Middleware/InvitationMiddleware.php +152 −151 Original line number Diff line number Diff line Loading @@ -24,6 +24,26 @@ class InvitationMiddleware extends Middleware private $request; /** @var IManager */ private $calendarManager; private const translations = [ "tentative" => [ "meeting_title" => "Invitation Tentatively Accepted: %s", "meeting_body" => "%s has tentatively accepted your invitation to %s on %s", "meeting_head" => "Tentatively Accepted", ], "accept" => [ "meeting_title" => "Invitation Tentatively Accepted: %s", "meeting_body" => "%s has tentatively 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_head" => "Declined", ], ]; public function __construct( IRequest $request, Loading @@ -48,7 +68,31 @@ class InvitationMiddleware extends Middleware $this->iusermanager = $iusermanager; $this->languageFactory = $languageFactory; } private function getMailAttributes( string $methodName, array $translationData ) { $meetingTitle = $this->l10n->t( self::translations[$methodName]["meeting_title"], $translationData["summary"] ); $meetingBody = $this->l10n->t( self::translations[$methodName]["meeting_body"], [ $translationData["attendee_name"], $translationData["summary"], $translationData["event_date"], ] ); $meetingHead = $this->l10n->t( self::translations[$methodName]["meeting_head"] ); return [ "meeting_title" => $meetingTitle, "meeting_body" => $meetingBody, "meeting_head" => $meetingHead, ]; } public function afterController( $controller, $methodName, Loading @@ -63,153 +107,109 @@ class InvitationMiddleware extends Middleware $response->getTemplateName() == "schedule-response-success") ) { $token = $this->request->getParam("token"); $query = $this->db->getQueryBuilder(); $query ->select("*") $queryCalendarInvitations = $this->db->getQueryBuilder(); $queryCalendarInvitations ->select("id", "uid", "attendee", "organizer") ->from("calendar_invitations") ->where( $query $queryCalendarInvitations ->expr() ->eq("token", $query->createNamedParameter($token)) ->eq( "token", $queryCalendarInvitations->createNamedParameter( $token ) ) ); $stmt = $query->execute(); $stmt = $queryCalendarInvitations->execute(); $row = $stmt->fetch(\PDO::FETCH_ASSOC); $uid = $row["uid"]; $sender = substr($row["attendee"], 7); $recipient = substr($row["organizer"], 7); $query2 = $this->db->getQueryBuilder(); $query2 ->select("*") ->from("calendarobjects") ->where( $query $userdata = $this->iusermanager->getByEmail($recipient); if (count($userdata) > 0) { $username = $userdata[0]->getUID(); $principaluri = "principals/users/" . $username; $queryCalendarObjects = $this->db->getQueryBuilder(); $queryCalendarObjects ->select("co.id", "co.calendardata") ->from("calendarobjects", "co") ->innerJoin( "co", "calendars", "c", $queryCalendarObjects ->expr() ->eq("uid", $query2->createNamedParameter($uid)) ); $stmt2 = $query2->execute(); $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); $calendarobjectid = $row2["id"]; $query3 = $this->db->getQueryBuilder(); $query3 ->select("*") ->from("calendarobjects_props") ->eq("co.calendarid", "c.id") ) ->where( $query3 $queryCalendarObjects ->expr() ->eq( "c.principaluri", $queryCalendarObjects->createNamedParameter( $principaluri ) ) ) ->andWhere( $queryCalendarObjects ->expr() ->eq( "objectid", $query3->createNamedParameter($calendarobjectid) "co.uid", $queryCalendarObjects->createNamedParameter( $uid ) ) ); $stmt3 = $query3->execute(); $row3 = $stmt3->fetchAll(\PDO::FETCH_ASSOC); foreach ($row3 as $calendarobj1) { if ( $calendarobj1["parameter"] == "CN" && $calendarobj1["name"] == "ATTENDEE" ) { $attendeename = $calendarobj1["value"]; } if ( $calendarobj1["parameter"] == "CN" && $calendarobj1["name"] == "ORGANIZER" ) { $organizername = $calendarobj1["value"]; } } $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"]) ? $recipient : $vObject->VEVENT->ORGANIZER["CN"]; if (str_contains($datestart, "T")) { $eventdate = date("F d, Y h:i", strtotime($datestart)); } else { $eventdate = date("F d, Y", strtotime($datestart)); } if ($attendeename == "") { $attendeename = $sender; } if ($organizername == "") { $organizername = $recipient; } $userdata = $this->iusermanager->getByEmail($recipient); $username = $userdata[0]->getUID(); $userlang = $this->languageFactory->getUserLanguage($userdata[0]); if ($methodName === "tentative") { $meetingTitle = $this->l10n->t("Invitation Tentatively Accepted: %s", [$SUMMARY] ); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, "meeting_title" => (string) $meetingTitle ?: $defaultVal, ]; $method = "reply"; $emailTemplate = $this->mailer->createEMailTemplate( "dav.calendarInvite." . $method, $data ); $emailTemplate->setSubject($this->l10n->t("Invitation Tentatively Accepted: %s",[$SUMMARY])); $emailTemplate->addHeader(); $emailTemplate->addHeading( $this->l10n->t("Tentatively Accepted") ); $mailbodytext = $this->l10n->t( "%s has tentatively accepted your invitation to %s on %s", [$attendeename, $SUMMARY, $eventdate] ); } if ($methodName === "accept") { $meetingTitle = $this->l10n->t("Invitation Accepted: %s", [$SUMMARY]); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, "meeting_title" => (string) $meetingTitle ?: $defaultVal, $translationData = [ "summary" => $SUMMARY, "attendee_name" => $attendeeName, "event_date" => $eventdate, ]; $method = "reply"; $emailTemplate = $this->mailer->createEMailTemplate( $recipient, $data ); $emailTemplate->setSubject($this->l10n->t("Invitation Accepted: %s", [$SUMMARY])); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l10n->t("Accepted")); $mailbodytext = $this->l10n->t( "%s has accepted your invitation to %s on %s", [$attendeename, $SUMMARY, $eventdate] $translations = $this->getMailAttributes( $methodName, $translationData ); } if ($methodName === "decline") { $meetingTitle = $this->l10n->t("Invitation Declined: %s", [$SUMMARY]); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, "meeting_title" => (string) $meetingTitle ?: $defaultVal, "meeting_title" => (string) $translations["meeting_title"] ?: $defaultVal, ]; $method = "reply"; $emailTemplate = $this->mailer->createEMailTemplate( "dav.calendarInvite." . $method, $data ); $emailTemplate->setSubject($this->l10n->t("Invitation Declined: %s", [$SUMMARY])); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l10n->t("Declined")); $mailbodytext = $this->l10n->t( "%s has declined your invitation to %s on %s", [$attendeename, $SUMMARY, $eventdate] $emailTemplate->setSubject( $this->l10n->t($translations["meeting_title"], [ $SUMMARY, ]) ); } $emailTemplate->addHeader(); $emailTemplate->addHeading($translations["meeting_head"]); $emailTemplate->addBodyText( htmlspecialchars($mailbodytext), htmlspecialchars($translations["meeting_body"]), $mailbodytext ); $emailTemplate->addFooter(); Loading @@ -224,7 +224,8 @@ class InvitationMiddleware extends Middleware $this->logger->logException($e); } } } } return $response; } }