From 69c51bb163cf2abde60ba5d5a02c394d9a812c4d Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 28 Jul 2025 16:54:13 +0200 Subject: [PATCH] fix(search): Fix SearchComposer.php filtering logic keep the $this->providers types Test via ./occ config:app:set --value '["files","settings"]' --type array core unified_search.providers_allowed should be part of 8e570041 Signed-off-by: Misha M.-Kupriyanov --- lib/private/Search/SearchComposer.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/private/Search/SearchComposer.php b/lib/private/Search/SearchComposer.php index 77d7ca62311..a33b7d53251 100644 --- a/lib/private/Search/SearchComposer.php +++ b/lib/private/Search/SearchComposer.php @@ -118,7 +118,7 @@ class SearchComposer { } } - $this->providers = $this->filterProviders($this->providers); + $this->filterProviders(); $this->loadFilters(); } @@ -211,19 +211,21 @@ class SearchComposer { /** * Filter providers based on 'unified_search.providers_allowed' core app config array - * @param array $providers - * @return array + * Will remove providers that are not in the allowed list */ - private function filterProviders(array $providers): array { + private function filterProviders(): void { $allowedProviders = $this->appConfig->getValueArray('core', 'unified_search.providers_allowed'); if (empty($allowedProviders)) { - return $providers; + return; } - return array_values(array_filter($providers, function ($p) use ($allowedProviders) { - return in_array($p['id'], $allowedProviders); - })); + foreach (array_keys($this->providers) as $providerId) { + if (!in_array($providerId, $allowedProviders, true)) { + unset($this->providers[$providerId]); + unset($this->handlers[$providerId]); + } + } } private function fetchIcon(string $appId, string $providerId): string {