From ddde1b65db36507b30aa42e991c9b50312f7c97f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= <schiessle@owncloud.com>
Date: Tue, 16 Apr 2013 13:52:46 +0200
Subject: [PATCH] adapt free space calculation to the way it is done for the
 trash bin

---
 apps/files_versions/lib/versions.php | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index 47d044873ad..c38ba688fe0 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -378,12 +378,14 @@ class Storage {
 			$versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions');
 
 			// get available disk space for user
+			$softQuota = true;
 			$quota = \OC_Preferences::getValue($uid, 'files', 'quota');
 			if ( $quota === null || $quota === 'default') {
 				$quota = \OC_Appconfig::getValue('files', 'default_quota');
 			}
 			if ( $quota === null || $quota === 'none' ) {
-				$quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers());
+				$quota = \OC\Files\Filesystem::free_space('/');
+				$softQuota = false;
 			} else {
 				$quota = \OCP\Util::computerFileSize($quota);
 			}
@@ -397,15 +399,21 @@ class Storage {
 			}
 
 			// calculate available space for version history
-			$files_view = new \OC\Files\View('/'.$uid.'/files');
-			$rootInfo = $files_view->getFileInfo('/');
-			$free = $quota-$rootInfo['size']; // remaining free space for user
-			if ( $free > 0 ) {
-				$availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions
+			// subtract size of files and current versions size from quota
+			if ($softQuota) {
+				$files_view = new \OC\Files\View('/'.$uid.'/files');
+				$rootInfo = $files_view->getFileInfo('/');
+				$free = $quota-$rootInfo['size']; // remaining free space for user
+				if ( $free > 0 ) {
+					$availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions
+				} else {
+					$availableSpace = $free-$versionsSize;
+				}
 			} else {
-				$availableSpace = $free-$versionsSize;
+				$availableSpace = $quota;
 			}
 
+
 			// after every 1000s run reduce the number of all versions not only for the current file
 			$random = rand(0, 1000);
 			if ($random == 0) {
-- 
GitLab