diff options
Diffstat (limited to 'apps/settings/lib/Search')
-rw-r--r-- | apps/settings/lib/Search/AppSearch.php | 4 | ||||
-rw-r--r-- | apps/settings/lib/Search/SectionSearch.php | 50 | ||||
-rw-r--r-- | apps/settings/lib/Search/UserSearch.php | 2 |
3 files changed, 29 insertions, 27 deletions
diff --git a/apps/settings/lib/Search/AppSearch.php b/apps/settings/lib/Search/AppSearch.php index fbc799e6f04..19c2bce5451 100644 --- a/apps/settings/lib/Search/AppSearch.php +++ b/apps/settings/lib/Search/AppSearch.php @@ -47,8 +47,8 @@ class AppSearch implements IProvider { $result = []; foreach ($entries as $entry) { if ( - stripos($entry['name'], $term) === false && - stripos($entry['id'], $term) === false + stripos($entry['name'], $term) === false + && stripos($entry['id'], $term) === false ) { continue; } diff --git a/apps/settings/lib/Search/SectionSearch.php b/apps/settings/lib/Search/SectionSearch.php index 321534581b5..52f0c9b08db 100644 --- a/apps/settings/lib/Search/SectionSearch.php +++ b/apps/settings/lib/Search/SectionSearch.php @@ -21,26 +21,12 @@ use OCP\Settings\IManager; class SectionSearch implements IProvider { - /** @var IManager */ - protected $settingsManager; - - /** @var IGroupManager */ - protected $groupManager; - - /** @var IURLGenerator */ - protected $urlGenerator; - - /** @var IL10N */ - protected $l; - - public function __construct(IManager $settingsManager, - IGroupManager $groupManager, - IURLGenerator $urlGenerator, - IL10N $l) { - $this->settingsManager = $settingsManager; - $this->groupManager = $groupManager; - $this->urlGenerator = $urlGenerator; - $this->l = $l; + public function __construct( + protected IManager $settingsManager, + protected IGroupManager $groupManager, + protected IURLGenerator $urlGenerator, + protected IL10N $l, + ) { } /** @@ -74,9 +60,25 @@ class SectionSearch implements IProvider { public function search(IUser $user, ISearchQuery $query): SearchResult { $isAdmin = $this->groupManager->isAdmin($user->getUID()); + $personalSections = $this->settingsManager->getPersonalSections(); + foreach ($personalSections as $priority => $sections) { + $personalSections[$priority] = array_values(array_filter( + $sections, + fn (IIconSection $section) => !empty($this->settingsManager->getPersonalSettings($section->getID())), + )); + } + + $adminSections = $this->settingsManager->getAdminSections(); + foreach ($adminSections as $priority => $sections) { + $adminSections[$priority] = array_values(array_filter( + $sections, + fn (IIconSection $section) => !empty($this->settingsManager->getAllowedAdminSettings($section->getID(), $user)), + )); + } + $result = $this->searchSections( $query, - $this->settingsManager->getPersonalSections(), + $personalSections, $isAdmin ? $this->l->t('Personal') : '', 'settings.PersonalSettings.index' ); @@ -84,7 +86,7 @@ class SectionSearch implements IProvider { if ($this->groupManager->isAdmin($user->getUID())) { $result = array_merge($result, $this->searchSections( $query, - $this->settingsManager->getAdminSections(), + $adminSections, $this->l->t('Administration'), 'settings.AdminSettings.index' )); @@ -108,8 +110,8 @@ class SectionSearch implements IProvider { foreach ($sections as $priority => $sectionsByPriority) { foreach ($sectionsByPriority as $section) { if ( - stripos($section->getName(), $query->getTerm()) === false && - stripos($section->getID(), $query->getTerm()) === false + stripos($section->getName(), $query->getTerm()) === false + && stripos($section->getID(), $query->getTerm()) === false ) { continue; } diff --git a/apps/settings/lib/Search/UserSearch.php b/apps/settings/lib/Search/UserSearch.php index 316b53b7808..5326f4cefff 100644 --- a/apps/settings/lib/Search/UserSearch.php +++ b/apps/settings/lib/Search/UserSearch.php @@ -29,7 +29,7 @@ class UserSearch implements IProvider { } public function getOrder(string $route, array $routeParameters): ?int { - return $route === 'settings.Users.usersList' + return str_starts_with($route, 'settings.Users.usersList') ? 300 : null; } |