]> source.dussan.org Git - nextcloud-server.git/commitdiff
Make sure quota_preset is using numerical indexes 19589/head
authorDaniel Kesselberg <mail@danielkesselberg.de>
Sat, 22 Feb 2020 19:02:56 +0000 (20:02 +0100)
committerDaniel Kesselberg <mail@danielkesselberg.de>
Sat, 22 Feb 2020 19:06:16 +0000 (20:06 +0100)
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 <mail@danielkesselberg.de>
apps/settings/lib/Controller/UsersController.php

index 2c7c17bced2cce967a4ac8d69c528bcbecef9438..2c20ce36caa63e314a1840e0e39ecf19adfbed10 100644 (file)
@@ -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
         *