]> source.dussan.org Git - nextcloud-server.git/commitdiff
Dont always use the current users quota when calculating storage info 20258/head
authorRobin Appelman <robin@icewind.nl>
Wed, 4 Mar 2020 16:20:27 +0000 (17:20 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Wed, 1 Apr 2020 12:26:29 +0000 (12:26 +0000)
instead pass the quota as parameter.

Without this fix, when 'quota_include_external_storage' is enabled, the
webui will show the quota configured for the admin for every user
instead of the users quota

Signed-off-by: Robin Appelman <robin@icewind.nl>
lib/private/legacy/helper.php
lib/private/legacy/util.php

index 3ddb9d07b1462b24eb1cb3d35cd2102797307721..19c9ca7f91ca217b8c445c3ac1932dfb22826588 100644 (file)
@@ -42,6 +42,8 @@
  * along with this program. If not, see <http://www.gnu.org/licenses/>
  *
  */
+
+use OCP\IUser;
 use Symfony\Component\Process\ExecutableFinder;
 
 /**
@@ -503,19 +505,14 @@ class OC_Helper {
                                || $storage->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage')
                        ) {
                                /** @var \OC\Files\Storage\Home $storage */
-                               $userInstance = $storage->getUser();
-                               $user = ($userInstance === null) ? null : $userInstance->getUID();
-                       } else {
-                               $user = \OC::$server->getUserSession()->getUser()->getUID();
-                       }
-                       if ($user) {
-                               $quota = OC_Util::getUserQuota($user);
+                               $user = $storage->getUser();
                        } else {
-                               $quota = \OCP\Files\FileInfo::SPACE_UNLIMITED;
+                               $user = \OC::$server->getUserSession()->getUser();
                        }
+                       $quota = OC_Util::getUserQuota($user);
                        if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) {
                                // always get free space / total space from root + mount points
-                               return self::getGlobalStorageInfo();
+                               return self::getGlobalStorageInfo($quota);
                        }
                }
 
@@ -561,11 +558,10 @@ class OC_Helper {
        /**
         * Get storage info including all mount points and quota
         *
+        * @param int $quota
         * @return array
         */
-       private static function getGlobalStorageInfo() {
-               $quota = OC_Util::getUserQuota(\OCP\User::getUser());
-
+       private static function getGlobalStorageInfo($quota) {
                $rootInfo = \OC\Files\Filesystem::getFileInfo('', 'ext');
                $used = $rootInfo['size'];
                if ($used < 0) {
index bf0a1b9bb2026556b27e068b1ba42efcc772e362..9b574993f2c95f0790ccc3da192638e336cbffa8 100644 (file)
@@ -251,8 +251,7 @@ class OC_Util {
                        ) {
                                /** @var \OC\Files\Storage\Home $storage */
                                if (is_object($storage->getUser())) {
-                                       $user = $storage->getUser()->getUID();
-                                       $quota = OC_Util::getUserQuota($user);
+                                       $quota = OC_Util::getUserQuota($storage->getUser());
                                        if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) {
                                                return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota, 'root' => 'files'));
                                        }
@@ -375,11 +374,10 @@ class OC_Util {
        /**
         * Get the quota of a user
         *
-        * @param string $userId
+        * @param IUser|null $user
         * @return float Quota bytes
         */
-       public static function getUserQuota($userId) {
-               $user = \OC::$server->getUserManager()->get($userId);
+       public static function getUserQuota(?IUser $user) {
                if (is_null($user)) {
                        return \OCP\Files\FileInfo::SPACE_UNLIMITED;
                }