diff options
author | Joas Schilling <coding@schilljs.com> | 2018-04-23 14:58:43 +0200 |
---|---|---|
committer | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2018-07-25 18:53:45 +0200 |
commit | ac2314e3d0e195b2af06473a6acfa5f76534cd63 (patch) | |
tree | d028b627370a2d98f2978f805057740014ebd911 /apps/comments | |
parent | 1e16f7ecd9f6aa28af73545b4a53feeae2f8056d (diff) | |
download | nextcloud-server-ac2314e3d0e195b2af06473a6acfa5f76534cd63.tar.gz nextcloud-server-ac2314e3d0e195b2af06473a6acfa5f76534cd63.zip |
Add pagination support
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/comments')
-rw-r--r-- | apps/comments/lib/Search/Provider.php | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/apps/comments/lib/Search/Provider.php b/apps/comments/lib/Search/Provider.php index 78442e3ce0b..ac5afef6669 100644 --- a/apps/comments/lib/Search/Provider.php +++ b/apps/comments/lib/Search/Provider.php @@ -50,27 +50,40 @@ class Provider extends \OCP\Search\Provider { return []; } - /** @var IComment[] $comments */ - $comments = $cm->search($query, 'files', '', 'comment'); - $result = []; - foreach ($comments as $comment) { - if ($comment->getActorType() !== 'users') { - continue; + $numComments = 50; + $offset = 0; + + while (\count($result) < $numComments) { + /** @var IComment[] $comments */ + $comments = $cm->search($query, 'files', '', 'comment', $offset, $numComments); + + foreach ($comments as $comment) { + if ($comment->getActorType() !== 'users') { + continue; + } + + $displayName = $cm->resolveDisplayName('user', $comment->getActorId()); + + try { + $file = $this->getFileForComment($uf, $comment); + $result[] = new Result($query, + $comment, + $displayName, + $file->getPath() + ); + } catch (NotFoundException $e) { + continue; + } } - $displayName = $cm->resolveDisplayName('user', $comment->getActorId()); - - try { - $file = $this->getFileForComment($uf, $comment); - $result[] = new Result($query, - $comment, - $displayName, - $file->getPath() - ); - } catch (NotFoundException $e) { - continue; + if (\count($comments) < $numComments) { + // Didn't find more comments when we tried to get, so there are no more comments. + return $result; } + + $offset += $numComments; + $numComments = 50 - \count($result); } return $result; |