From 198224bf7a18903fb9e55d621604befa788f542c Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 1 Jul 2022 15:53:37 +0200 Subject: Allow to expire comments of multiple objects with one call Signed-off-by: Joas Schilling --- lib/private/Comments/Manager.php | 14 +++++++++----- lib/public/Comments/ICommentsManager.php | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php index f21f9ec76b2..50b5fabc6a2 100644 --- a/lib/private/Comments/Manager.php +++ b/lib/private/Comments/Manager.php @@ -1650,14 +1650,18 @@ class Manager implements ICommentsManager { /** * @inheritDoc */ - public function deleteMessageExpiredAtObject(string $objectType, string $objectId): bool { + public function deleteCommentsExpiredAtObject(string $objectType, string $objectId = ''): bool { $qb = $this->dbConn->getQueryBuilder(); - $affectedRows = $qb->delete('comments') + $qb->delete('comments') ->where($qb->expr()->lt('expire_date', $qb->createNamedParameter($this->timeFactory->getDateTime(), IQueryBuilder::PARAM_DATE))) - ->andWhere($qb->expr()->eq('object_type', $qb->createNamedParameter($objectType))) - ->andWhere($qb->expr()->eq('object_id', $qb->createNamedParameter($objectId))) - ->executeStatement(); + ->andWhere($qb->expr()->eq('object_type', $qb->createNamedParameter($objectType))); + + if ($objectId !== '') { + $qb->andWhere($qb->expr()->eq('object_id', $qb->createNamedParameter($objectId))); + } + + $affectedRows = $qb->executeStatement(); $this->commentsCache = []; diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php index 814ca3e8f9c..da9e4d76a38 100644 --- a/lib/public/Comments/ICommentsManager.php +++ b/lib/public/Comments/ICommentsManager.php @@ -488,9 +488,9 @@ interface ICommentsManager { * Only will delete the message related with the object. * * @param string $objectType the object type (e.g. 'files') - * @param string $objectId e.g. the file id + * @param string $objectId e.g. the file id, leave empty to expire on all objects of this type * @return boolean true if at least one row was deleted * @since 25.0.0 */ - public function deleteMessageExpiredAtObject(string $objectType, string $objectId): bool; + public function deleteCommentsExpiredAtObject(string $objectType, string $objectId = ''): bool; } -- cgit v1.2.3