Merge pull request #48841 from IONOS-Productivity/feat/config_unified_search_providers_allowed

feat: reduce search providers per config value "unified_search_providers_allowed"
This commit is contained in:
Louis 2024-11-13 12:24:56 +01:00 committed by GitHub
commit d660b0813a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -11,6 +11,7 @@ namespace OC\Search;
use InvalidArgumentException;
use OC\AppFramework\Bootstrap\Coordinator;
use OC\Core\ResponseDefinitions;
use OCP\IAppConfig;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\Search\FilterDefinition;
@ -24,7 +25,10 @@ use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
use RuntimeException;
use function array_filter;
use function array_map;
use function array_values;
use function in_array;
/**
* Queries individual \OCP\Search\IProvider implementations and composes a
@ -62,6 +66,7 @@ class SearchComposer {
private ContainerInterface $container,
private IURLGenerator $urlGenerator,
private LoggerInterface $logger,
private IAppConfig $appConfig,
) {
$this->commonFilters = [
IFilter::BUILTIN_TERM => new FilterDefinition(IFilter::BUILTIN_TERM, FilterDefinition::TYPE_STRING),
@ -113,6 +118,8 @@ class SearchComposer {
}
}
$this->providers = $this->filterProviders($this->providers);
$this->loadFilters();
}
@ -202,6 +209,23 @@ class SearchComposer {
return $providers;
}
/**
* Filter providers based on 'unified_search.providers_allowed' core app config array
* @param array $providers
* @return array
*/
private function filterProviders(array $providers): array {
$allowedProviders = $this->appConfig->getValueArray('core', 'unified_search.providers_allowed');
if (empty($allowedProviders)) {
return $providers;
}
return array_values(array_filter($providers, function ($p) use ($allowedProviders) {
return in_array($p['id'], $allowedProviders);
}));
}
private function fetchIcon(string $appId, string $providerId): string {
$icons = [
[$providerId, $providerId . '.svg'],