mirror of
https://github.com/nextcloud/server.git
synced 2026-06-08 16:26:59 -04:00
Merge pull request #29921 from nextcloud/feature/noid/allow-to-count-commments-with-multiple-verbs
Allow to count comments with multiple verbs
This commit is contained in:
commit
773c407965
3 changed files with 43 additions and 4 deletions
|
|
@ -677,6 +677,10 @@ class Manager implements ICommentsManager {
|
|||
* @since 21.0.0
|
||||
*/
|
||||
public function getNumberOfCommentsForObjectSinceComment(string $objectType, string $objectId, int $lastRead, string $verb = ''): int {
|
||||
if ($verb !== '') {
|
||||
return $this->getNumberOfCommentsWithVerbsForObjectSinceComment($objectType, $objectId, $lastRead, [$verb]);
|
||||
}
|
||||
|
||||
$query = $this->dbConn->getQueryBuilder();
|
||||
$query->select($query->func()->count('id', 'num_messages'))
|
||||
->from('comments')
|
||||
|
|
@ -684,11 +688,31 @@ class Manager implements ICommentsManager {
|
|||
->andWhere($query->expr()->eq('object_id', $query->createNamedParameter($objectId)))
|
||||
->andWhere($query->expr()->gt('id', $query->createNamedParameter($lastRead)));
|
||||
|
||||
if ($verb !== '') {
|
||||
$query->andWhere($query->expr()->eq('verb', $query->createNamedParameter($verb)));
|
||||
}
|
||||
$result = $query->executeQuery();
|
||||
$data = $result->fetch();
|
||||
$result->closeCursor();
|
||||
|
||||
$result = $query->execute();
|
||||
return (int) ($data['num_messages'] ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $objectType
|
||||
* @param string $objectId
|
||||
* @param int $lastRead
|
||||
* @param string[] $verbs
|
||||
* @return int
|
||||
* @since 24.0.0
|
||||
*/
|
||||
public function getNumberOfCommentsWithVerbsForObjectSinceComment(string $objectType, string $objectId, int $lastRead, array $verbs): int {
|
||||
$query = $this->dbConn->getQueryBuilder();
|
||||
$query->select($query->func()->count('id', 'num_messages'))
|
||||
->from('comments')
|
||||
->where($query->expr()->eq('object_type', $query->createNamedParameter($objectType)))
|
||||
->andWhere($query->expr()->eq('object_id', $query->createNamedParameter($objectId)))
|
||||
->andWhere($query->expr()->gt('id', $query->createNamedParameter($lastRead)))
|
||||
->andWhere($query->expr()->in('verb', $query->createNamedParameter($verbs, IQueryBuilder::PARAM_STR_ARRAY)));
|
||||
|
||||
$result = $query->executeQuery();
|
||||
$data = $result->fetch();
|
||||
$result->closeCursor();
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,17 @@ interface ICommentsManager {
|
|||
*/
|
||||
public function getNumberOfCommentsForObjectSinceComment(string $objectType, string $objectId, int $lastRead, string $verb = ''): int;
|
||||
|
||||
|
||||
/**
|
||||
* @param string $objectType
|
||||
* @param string $objectId
|
||||
* @param int $lastRead
|
||||
* @param string[] $verbs
|
||||
* @return int
|
||||
* @since 24.0.0
|
||||
*/
|
||||
public function getNumberOfCommentsWithVerbsForObjectSinceComment(string $objectType, string $objectId, int $lastRead, array $verbs): int;
|
||||
|
||||
/**
|
||||
* @param string $objectType
|
||||
* @param string $objectId
|
||||
|
|
|
|||
|
|
@ -101,6 +101,10 @@ class FakeManager implements ICommentsManager {
|
|||
return 0;
|
||||
}
|
||||
|
||||
public function getNumberOfCommentsWithVerbsForObjectSinceComment(string $objectType, string $objectId, int $lastRead, array $verbs): int {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getLastCommentBeforeDate(string $objectType, string $objectId, \DateTime $beforeDate, string $verb = ''): int {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue