From 95abf3191a2e870d53cd6bba137813f962f297ce Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 15 May 2017 22:20:38 +0200 Subject: [PATCH 1/2] Proper separation of quota values in APIs User::getQuota() and User::setQuota() are now reading the exact value as set in the database instead of interpreting it. This is how it used to behave. Util::getUserQuota() is the method that interprets the quota for example by replacing a default value with the default quota value from the app config. --- apps/files_trashbin/lib/trashbin.php | 4 ++++ apps/files_versions/lib/storage.php | 5 ++++- lib/private/user/user.php | 6 +----- lib/private/util.php | 5 ++++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php index 65ffa11c08a2..192407657c0e 100644 --- a/apps/files_trashbin/lib/trashbin.php +++ b/apps/files_trashbin/lib/trashbin.php @@ -597,6 +597,10 @@ private static function calculateFreeSpace($trashbinSize, $user) { return 0; } $quota = $userObject->getQuota(); + if ($quota === null || $quota === 'default') { + $quota = \OC::$server->getConfig()->getAppValue('files', 'default_quota', null); + } + if ($quota === null || $quota === 'none') { $quota = Filesystem::free_space('/'); $softQuota = false; diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php index baf7ff7f95dd..11b5937340a5 100644 --- a/apps/files_versions/lib/storage.php +++ b/apps/files_versions/lib/storage.php @@ -716,7 +716,10 @@ public static function expire($filename, $uid) { $softQuota = true; $quota = $user->getQuota(); - if ( $quota === null || $quota === 'none' ) { + if ($quota === null || $quota === 'default') { + $quota = $config->getAppValue('files', 'default_quota', null); + } + if ($quota === null || $quota === 'none') { $quota = Filesystem::free_space('/'); $softQuota = false; } else { diff --git a/lib/private/user/user.php b/lib/private/user/user.php index c3d0baee80e7..b8a2a420bc22 100644 --- a/lib/private/user/user.php +++ b/lib/private/user/user.php @@ -341,11 +341,7 @@ public function getEMailAddress() { * @since 9.0.0 */ public function getQuota() { - $quota = $this->config->getUserValue($this->uid, 'files', 'quota', 'default'); - if($quota === 'default') { - $quota = $this->config->getAppValue('files', 'default_quota', 'none'); - } - return $quota; + return $this->config->getUserValue($this->uid, 'files', 'quota', 'default'); } /** diff --git a/lib/private/util.php b/lib/private/util.php index 61e1f84e2e85..79b922f05d32 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -296,7 +296,10 @@ public static function getUserQuota($userId) { return \OCP\Files\FileInfo::SPACE_UNLIMITED; } $userQuota = $user->getQuota(); - if($userQuota === 'none') { + if ($userQuota === null || $userQuota === 'default') { + $userQuota = \OC::$server->getConfig()->getAppValue('files', 'default_quota', 'none'); + } + if ($userQuota === null || $userQuota === 'none') { return \OCP\Files\FileInfo::SPACE_UNLIMITED; } return OC_Helper::computerFileSize($userQuota); From 4247bff368f4c34b3352a1d8491bcd66d4521888 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 16 May 2017 16:33:12 +0200 Subject: [PATCH 2/2] Use getUserQuota to prevent repeating logic --- apps/files_trashbin/lib/trashbin.php | 8 ++------ apps/files_versions/lib/storage.php | 7 ++----- lib/private/util.php | 8 ++++++-- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php index 192407657c0e..69636fa09882 100644 --- a/apps/files_trashbin/lib/trashbin.php +++ b/apps/files_trashbin/lib/trashbin.php @@ -596,12 +596,8 @@ private static function calculateFreeSpace($trashbinSize, $user) { if(is_null($userObject)) { return 0; } - $quota = $userObject->getQuota(); - if ($quota === null || $quota === 'default') { - $quota = \OC::$server->getConfig()->getAppValue('files', 'default_quota', null); - } - - if ($quota === null || $quota === 'none') { + $quota = \OC_Util::getUserQuota($userObject); + if ($quota === \OCP\Files\FileInfo::SPACE_UNLIMITED) { $quota = Filesystem::free_space('/'); $softQuota = false; // inf or unknown free space diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php index 11b5937340a5..537cbb600700 100644 --- a/apps/files_versions/lib/storage.php +++ b/apps/files_versions/lib/storage.php @@ -715,11 +715,8 @@ public static function expire($filename, $uid) { $versionsFileview = new View('/'.$uid.'/files_versions'); $softQuota = true; - $quota = $user->getQuota(); - if ($quota === null || $quota === 'default') { - $quota = $config->getAppValue('files', 'default_quota', null); - } - if ($quota === null || $quota === 'none') { + $quota = \OC_Util::getUserQuota($user); + if ($quota === \OCP\Files\FileInfo::SPACE_UNLIMITED) { $quota = Filesystem::free_space('/'); $softQuota = false; } else { diff --git a/lib/private/util.php b/lib/private/util.php index 79b922f05d32..f902637831cc 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -287,11 +287,15 @@ public static function isDefaultExpireDateEnforced() { /** * Get the quota of a user * - * @param string $userId + * @param string|IUser $userId * @return int Quota bytes */ public static function getUserQuota($userId) { - $user = \OC::$server->getUserManager()->get($userId); + if ($userId instanceof IUser) { + $user = $userId; + } else { + $user = \OC::$server->getUserManager()->get($userId); + } if (is_null($user)) { return \OCP\Files\FileInfo::SPACE_UNLIMITED; }