From f934a87ad27ee902c23cb1d5516932f24f0fddbf Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 1 Dec 2025 18:05:41 +0530 Subject: [PATCH 1/5] (fix) use indexed principal uri to get calendar object --- lib/Middleware/InvitationMiddleware.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 2c2027fa3..9d2044c37 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -17,6 +17,7 @@ use OCP\L10N\IFactory; use OCP\Mail\IMailer; use Psr\Log\LoggerInterface; use Sabre\VObject\Reader; +use OCA\DAV\Connector\Sabre\Principal; class InvitationMiddleware extends Middleware { private $request; @@ -34,6 +35,7 @@ class InvitationMiddleware extends Middleware { LoggerInterface $logger, IUserManager $iusermanager, IFactory $languageFactory, + private Principal $principalBackend, ) { $this->request = $request; $this->config = $config; @@ -75,17 +77,21 @@ class InvitationMiddleware extends Middleware { $uid = $row['uid']; $sender = substr($row['attendee'], 7); - $recipient = substr($row['organizer'], 7); - + $organizer = $row['organizer']; + $recipient = substr($organizer, 7); + + $principalUriOfOrganizer = $this->principalBackend->findByUri($organizer, 'principals/users'); $query2 = $this->db->getQueryBuilder(); $query2 - ->select('*') - ->from('calendarobjects') + ->select('co.*') + ->from('calendarobjects', 'co') + ->join('co', 'calendars', 'c', $query2->expr()->eq('co.calendarid', 'c.calendarid')) ->where( - $query + $query2 ->expr() ->eq('uid', $query2->createNamedParameter($uid)) - ); + )->andWhere('c.principaluri', $query2->createNamedParameter($principalUriOfOrganizer)); + $stmt2 = $query2->execute(); $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); $calendarobjectid = $row2['id']; -- GitLab From bfda5ca5857252ad4f9dd7a797394badb191fd5d Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Mon, 1 Dec 2025 18:10:26 +0530 Subject: [PATCH 2/5] lint fix --- lib/Middleware/InvitationMiddleware.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index 9d2044c37..f3e2a1772 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -3,6 +3,7 @@ namespace OCA\Calendar\Middleware; use OCA\Calendar\Controller\InvitationMaybeController; +use OCA\DAV\Connector\Sabre\Principal; use OCA\Dav\Controller\InvitationResponseController; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; @@ -17,7 +18,6 @@ use OCP\L10N\IFactory; use OCP\Mail\IMailer; use Psr\Log\LoggerInterface; use Sabre\VObject\Reader; -use OCA\DAV\Connector\Sabre\Principal; class InvitationMiddleware extends Middleware { private $request; -- GitLab From da346104796a60f6ecb71e6e54cf746cd0e000a5 Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Mon, 1 Dec 2025 20:04:11 +0530 Subject: [PATCH 3/5] check for principaluri --- lib/Middleware/InvitationMiddleware.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index f3e2a1772..c947ae552 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -77,10 +77,16 @@ class InvitationMiddleware extends Middleware { $uid = $row['uid']; $sender = substr($row['attendee'], 7); + $organizer = $row['organizer']; $recipient = substr($organizer, 7); $principalUriOfOrganizer = $this->principalBackend->findByUri($organizer, 'principals/users'); + if ($principalUriOfOrganizer === null) { + $this->logger->warning('Principal URI not found for organizer', ['organizer' => $organizer]); + return $response; + } + $query2 = $this->db->getQueryBuilder(); $query2 ->select('co.*') -- GitLab From d161146c04b8b36de518680a8e9df574eb67441f Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Mon, 1 Dec 2025 20:15:53 +0530 Subject: [PATCH 4/5] added missing parameter --- lib/AppInfo/Application.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 4f060eabf..3b90a6d99 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -16,6 +16,7 @@ use OCA\Calendar\Middleware\InvitationMiddleware; use OCA\Calendar\Notification\Notifier; use OCA\Calendar\Profile\AppointmentsAction; use OCA\Calendar\Reference\ReferenceProvider; +use OCA\DAV\Connector\Sabre\Principal; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; @@ -65,6 +66,7 @@ class Application extends App implements IBootstrap { $c->get(LoggerInterface::class), $c->get(IUserManager::class), $c->get(L10NFactory::class), + $c->get(Principal::class), ); }); @@ -89,6 +91,7 @@ class Application extends App implements IBootstrap { $c->get(LoggerInterface::class), $c->get(IUserManager::class), $c->get(L10NFactory::class), + $c->get(Principal::class), ); }); -- GitLab From f8103de762890b56920483d919bac315301e665b Mon Sep 17 00:00:00 2001 From: Avinash Gusain Date: Mon, 1 Dec 2025 21:08:39 +0530 Subject: [PATCH 5/5] fixed query --- lib/Middleware/InvitationMiddleware.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Middleware/InvitationMiddleware.php b/lib/Middleware/InvitationMiddleware.php index c947ae552..1aedaeab7 100644 --- a/lib/Middleware/InvitationMiddleware.php +++ b/lib/Middleware/InvitationMiddleware.php @@ -91,12 +91,12 @@ class InvitationMiddleware extends Middleware { $query2 ->select('co.*') ->from('calendarobjects', 'co') - ->join('co', 'calendars', 'c', $query2->expr()->eq('co.calendarid', 'c.calendarid')) + ->join('co', 'calendars', 'c', $query2->expr()->eq('co.calendarid', 'c.id')) ->where( $query2 ->expr() ->eq('uid', $query2->createNamedParameter($uid)) - )->andWhere('c.principaluri', $query2->createNamedParameter($principalUriOfOrganizer)); + )->andWhere($query2->expr()->eq('c.principaluri', $query2->createNamedParameter($principalUriOfOrganizer))); $stmt2 = $query2->execute(); $row2 = $stmt2->fetch(\PDO::FETCH_ASSOC); @@ -162,6 +162,8 @@ class InvitationMiddleware extends Middleware { $organizername = $recipient; } + $defaultVal = ''; + if ($methodName === 'tentative') { $meetingTitle = $this->l10n->t('Invitation Tentatively Accepted: %s', [$SUMMARY]); -- GitLab