]> source.dussan.org Git - nextcloud-server.git/commitdiff
use storage wrapper for quota instead of a filesystem proxy
authorRobin Appelman <icewind@owncloud.com>
Thu, 25 Jul 2013 14:01:37 +0000 (16:01 +0200)
committerRobin Appelman <icewind@owncloud.com>
Thu, 25 Jul 2013 14:01:37 +0000 (16:01 +0200)
lib/util.php

index 2586ad28320eaefc06174fd41ba8bba3b58d34bc..4c878f8b2fe6b094de3c7e4ca98f862a50ea7a93 100755 (executable)
@@ -46,6 +46,16 @@ class OC_Util {
                }
 
                if( $user != "" ) { //if we aren't logged in, there is no use to set up the filesystem
+                       $quota = self::getUserQuota($user);
+                       if ($quota !== \OC\Files\SPACE_UNLIMITED) {
+                               \OC\Files\Filesystem::addStorageWrapper(function($mountPoint, $storage) use ($quota, $user) {
+                                       if ($mountPoint === '/' . $user . '/'){
+                                               return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota));
+                                       } else {
+                                               return $storage;
+                                       }
+                               });
+                       }
                        $user_dir = '/'.$user.'/files';
                        $user_root = OC_User::getHome($user);
                        $userdirectory = $user_root . '/files';
@@ -55,9 +65,7 @@ class OC_Util {
                        //jail the user into his "home" directory
                        \OC\Files\Filesystem::init($user, $user_dir);
 
-                       $quotaProxy=new OC_FileProxy_Quota();
                        $fileOperationProxy = new OC_FileProxy_FileOperations();
-                       OC_FileProxy::register($quotaProxy);
                        OC_FileProxy::register($fileOperationProxy);
 
                        OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $user_dir));
@@ -65,6 +73,18 @@ class OC_Util {
                return true;
        }
 
+       public static function getUserQuota($user){
+               $userQuota = OC_Preferences::getValue($user, 'files', 'quota', 'default');
+               if($userQuota === 'default') {
+                       $userQuota = OC_AppConfig::getValue('files', 'default_quota', 'none');
+               }
+               if($userQuota === 'none') {
+                       return \OC\Files\SPACE_UNLIMITED;
+               }else{
+                       return OC_Helper::computerFileSize($userQuota);
+               }
+       }
+
        public static function tearDownFS() {
                \OC\Files\Filesystem::tearDown();
                self::$fsSetup=false;