From 68e146d9cc5f6018d66ea058ce10f7e23a1ad286 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Tue, 7 Jun 2022 14:43:06 +0530 Subject: [PATCH 1/9] invitation loading issue fix --- lib/Middleware/InvitationMiddleware.php | 73 ++++++++++++++++++++----- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 3730a5307..df96320e9 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -78,18 +78,50 @@ class InvitationMiddleware extends Middleware $uid = $row["uid"]; $sender = substr($row["attendee"], 7); $recipient = substr($row["organizer"], 7); - - $query2 = $this->db->getQueryBuilder(); - $query2 + $userdata = $this->iusermanager->getByEmail($recipient); + $username = $userdata[0]->getUID(); + $principaluri = "principals/users/" . $username; + $querycal = $this->db->getQueryBuilder(); + $querycal ->select("*") - ->from("calendarobjects") + ->from("calendars") ->where( $query ->expr() - ->eq("uid", $query2->createNamedParameter($uid)) + ->eq( + "principaluri", + $querycal->createNamedParameter($principaluri) + ) ); - $stmt2 = $query2->execute(); - $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); + $stmtcal = $querycal->execute(); + $rowcal = $stmtcal->fetchAll(\PDO::FETCH_ASSOC); + foreach ($rowcal as $caldata) { + $calid = $caldata["id"]; + $query2 = $this->db->getQueryBuilder(); + $query2 + ->select("*") + ->from("calendarobjects") + ->where( + $query + ->expr() + ->eq( + "calendarid", + $query2->createNamedParameter($calid) + ) + ) + ->where( + $query + ->expr() + ->eq("uid", $query2->createNamedParameter($uid)) + ); + $stmt2 = $query2->execute(); + $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); + + if ($row2) { + break; + } + } + $calendarobjectid = $row2["id"]; $query3 = $this->db->getQueryBuilder(); @@ -143,7 +175,10 @@ class InvitationMiddleware extends Middleware $userlang = $this->languageFactory->getUserLanguage($userdata[0]); if ($methodName === "tentative") { - $meetingTitle = $this->l10n->t("Invitation Tentatively Accepted: %s", [$SUMMARY] ); + $meetingTitle = $this->l10n->t( + "Invitation Tentatively Accepted: %s", + [$SUMMARY] + ); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, @@ -155,7 +190,11 @@ class InvitationMiddleware extends Middleware "dav.calendarInvite." . $method, $data ); - $emailTemplate->setSubject($this->l10n->t("Invitation Tentatively Accepted: %s",[$SUMMARY])); + $emailTemplate->setSubject( + $this->l10n->t("Invitation Tentatively Accepted: %s", [ + $SUMMARY, + ]) + ); $emailTemplate->addHeader(); $emailTemplate->addHeading( $this->l10n->t("Tentatively Accepted") @@ -167,7 +206,9 @@ class InvitationMiddleware extends Middleware } if ($methodName === "accept") { - $meetingTitle = $this->l10n->t("Invitation Accepted: %s", [$SUMMARY]); + $meetingTitle = $this->l10n->t("Invitation Accepted: %s", [ + $SUMMARY, + ]); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, @@ -178,7 +219,9 @@ class InvitationMiddleware extends Middleware $recipient, $data ); - $emailTemplate->setSubject($this->l10n->t("Invitation Accepted: %s", [$SUMMARY])); + $emailTemplate->setSubject( + $this->l10n->t("Invitation Accepted: %s", [$SUMMARY]) + ); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l10n->t("Accepted")); $mailbodytext = $this->l10n->t( @@ -188,7 +231,9 @@ class InvitationMiddleware extends Middleware } if ($methodName === "decline") { - $meetingTitle = $this->l10n->t("Invitation Declined: %s", [$SUMMARY]); + $meetingTitle = $this->l10n->t("Invitation Declined: %s", [ + $SUMMARY, + ]); $data = [ "attendee_name" => (string) $sender ?: $defaultVal, "invitee_name" => (string) $recipient ?: $defaultVal, @@ -199,7 +244,9 @@ class InvitationMiddleware extends Middleware "dav.calendarInvite." . $method, $data ); - $emailTemplate->setSubject($this->l10n->t("Invitation Declined: %s", [$SUMMARY])); + $emailTemplate->setSubject( + $this->l10n->t("Invitation Declined: %s", [$SUMMARY]) + ); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l10n->t("Declined")); $mailbodytext = $this->l10n->t( -- GitLab From 3afc4ba1393c4bf1acce0afcdc0bbb943e67ffc3 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Tue, 7 Jun 2022 18:38:26 +0530 Subject: [PATCH 2/9] query optimized --- lib/Middleware/InvitationMiddleware.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index df96320e9..d77a5f27f 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -65,7 +65,7 @@ class InvitationMiddleware extends Middleware $token = $this->request->getParam("token"); $query = $this->db->getQueryBuilder(); $query - ->select("*") + ->select('id','uid','attendee','organizer') ->from("calendar_invitations") ->where( $query @@ -83,7 +83,7 @@ class InvitationMiddleware extends Middleware $principaluri = "principals/users/" . $username; $querycal = $this->db->getQueryBuilder(); $querycal - ->select("*") + ->select('id') ->from("calendars") ->where( $query @@ -99,7 +99,7 @@ class InvitationMiddleware extends Middleware $calid = $caldata["id"]; $query2 = $this->db->getQueryBuilder(); $query2 - ->select("*") + ->select('id','calendardata') ->from("calendarobjects") ->where( $query @@ -126,7 +126,7 @@ class InvitationMiddleware extends Middleware $query3 = $this->db->getQueryBuilder(); $query3 - ->select("*") + ->select('parameter','name','value') ->from("calendarobjects_props") ->where( $query3 -- GitLab From 2813abc6d623425f387562c456783562341c4403 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Tue, 7 Jun 2022 20:12:22 +0530 Subject: [PATCH 3/9] query optimized --- lib/Middleware/InvitationMiddleware.php | 60 +++++++++---------------- 1 file changed, 22 insertions(+), 38 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index d77a5f27f..3d7dd32ea 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -65,7 +65,7 @@ class InvitationMiddleware extends Middleware $token = $this->request->getParam("token"); $query = $this->db->getQueryBuilder(); $query - ->select('id','uid','attendee','organizer') + ->select("id", "uid", "attendee", "organizer") ->from("calendar_invitations") ->where( $query @@ -81,52 +81,36 @@ class InvitationMiddleware extends Middleware $userdata = $this->iusermanager->getByEmail($recipient); $username = $userdata[0]->getUID(); $principaluri = "principals/users/" . $username; - $querycal = $this->db->getQueryBuilder(); - $querycal - ->select('id') - ->from("calendars") + + $query2 = $this->db->getQueryBuilder(); + $query2 + ->select("co.id", "co.calendardata") + ->from("calendarobjects", "co") + ->innerJoin( + "co", + "calendars", + "c", + $query2->expr()->eq("co.calendarid", "c.id") + ) ->where( $query ->expr() ->eq( - "principaluri", - $querycal->createNamedParameter($principaluri) + "c.principaluri", + $query2->createNamedParameter($principaluri) ) + ) + ->andWhere( + $query + ->expr() + ->eq("co.uid", $query2->createNamedParameter($uid)) ); - $stmtcal = $querycal->execute(); - $rowcal = $stmtcal->fetchAll(\PDO::FETCH_ASSOC); - foreach ($rowcal as $caldata) { - $calid = $caldata["id"]; - $query2 = $this->db->getQueryBuilder(); - $query2 - ->select('id','calendardata') - ->from("calendarobjects") - ->where( - $query - ->expr() - ->eq( - "calendarid", - $query2->createNamedParameter($calid) - ) - ) - ->where( - $query - ->expr() - ->eq("uid", $query2->createNamedParameter($uid)) - ); - $stmt2 = $query2->execute(); - $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); - - if ($row2) { - break; - } - } - + $stmt2 = $query2->execute(); + $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); $calendarobjectid = $row2["id"]; - $query3 = $this->db->getQueryBuilder(); $query3 - ->select('parameter','name','value') + ->select("parameter", "name", "value") ->from("calendarobjects_props") ->where( $query3 -- GitLab From e1682ce6e5befd735d348d9958119b4b57ebbb27 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Wed, 8 Jun 2022 15:49:50 +0530 Subject: [PATCH 4/9] query optimized --- lib/Middleware/InvitationMiddleware.php | 50 ++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 3d7dd32ea..635642132 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -84,7 +84,13 @@ class InvitationMiddleware extends Middleware $query2 = $this->db->getQueryBuilder(); $query2 - ->select("co.id", "co.calendardata") + ->select( + "co.id", + "co.calendardata", + "cp.parameter", + "cp.name", + "cp.value" + ) ->from("calendarobjects", "co") ->innerJoin( "co", @@ -92,6 +98,12 @@ class InvitationMiddleware extends Middleware "c", $query2->expr()->eq("co.calendarid", "c.id") ) + ->innerJoin( + "co", + "calendarobjects_props", + "cp", + $query2->expr()->eq("co.id", "cp.objectid") + ) ->where( $query ->expr() @@ -104,40 +116,28 @@ class InvitationMiddleware extends Middleware $query ->expr() ->eq("co.uid", $query2->createNamedParameter($uid)) - ); - $stmt2 = $query2->execute(); - $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); - $calendarobjectid = $row2["id"]; - $query3 = $this->db->getQueryBuilder(); - $query3 - ->select("parameter", "name", "value") - ->from("calendarobjects_props") - ->where( - $query3 + ) + ->andWhere( + $query ->expr() ->eq( - "objectid", - $query3->createNamedParameter($calendarobjectid) + "cp.parameter", + $query2->createNamedParameter("CN") ) ); - $stmt3 = $query3->execute(); - $row3 = $stmt3->fetchAll(\PDO::FETCH_ASSOC); - foreach ($row3 as $calendarobj1) { - if ( - $calendarobj1["parameter"] == "CN" && - $calendarobj1["name"] == "ATTENDEE" - ) { + $stmt2 = $query2->execute(); + $row2 = $stmt2->fetchAll(\PDO::FETCH_ASSOC); + + foreach ($row2 as $calendarobj1) { + if ($calendarobj1["name"] == "ATTENDEE") { $attendeename = $calendarobj1["value"]; } - if ( - $calendarobj1["parameter"] == "CN" && - $calendarobj1["name"] == "ORGANIZER" - ) { + if ($calendarobj1["name"] == "ORGANIZER") { $organizername = $calendarobj1["value"]; } } - $vObject = Reader::read($row2["calendardata"]); + $vObject = Reader::read($row2[0]["calendardata"]); $SUMMARY = $vObject->VEVENT->SUMMARY; $datestart = (string) $vObject->VEVENT->DTSTART; if (str_contains($datestart, "T")) { -- GitLab From 70e6ab9cffe31d99c5007d7b424b6ba2f48160a2 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Thu, 9 Jun 2022 10:12:40 +0530 Subject: [PATCH 5/9] calendar_props removed and used calendar object --- lib/Middleware/InvitationMiddleware.php | 59 ++++++------------------- 1 file changed, 14 insertions(+), 45 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 635642132..1d62a6673 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -84,13 +84,7 @@ class InvitationMiddleware extends Middleware $query2 = $this->db->getQueryBuilder(); $query2 - ->select( - "co.id", - "co.calendardata", - "cp.parameter", - "cp.name", - "cp.value" - ) + ->select("co.id", "co.calendardata") ->from("calendarobjects", "co") ->innerJoin( "co", @@ -98,12 +92,6 @@ class InvitationMiddleware extends Middleware "c", $query2->expr()->eq("co.calendarid", "c.id") ) - ->innerJoin( - "co", - "calendarobjects_props", - "cp", - $query2->expr()->eq("co.id", "cp.objectid") - ) ->where( $query ->expr() @@ -116,48 +104,29 @@ class InvitationMiddleware extends Middleware $query ->expr() ->eq("co.uid", $query2->createNamedParameter($uid)) - ) - ->andWhere( - $query - ->expr() - ->eq( - "cp.parameter", - $query2->createNamedParameter("CN") - ) ); $stmt2 = $query2->execute(); - $row2 = $stmt2->fetchAll(\PDO::FETCH_ASSOC); - - foreach ($row2 as $calendarobj1) { - if ($calendarobj1["name"] == "ATTENDEE") { - $attendeename = $calendarobj1["value"]; - } - if ($calendarobj1["name"] == "ORGANIZER") { - $organizername = $calendarobj1["value"]; - } - } - - $vObject = Reader::read($row2[0]["calendardata"]); + $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); + $vObject = Reader::read($row2["calendardata"]); $SUMMARY = $vObject->VEVENT->SUMMARY; $datestart = (string) $vObject->VEVENT->DTSTART; + $attendeename = $sender; + $organizername = $recipient; + $ATTENDEE = $vObject->VEVENT->ATTENDEE["CN"]; + $ORGANIZER = $vObject->VEVENT->ORGANIZER["CN"]; + if ($ATTENDEE != "") { + $attendeename = $ATTENDEE; + } + if ($ORGANIZER != "") { + $organizername = $ORGANIZER; + } + 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", -- GitLab From b27785c09fa5460e7ce49d9609f973e492c466f2 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Thu, 9 Jun 2022 10:18:36 +0530 Subject: [PATCH 6/9] code optimized --- lib/Middleware/InvitationMiddleware.php | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 1d62a6673..83927ebfe 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -63,16 +63,16 @@ class InvitationMiddleware extends Middleware $response->getTemplateName() == "schedule-response-success") ) { $token = $this->request->getParam("token"); - $query = $this->db->getQueryBuilder(); - $query + $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"]; @@ -82,30 +82,30 @@ class InvitationMiddleware extends Middleware $username = $userdata[0]->getUID(); $principaluri = "principals/users/" . $username; - $query2 = $this->db->getQueryBuilder(); - $query2 + $queryCalendarObjects = $this->db->getQueryBuilder(); + $queryCalendarObjects ->select("co.id", "co.calendardata") ->from("calendarobjects", "co") ->innerJoin( "co", "calendars", "c", - $query2->expr()->eq("co.calendarid", "c.id") + $queryCalendarObjects->expr()->eq("co.calendarid", "c.id") ) ->where( - $query + $queryCalendarObjects ->expr() ->eq( "c.principaluri", - $query2->createNamedParameter($principaluri) + $queryCalendarObjects->createNamedParameter($principaluri) ) ) ->andWhere( - $query + $queryCalendarObjects ->expr() - ->eq("co.uid", $query2->createNamedParameter($uid)) + ->eq("co.uid", $queryCalendarObjects->createNamedParameter($uid)) ); - $stmt2 = $query2->execute(); + $stmt2 = $queryCalendarObjects->execute(); $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); $vObject = Reader::read($row2["calendardata"]); $SUMMARY = $vObject->VEVENT->SUMMARY; -- GitLab From ec9d16a56235189f6b52cde4604cd7f7000ca7b3 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Thu, 9 Jun 2022 10:26:18 +0530 Subject: [PATCH 7/9] code optimized --- lib/Middleware/InvitationMiddleware.php | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 83927ebfe..40be81a50 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -110,16 +110,8 @@ class InvitationMiddleware extends Middleware $vObject = Reader::read($row2["calendardata"]); $SUMMARY = $vObject->VEVENT->SUMMARY; $datestart = (string) $vObject->VEVENT->DTSTART; - $attendeename = $sender; - $organizername = $recipient; - $ATTENDEE = $vObject->VEVENT->ATTENDEE["CN"]; - $ORGANIZER = $vObject->VEVENT->ORGANIZER["CN"]; - if ($ATTENDEE != "") { - $attendeename = $ATTENDEE; - } - if ($ORGANIZER != "") { - $organizername = $ORGANIZER; - } + $attendeeName = empty($vObject->VEVENT->ATTENDEE['CN']) ? $sender : $vObject->VEVENT->ATTENDE['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)); -- GitLab From 3e54edf36781fdc0fa5abf57fd805d60726917d5 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Thu, 9 Jun 2022 11:23:36 +0530 Subject: [PATCH 8/9] code optimized --- lib/Middleware/InvitationMiddleware.php | 179 ++++++++++++------------ 1 file changed, 90 insertions(+), 89 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 40be81a50..5512a6600 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -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, @@ -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, @@ -70,7 +114,12 @@ class InvitationMiddleware extends Middleware ->where( $queryCalendarInvitations ->expr() - ->eq("token", $queryCalendarInvitations->createNamedParameter($token)) + ->eq( + "token", + $queryCalendarInvitations->createNamedParameter( + $token + ) + ) ); $stmt = $queryCalendarInvitations->execute(); $row = $stmt->fetch(\PDO::FETCH_ASSOC); @@ -97,111 +146,63 @@ class InvitationMiddleware extends Middleware ->expr() ->eq( "c.principaluri", - $queryCalendarObjects->createNamedParameter($principaluri) + $queryCalendarObjects->createNamedParameter( + $principaluri + ) ) ) ->andWhere( $queryCalendarObjects ->expr() - ->eq("co.uid", $queryCalendarObjects->createNamedParameter($uid)) + ->eq( + "co.uid", + $queryCalendarObjects->createNamedParameter($uid) + ) ); $stmt2 = $queryCalendarObjects->execute(); $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->ATTENDE['CN']; - $organizername = empty($vObject->VEVENT->ORGANIZER['CN']) ? $recipient : $vObject->VEVENT->ORGANIZER['CN']; - + $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)); } + $translationData = [ + "summary" => $SUMMARY, + "attendee_name" => $attendeeName, + "event_date" => $eventdate, + ]; + $translations = $this->getMailAttributes( + $methodName, + $translationData + ); - 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, - ]; - $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] - ); - } - - 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, - ]; - $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] - ); - } - + $data = [ + "attendee_name" => (string) $sender ?: $defaultVal, + "invitee_name" => (string) $recipient ?: $defaultVal, + "meeting_title" => + (string) $translations["meeting_title"] ?: $defaultVal, + ]; + $method = "reply"; + $emailTemplate = $this->mailer->createEMailTemplate( + "dav.calendarInvite." . $method, + $data + ); + $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(); -- GitLab From 60c2368f5d0de2155efad949fff2cf495e54f603 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Thu, 9 Jun 2022 15:46:42 +0530 Subject: [PATCH 9/9] check for empty data --- lib/Middleware/InvitationMiddleware.php | 180 +++++++++++++----------- 1 file changed, 94 insertions(+), 86 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 5512a6600..ed8354292 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -128,96 +128,104 @@ class InvitationMiddleware extends Middleware $sender = substr($row["attendee"], 7); $recipient = substr($row["organizer"], 7); $userdata = $this->iusermanager->getByEmail($recipient); - $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("co.calendarid", "c.id") - ) - ->where( - $queryCalendarObjects - ->expr() - ->eq( - "c.principaluri", - $queryCalendarObjects->createNamedParameter( - $principaluri + 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("co.calendarid", "c.id") + ) + ->where( + $queryCalendarObjects + ->expr() + ->eq( + "c.principaluri", + $queryCalendarObjects->createNamedParameter( + $principaluri + ) ) - ) - ) - ->andWhere( - $queryCalendarObjects - ->expr() - ->eq( - "co.uid", - $queryCalendarObjects->createNamedParameter($uid) - ) - ); - $stmt2 = $queryCalendarObjects->execute(); - $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)); - } - $translationData = [ - "summary" => $SUMMARY, - "attendee_name" => $attendeeName, - "event_date" => $eventdate, - ]; - $translations = $this->getMailAttributes( - $methodName, - $translationData - ); + ) + ->andWhere( + $queryCalendarObjects + ->expr() + ->eq( + "co.uid", + $queryCalendarObjects->createNamedParameter( + $uid + ) + ) + ); + $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)); + } + $translationData = [ + "summary" => $SUMMARY, + "attendee_name" => $attendeeName, + "event_date" => $eventdate, + ]; + $translations = $this->getMailAttributes( + $methodName, + $translationData + ); - $data = [ - "attendee_name" => (string) $sender ?: $defaultVal, - "invitee_name" => (string) $recipient ?: $defaultVal, - "meeting_title" => - (string) $translations["meeting_title"] ?: $defaultVal, - ]; - $method = "reply"; - $emailTemplate = $this->mailer->createEMailTemplate( - "dav.calendarInvite." . $method, - $data - ); - $emailTemplate->setSubject( - $this->l10n->t($translations["meeting_title"], [$SUMMARY]) - ); - $emailTemplate->addHeader(); - $emailTemplate->addHeading($translations["meeting_head"]); - $emailTemplate->addBodyText( - htmlspecialchars($translations["meeting_body"]), - $mailbodytext - ); - $emailTemplate->addFooter(); - try { - $message = $this->mailer->createMessage(); - $message->setTo([$recipient => $organizername]); - $message->setReplyTo([$sender => $attendeename]); - $message->useTemplate($emailTemplate); - $this->mailer->send($message); - } catch (\Exception $e) { - // Log the exception and continue - $this->logger->logException($e); + $data = [ + "attendee_name" => (string) $sender ?: $defaultVal, + "invitee_name" => (string) $recipient ?: $defaultVal, + "meeting_title" => + (string) $translations["meeting_title"] ?: + $defaultVal, + ]; + $method = "reply"; + $emailTemplate = $this->mailer->createEMailTemplate( + "dav.calendarInvite." . $method, + $data + ); + $emailTemplate->setSubject( + $this->l10n->t($translations["meeting_title"], [ + $SUMMARY, + ]) + ); + $emailTemplate->addHeader(); + $emailTemplate->addHeading($translations["meeting_head"]); + $emailTemplate->addBodyText( + htmlspecialchars($translations["meeting_body"]), + $mailbodytext + ); + $emailTemplate->addFooter(); + try { + $message = $this->mailer->createMessage(); + $message->setTo([$recipient => $organizername]); + $message->setReplyTo([$sender => $attendeename]); + $message->useTemplate($emailTemplate); + $this->mailer->send($message); + } catch (\Exception $e) { + // Log the exception and continue + $this->logger->logException($e); + } + } } } - return $response; } } -- GitLab