diff options
author | Marcel Klehr <mklehr@gmx.net> | 2023-06-29 15:01:14 +0200 |
---|---|---|
committer | Anna Larch <anna@nextcloud.com> | 2023-07-06 14:52:49 +0200 |
commit | 470f2ec937460464abaa1f7ef4975dcec28d29ad (patch) | |
tree | 861fef4b4b505d980a22e475f490ec6439157a1f | |
parent | 0e0b468c10b8a65cbf346c052cadbc8d834eb28f (diff) | |
download | nextcloud-server-470f2ec937460464abaa1f7ef4975dcec28d29ad.tar.gz nextcloud-server-470f2ec937460464abaa1f7ef4975dcec28d29ad.zip |
fix(TagSearchProvider): Short circuit if no tag matches the query
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
-rw-r--r-- | apps/systemtags/lib/Search/TagSearchProvider.php | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/systemtags/lib/Search/TagSearchProvider.php b/apps/systemtags/lib/Search/TagSearchProvider.php index 7a7cb0b061c..d775629b674 100644 --- a/apps/systemtags/lib/Search/TagSearchProvider.php +++ b/apps/systemtags/lib/Search/TagSearchProvider.php @@ -113,6 +113,11 @@ class TagSearchProvider implements IProvider { * @inheritDoc */ public function search(IUser $user, ISearchQuery $query): SearchResult { + $matchingTags = $this->tagManager->getAllTags(1, $query->getTerm()); + if (count($matchingTags) === 0) { + return SearchResult::complete($this->l10n->t('Tags'), []); + } + $userFolder = $this->rootFolder->getUserFolder($user->getUID()); $fileQuery = new SearchQuery( new SearchBinaryOperator(SearchBinaryOperator::OPERATOR_OR, [ @@ -133,7 +138,6 @@ class TagSearchProvider implements IProvider { return $node->getId(); }, $searchResults); $matchedTags = $this->objectMapper->getTagIdsForObjects($resultIds, 'files'); - $relevantTags = $this->tagManager->getTagsByIds(array_unique($this->flattenArray($matchedTags))); // prepare direct tag results $tagResults = array_map(function(ISystemTag $tag) { @@ -149,9 +153,7 @@ class TagSearchProvider implements IProvider { 'icon-tag' ); return $searchResultEntry; - }, array_filter($relevantTags, function($tag) use ($query) { - return $tag->isUserVisible() && strpos($tag->getName(), $query->getTerm()) !== false; - })); + }, $matchingTags); // prepare files results return SearchResult::paginated( |