diff options
Diffstat (limited to 'apps/settings/lib/Search/AppSearch.php')
-rw-r--r-- | apps/settings/lib/Search/AppSearch.php | 68 |
1 files changed, 17 insertions, 51 deletions
diff --git a/apps/settings/lib/Search/AppSearch.php b/apps/settings/lib/Search/AppSearch.php index 5221fc3d1fd..19c2bce5451 100644 --- a/apps/settings/lib/Search/AppSearch.php +++ b/apps/settings/lib/Search/AppSearch.php @@ -3,27 +3,9 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com> - * - * @author Joas Schilling <coding@schilljs.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Settings\Search; use OCP\IL10N; @@ -35,56 +17,43 @@ use OCP\Search\SearchResult; use OCP\Search\SearchResultEntry; class AppSearch implements IProvider { - - /** @var INavigationManager */ - protected $navigationManager; - - /** @var IL10N */ - protected $l; - - public function __construct(INavigationManager $navigationManager, - IL10N $l) { - $this->navigationManager = $navigationManager; - $this->l = $l; + public function __construct( + protected INavigationManager $navigationManager, + protected IL10N $l, + ) { } - /** - * @inheritDoc - */ public function getId(): string { return 'settings_apps'; } - /** - * @inheritDoc - */ public function getName(): string { return $this->l->t('Apps'); } - /** - * @inheritDoc - */ public function getOrder(string $route, array $routeParameters): int { - return -50; + return $route === 'settings.AppSettings.viewApps' ? -50 : 100; } - /** - * @inheritDoc - */ public function search(IUser $user, ISearchQuery $query): SearchResult { $entries = $this->navigationManager->getAll('all'); + $searchTitle = $this->l->t('Apps'); + $term = $query->getFilter('term')?->get(); + if (empty($term)) { + return SearchResult::complete($searchTitle, []); + } + $result = []; foreach ($entries as $entry) { if ( - stripos($entry['name'], $query->getTerm()) === false && - stripos($entry['id'], $query->getTerm()) === false + stripos($entry['name'], $term) === false + && stripos($entry['id'], $term) === false ) { continue; } - if (strpos($query->getRoute(), $entry['id'] . '.') === 0) { + if (str_starts_with($query->getRoute(), $entry['id'] . '.')) { // Skip the current app, unlikely this is intended continue; } @@ -103,9 +72,6 @@ class AppSearch implements IProvider { ); } - return SearchResult::complete( - $this->l->t('Apps'), - $result - ); + return SearchResult::complete($searchTitle, $result); } } |