diff --git a/apps/files/lib/Search/FilesSearchProvider.php b/apps/files/lib/Search/FilesSearchProvider.php index f71d58c6faebe..08f125bca64e8 100644 --- a/apps/files/lib/Search/FilesSearchProvider.php +++ b/apps/files/lib/Search/FilesSearchProvider.php @@ -24,6 +24,7 @@ use OCP\Files\Search\ISearchOrder; use OCP\IL10N; use OCP\IPreview; +use OCP\ITags; use OCP\IURLGenerator; use OCP\IUser; use OCP\Search\FilterDefinition; @@ -130,12 +131,28 @@ public function search(IUser $user, ISearchQuery $query): SearchResult { ); $searchResultEntry->addAttribute('fileId', (string)$result->getId()); $searchResultEntry->addAttribute('path', $path); + $searchResultEntry->addAttribute('favorite', $this->isFavorite((string)$result->getId()) ? "true" : "false"); return $searchResultEntry; }, $userFolder->search($fileQuery)), $query->getCursor() + $query->getLimit() ); } + private function isFavorite(string $fileId): bool { + $tagManager = \OCP\Server::get(\OCP\ITagManager::class); + $tagger = $tagManager->load('files'); + if ($tagger === null) { + return false; + } + $tags = $tagger->getTagsForObjects([$fileId]); + + if ($tags === false || empty($tags)) { + return false; + } + + return array_search(ITags::TAG_FAVORITE, current($tags)) !== false; + } + private function buildSearchQuery(ISearchQuery $query, IUser $user): SearchQuery { $comparisons = []; foreach ($query->getFilters() as $name => $filter) {