fix getAllValues() to filter values based on prefix

Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/43370/head
Maxence Lange 4 months ago
parent 7891c05224
commit 2122a81419

@ -210,12 +210,17 @@ class AppConfig implements IAppConfig {
* @return array<string, string> [configKey => configValue]
* @since 29.0.0
*/
public function getAllValues(string $app, string $key = '', bool $filtered = false): array {
$this->assertParams($app, $key);
public function getAllValues(string $app, string $prefix = '', bool $filtered = false): array {
$this->assertParams($app, $prefix);
// if we want to filter values, we need to get sensitivity
$this->loadConfigAll();
// array_merge() will remove numeric keys (here config keys), so addition arrays instead
$values = ($this->fastCache[$app] ?? []) + ($this->lazyCache[$app] ?? []);
$values = array_filter(
(($this->fastCache[$app] ?? []) + ($this->lazyCache[$app] ?? [])),
function (string $key) use ($prefix): bool {
return str_starts_with($key, $prefix); // filter values based on $prefix
}, ARRAY_FILTER_USE_KEY
);
if (!$filtered) {
return $values;

@ -137,13 +137,13 @@ interface IAppConfig {
* **WARNING:** ignore lazy filtering, all config values are loaded from database
*
* @param string $app id of the app
* @param string $key config keys prefix to search, can be empty.
* @param string $prefix config keys prefix to search, can be empty.
* @param bool $filtered filter sensitive config values
*
* @return array<string, string> [configKey => configValue]
* @since 29.0.0
*/
public function getAllValues(string $app, string $key = '', bool $filtered = false): array;
public function getAllValues(string $app, string $prefix = '', bool $filtered = false): array;
/**
* List all apps storing a specific config key and its stored value.
@ -152,7 +152,7 @@ interface IAppConfig {
* @param string $key config key
* @param bool $lazy search within lazy loaded config
*
* @return array<string, string> [appId => configValue]
* @return array<string, string|int|float|bool|array> [appId => configValue]
* @since 29.0.0
*/
public function searchValues(string $key, bool $lazy = false): array;

Loading…
Cancel
Save