mirror of
https://github.com/nextcloud/server.git
synced 2026-02-14 00:04:57 -05:00
feat(search): reduce search providers via core app config unified_search.providers_allowed
reduce search providers by setting core config value to unified_search.providers_allowed = [ 'files', 'setting' ] ./occ config:app:set --value '["files","settings"]' --type array core unified_search.providers_allowed Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
This commit is contained in:
parent
a489d88a2b
commit
8e570041a5
1 changed files with 24 additions and 0 deletions
|
|
@ -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'],
|
||||
|
|
|
|||
Loading…
Reference in a new issue