mirror of
https://github.com/nextcloud/server.git
synced 2026-03-25 03:43:45 -04:00
fix: cannot apply limit+offset on multi-tag-search
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
parent
00b396a674
commit
d9487103c9
1 changed files with 11 additions and 1 deletions
|
|
@ -338,9 +338,15 @@ class FilesReportPlugin extends ServerPlugin {
|
|||
// exposed in API yet
|
||||
if (!empty($systemTagIds)) {
|
||||
$tags = $this->tagManager->getTagsByIds($systemTagIds, $this->userSession->getUser());
|
||||
|
||||
// For we run DB queries per tag and require intersection, we cannot apply limit and offset for DB queries on multi tag search.
|
||||
$oneTagSearch = count($tags) === 1;
|
||||
$dbLimit = $oneTagSearch ? $limit ?? 0 : 0;
|
||||
$dbOffset = $oneTagSearch ? $offset ?? 0 : 0;
|
||||
|
||||
foreach ($tags as $tag) {
|
||||
$tagName = $tag->getName();
|
||||
$tmpNodes = $this->userFolder->searchBySystemTag($tagName, $this->userSession->getUser()->getUID(), $limit ?? 0, $offset ?? 0);
|
||||
$tmpNodes = $this->userFolder->searchBySystemTag($tagName, $this->userSession->getUser()->getUID(), $dbLimit, $dbOffset);
|
||||
if (count($nodes) === 0) {
|
||||
$nodes = $tmpNodes;
|
||||
} else {
|
||||
|
|
@ -353,6 +359,10 @@ class FilesReportPlugin extends ServerPlugin {
|
|||
return $nodes;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$oneTagSearch && ($limit !== null || $offset !== null)) {
|
||||
$nodes = array_slice($nodes, $offset, $limit);
|
||||
}
|
||||
}
|
||||
|
||||
return $nodes;
|
||||
|
|
|
|||
Loading…
Reference in a new issue