aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorMisha M.-Kupriyanov <kupriyanov@strato.de>2024-09-09 15:50:27 +0200
committerMisha M.-Kupriyanov <kupriyanov@strato.de>2024-11-13 11:15:24 +0100
commit8e570041a533dc958d22f4998988abf31e0a58bf (patch)
tree903417c9f3158b9516b0d6fc63841945edcdd605 /lib/private
parenta489d88a2b2203cffdd08f4a5f1ae03a497bc52f (diff)
downloadnextcloud-server-8e570041a533dc958d22f4998988abf31e0a58bf.tar.gz
nextcloud-server-8e570041a533dc958d22f4998988abf31e0a58bf.zip
feat(search): reduce search providers via core app config unified_search.providers_allowedartonge/local/IONOS/feat/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>
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Search/SearchComposer.php24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/private/Search/SearchComposer.php b/lib/private/Search/SearchComposer.php
index 71fd003717c..77d7ca62311 100644
--- a/lib/private/Search/SearchComposer.php
+++ b/lib/private/Search/SearchComposer.php
@@ -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'],