From 6b82b502501b6eb7d02adab58d0cc47847a114fe Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Tue, 8 Oct 2024 10:45:27 -0700 Subject: [PATCH] fix: Fix empty sections appearing in search results Signed-off-by: Christopher Ng --- apps/settings/lib/Search/SectionSearch.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/settings/lib/Search/SectionSearch.php b/apps/settings/lib/Search/SectionSearch.php index 321534581b53e..16098ab58cac9 100644 --- a/apps/settings/lib/Search/SectionSearch.php +++ b/apps/settings/lib/Search/SectionSearch.php @@ -74,9 +74,25 @@ public function getOrder(string $route, array $routeParameters): int { public function search(IUser $user, ISearchQuery $query): SearchResult { $isAdmin = $this->groupManager->isAdmin($user->getUID()); + $personalSections = $this->settingsManager->getPersonalSections(); + foreach ($personalSections as $priority => &$sections) { + $sections = array_values(array_filter( + $sections, + fn (IIconSection $section) => !empty($this->settingsManager->getPersonalSettings($section->getID())), + )); + } + + $adminSections = $this->settingsManager->getAdminSections(); + foreach ($adminSections as $priority => &$sections) { + $sections = 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 +100,7 @@ public function search(IUser $user, ISearchQuery $query): SearchResult { if ($this->groupManager->isAdmin($user->getUID())) { $result = array_merge($result, $this->searchSections( $query, - $this->settingsManager->getAdminSections(), + $adminSections, $this->l->t('Administration'), 'settings.AdminSettings.index' ));