From 66945f95749adcb4670a82156edc376dc4aa5b93 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 30 Jul 2018 09:41:51 +0200 Subject: [PATCH] Allow to filter the unread count by verb Signed-off-by: Joas Schilling --- lib/private/Comments/Manager.php | 9 +++++++-- lib/public/Comments/ICommentsManager.php | 3 ++- tests/lib/Comments/FakeManager.php | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php index 8f76d49b192..6d9e37ae94e 100644 --- a/lib/private/Comments/Manager.php +++ b/lib/private/Comments/Manager.php @@ -546,12 +546,13 @@ class Manager implements ICommentsManager { * @param $objectId string the id of the object * @param \DateTime $notOlderThan optional, timestamp of the oldest comments * that may be returned + * @param string $verb Limit the verb of the comment - Added in 14.0.0 * @return Int * @since 9.0.0 */ - public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null) { + public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null, $verb = '') { $qb = $this->dbConn->getQueryBuilder(); - $query = $qb->select($qb->createFunction('COUNT(`id`)')) + $query = $qb->select($qb->createFunction('COUNT(' . $qb->getColumnName('id') . ')')) ->from('comments') ->where($qb->expr()->eq('object_type', $qb->createParameter('type'))) ->andWhere($qb->expr()->eq('object_id', $qb->createParameter('id'))) @@ -564,6 +565,10 @@ class Manager implements ICommentsManager { ->setParameter('notOlderThan', $notOlderThan, 'datetime'); } + if ($verb !== '') { + $query->andWhere($qb->expr()->eq('verb', $qb->createNamedParameter($verb))); + } + $resultStatement = $query->execute(); $data = $resultStatement->fetch(\PDO::FETCH_NUM); $resultStatement->closeCursor(); diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php index ca98214cd72..744263643ec 100644 --- a/lib/public/Comments/ICommentsManager.php +++ b/lib/public/Comments/ICommentsManager.php @@ -157,10 +157,11 @@ interface ICommentsManager { * @param $objectId string the id of the object * @param \DateTime|null $notOlderThan optional, timestamp of the oldest comments * that may be returned + * @param string $verb Limit the verb of the comment - Added in 14.0.0 * @return Int * @since 9.0.0 */ - public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null); + public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null, $verb = ''); /** * Get the number of unread comments for all files in a folder diff --git a/tests/lib/Comments/FakeManager.php b/tests/lib/Comments/FakeManager.php index e758a951e8b..9078226afb5 100644 --- a/tests/lib/Comments/FakeManager.php +++ b/tests/lib/Comments/FakeManager.php @@ -30,7 +30,7 @@ class FakeManager implements ICommentsManager { int $limit = 30 ): array { return []; } - public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null) {} + public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null, $verb = '') {} public function search(string $search, string $objectType, string $objectId, string $verb, int $offset, int $limit = 50): array { return [];