l10n = $l10n; $this->urlGenerator = $urlGenerator; $this->service = $folderService; } public function getId(): string { return 'news_folder'; } public function getName(): string { return $this->l10n->t('News folders'); } public function getOrder(string $route, array $routeParameters): int { if (strpos($route, Application::NAME . '.') === 0) { // Active app, prefer my results return -1; } return 55; } public function search(IUser $user, ISearchQuery $query): SearchResult { $term = $query->getTerm(); $list = array_map(function (Folder $folder) use ($term): ?SearchResultEntry { if (strpos($folder->getName(), $term) === false) { return null; } return new SearchResultEntry( $this->urlGenerator->imagePath('core', 'filetypes/folder.svg'), $folder->getName(), '', $this->urlGenerator->linkToRoute('news.view.index') . '#/items/folders/' . $folder->getId() ); }, $this->service->findAllForUser($user->getUID())); return SearchResult::complete($this->l10n->t('News'), $list); } }