diff --git a/apps/systemtags/lib/Search/TagSearchProvider.php b/apps/systemtags/lib/Search/TagSearchProvider.php index 7a7cb0b061c49..5c731e42cc3e0 100644 --- a/apps/systemtags/lib/Search/TagSearchProvider.php +++ b/apps/systemtags/lib/Search/TagSearchProvider.php @@ -113,6 +113,11 @@ public function getOrder(string $route, array $routeParameters): int { * @inheritDoc */ public function search(IUser $user, ISearchQuery $query): SearchResult { + $matchingTags = $this->tagManager->getAllTags(true, $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 @@ public function search(IUser $user, ISearchQuery $query): SearchResult { 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 @@ public function search(IUser $user, ISearchQuery $query): SearchResult { '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(