зеркало из https://github.com/nextcloud/server.git
Merge pull request #30794 from nextcloud/techdebt/noid/allow-to-get-comments-with-verb
Allow to get comments with a given set of verbs
This commit is contained in:
Коммит
e8c66d0f89
|
@ -430,6 +430,37 @@ class Manager implements ICommentsManager {
|
|||
string $sortDirection = 'asc',
|
||||
int $limit = 30,
|
||||
bool $includeLastKnown = false
|
||||
): array {
|
||||
return $this->getCommentsWithVerbForObjectSinceComment(
|
||||
$objectType,
|
||||
$objectId,
|
||||
[],
|
||||
$lastKnownCommentId,
|
||||
$sortDirection,
|
||||
$limit,
|
||||
$includeLastKnown
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $objectType the object type, e.g. 'files'
|
||||
* @param string $objectId the id of the object
|
||||
* @param string[] $verbs List of verbs to filter by
|
||||
* @param int $lastKnownCommentId the last known comment (will be used as offset)
|
||||
* @param string $sortDirection direction of the comments (`asc` or `desc`)
|
||||
* @param int $limit optional, number of maximum comments to be returned. if
|
||||
* set to 0, all comments are returned.
|
||||
* @param bool $includeLastKnown
|
||||
* @return IComment[]
|
||||
*/
|
||||
public function getCommentsWithVerbForObjectSinceComment(
|
||||
string $objectType,
|
||||
string $objectId,
|
||||
array $verbs,
|
||||
int $lastKnownCommentId,
|
||||
string $sortDirection = 'asc',
|
||||
int $limit = 30,
|
||||
bool $includeLastKnown = false
|
||||
): array {
|
||||
$comments = [];
|
||||
|
||||
|
@ -445,6 +476,10 @@ class Manager implements ICommentsManager {
|
|||
$query->setMaxResults($limit);
|
||||
}
|
||||
|
||||
if (!empty($verbs)) {
|
||||
$query->andWhere($query->expr()->in('verb', $query->createNamedParameter($verbs, IQueryBuilder::PARAM_STR_ARRAY)));
|
||||
}
|
||||
|
||||
$lastKnownComment = $lastKnownCommentId > 0 ? $this->getLastKnownComment(
|
||||
$objectType,
|
||||
$objectId,
|
||||
|
@ -700,18 +735,7 @@ class Manager implements ICommentsManager {
|
|||
return $this->getNumberOfCommentsWithVerbsForObjectSinceComment($objectType, $objectId, $lastRead, [$verb]);
|
||||
}
|
||||
|
||||
$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)));
|
||||
|
||||
$result = $query->executeQuery();
|
||||
$data = $result->fetch();
|
||||
$result->closeCursor();
|
||||
|
||||
return (int) ($data['num_messages'] ?? 0);
|
||||
return $this->getNumberOfCommentsWithVerbsForObjectSinceComment($objectType, $objectId, $lastRead, []);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -728,8 +752,11 @@ class Manager implements ICommentsManager {
|
|||
->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)));
|
||||
->andWhere($query->expr()->gt('id', $query->createNamedParameter($lastRead)));
|
||||
|
||||
if (!empty($verbs)) {
|
||||
$query->andWhere($query->expr()->in('verb', $query->createNamedParameter($verbs, IQueryBuilder::PARAM_STR_ARRAY)));
|
||||
}
|
||||
|
||||
$result = $query->executeQuery();
|
||||
$data = $result->fetch();
|
||||
|
|
|
@ -131,6 +131,7 @@ interface ICommentsManager {
|
|||
* @param bool $includeLastKnown
|
||||
* @return IComment[]
|
||||
* @since 14.0.0
|
||||
* @deprecated 24.0.0 - Use getCommentsWithVerbForObjectSinceComment instead
|
||||
*/
|
||||
public function getForObjectSince(
|
||||
string $objectType,
|
||||
|
@ -141,6 +142,28 @@ interface ICommentsManager {
|
|||
bool $includeLastKnown = false
|
||||
): array;
|
||||
|
||||
/**
|
||||
* @param string $objectType the object type, e.g. 'files'
|
||||
* @param string $objectId the id of the object
|
||||
* @param string[] $verbs List of verbs to filter by
|
||||
* @param int $lastKnownCommentId the last known comment (will be used as offset)
|
||||
* @param string $sortDirection direction of the comments (`asc` or `desc`)
|
||||
* @param int $limit optional, number of maximum comments to be returned. if
|
||||
* set to 0, all comments are returned.
|
||||
* @param bool $includeLastKnown
|
||||
* @return IComment[]
|
||||
* @since 24.0.0
|
||||
*/
|
||||
public function getCommentsWithVerbForObjectSinceComment(
|
||||
string $objectType,
|
||||
string $objectId,
|
||||
array $verbs,
|
||||
int $lastKnownCommentId,
|
||||
string $sortDirection = 'asc',
|
||||
int $limit = 30,
|
||||
bool $includeLastKnown = false
|
||||
): array;
|
||||
|
||||
/**
|
||||
* Search for comments with a given content
|
||||
*
|
||||
|
@ -198,6 +221,7 @@ interface ICommentsManager {
|
|||
* @param string $verb
|
||||
* @return int
|
||||
* @since 21.0.0
|
||||
* @deprecated 24.0.0 - Use getNumberOfCommentsWithVerbsForObjectSinceComment instead
|
||||
*/
|
||||
public function getNumberOfCommentsForObjectSinceComment(string $objectType, string $objectId, int $lastRead, string $verb = ''): int;
|
||||
|
||||
|
|
|
@ -36,6 +36,18 @@ class FakeManager implements ICommentsManager {
|
|||
return [];
|
||||
}
|
||||
|
||||
public function getCommentsWithVerbForObjectSinceComment(
|
||||
string $objectType,
|
||||
string $objectId,
|
||||
array $verbs,
|
||||
int $lastKnownCommentId,
|
||||
string $sortDirection = 'asc',
|
||||
int $limit = 30,
|
||||
bool $includeLastKnown = false
|
||||
): array {
|
||||
return [];
|
||||
}
|
||||
|
||||
public function getNumberOfCommentsForObject($objectType, $objectId, \DateTime $notOlderThan = null, $verb = '') {
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче