From 8e8e912015309700fc2d5ee021cd171e18c27b47 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Sat, 22 Feb 2020 20:02:56 +0100 Subject: [PATCH] Make sure quota_preset is using numerical indexes If one set quota_present to "default, none, 1 GB, 5 GB, 10 GB" the old implementation will remove default and none but keep the array indexes. Later json_encode will recognize a array with 2 as first index as object and hence quotaPreset.reduce will fail. Signed-off-by: Daniel Kesselberg --- .../lib/Controller/UsersController.php | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/settings/lib/Controller/UsersController.php b/apps/settings/lib/Controller/UsersController.php index 2c7c17bced2..2c20ce36caa 100644 --- a/apps/settings/lib/Controller/UsersController.php +++ b/apps/settings/lib/Controller/UsersController.php @@ -214,12 +214,7 @@ class UsersController extends Controller { ]; /* QUOTAS PRESETS */ - $quotaPreset = $this->config->getAppValue('files', 'quota_preset', '1 GB, 5 GB, 10 GB'); - $quotaPreset = explode(',', $quotaPreset); - foreach ($quotaPreset as &$preset) { - $preset = trim($preset); - } - $quotaPreset = array_diff($quotaPreset, array('default', 'none')); + $quotaPreset = $this->parseQuotaPreset($this->config->getAppValue('files', 'quota_preset', '1 GB, 5 GB, 10 GB')); $defaultQuota = $this->config->getAppValue('files', 'default_quota', 'none'); \OC::$server->getEventDispatcher()->dispatch('OC\Settings\Users::loadAdditionalScripts'); @@ -247,6 +242,19 @@ class UsersController extends Controller { return new TemplateResponse('settings', 'settings-vue', ['serverData' => $serverData]); } + /** + * Parse the app value for quota_present + * + * @param string $quotaPreset + * @return array + */ + protected function parseQuotaPreset(string $quotaPreset): array { + // 1 GB, 5 GB, 10 GB => [1 GB, 5 GB, 10 GB] + $presets = array_filter(array_map('trim', explode(',', $quotaPreset))); + // Drop default and none, Make array indexes numerically + return array_values(array_diff($presets, ['default', 'none'])); + } + /** * check if the admin can change the users password *