]> source.dussan.org Git - nextcloud-server.git/commitdiff
Check if quota should be applied to path when creating directories
authorJulius Härtl <jus@bitgrid.net>
Tue, 8 Sep 2020 05:33:54 +0000 (07:33 +0200)
committerJulius Härtl <jus@bitgrid.net>
Tue, 8 Sep 2020 05:33:57 +0000 (07:33 +0200)
This fixes an issue where the files_trashbin hierarchy of a user could
not been created as the mkdir operations were blocked by the quota
storage wrapper. Even with 0 quota, users should be able to have a
trashbin for external storages.

Signed-off-by: Julius Härtl <jus@bitgrid.net>
lib/private/Files/Storage/Wrapper/Quota.php

index 62d3335987ce7c81e3e58f80fe49183e3de2ab23..4b99af46b0294e85c505a76674e1a104c2d7eef3 100644 (file)
@@ -161,7 +161,7 @@ class Quota extends Wrapper {
                        $free = $this->free_space($path);
                        if ($source && $free >= 0 && $mode !== 'r' && $mode !== 'rb') {
                                // only apply quota for files, not metadata, trash or others
-                               if (strpos(ltrim($path, '/'), 'files/') === 0) {
+                               if ($this->shouldApplyQuota($path)) {
                                        return \OC\Files\Stream\Quota::wrap($source, $free);
                                }
                        }
@@ -182,6 +182,13 @@ class Quota extends Wrapper {
                return ($extension === 'part');
        }
 
+       /**
+        * Only apply quota for files, not metadata, trash or others
+        */
+       private function shouldApplyQuota(string $path): bool {
+               return strpos(ltrim($path, '/'), 'files/') === 0;
+       }
+
        /**
         * @param IStorage $sourceStorage
         * @param string $sourceInternalPath
@@ -214,7 +221,7 @@ class Quota extends Wrapper {
 
        public function mkdir($path) {
                $free = $this->free_space($path);
-               if ($free === 0.0) {
+               if ($this->shouldApplyQuota($path) && $free === 0.0) {
                        return false;
                }