From a31dee33436feca6ee4ee9bd2ee699ba4fa36a3f Mon Sep 17 00:00:00 2001 From: binsky Date: Fri, 5 Apr 2024 03:32:55 +0200 Subject: [PATCH] delete credential notifications on credential delete --- lib/Service/CredentialService.php | 2 ++ lib/Service/NotificationService.php | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/Service/CredentialService.php b/lib/Service/CredentialService.php index b631231a..6c50a492 100644 --- a/lib/Service/CredentialService.php +++ b/lib/Service/CredentialService.php @@ -48,6 +48,7 @@ class CredentialService { private CredentialRevisionService $credentialRevisionService, private IURLGenerator $urlGenerator, private VaultService $vaultService, + private NotificationService $notificationService, IConfig $config, ) { $this->server_key = $config->getSystemValue('passwordsalt', ''); @@ -120,6 +121,7 @@ class CredentialService { $this->credentialRevisionService->deleteRevision($id, $userId); } } + $this->notificationService->deleteNotificationsOfCredential($credential); } /** diff --git a/lib/Service/NotificationService.php b/lib/Service/NotificationService.php index 2b6c1dfd..777d0693 100644 --- a/lib/Service/NotificationService.php +++ b/lib/Service/NotificationService.php @@ -111,4 +111,13 @@ class NotificationService { ->andWhere($qb->expr()->eq('subject', $qb->createNamedParameter('credential_expired', IQueryBuilder::PARAM_STR))); return $qb->execute()->rowCount() !== 0; } + + function deleteNotificationsOfCredential($credential) { + $qb = $this->db->getQueryBuilder(); + $qb->delete() + ->from('notifications') + ->where($qb->expr()->eq('object_id', $qb->createNamedParameter($credential->getId(), IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('object_type', 'credential')); + return $qb->execute(); + } }