Merge pull request #1731 from owncloud/unknown-freespace

Give storage backends the option to define having no known free space
This commit is contained in:
Frank Karlitschek 2013-02-19 15:18:12 -08:00
commit 3878203679
10 changed files with 28 additions and 27 deletions

View File

@ -48,7 +48,7 @@ $totalSize = 0;
foreach ($files['size'] as $size) {
$totalSize += $size;
}
if ($totalSize > \OC\Files\Filesystem::free_space($dir)) {
if ($totalSize > $maxUploadFilesize) {
OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'),
'uploadMaxFilesize' => $maxUploadFilesize,
'maxHumanFilesize' => $maxHumanFilesize)));

View File

@ -229,11 +229,6 @@ class AmazonS3 extends \OC\Files\Storage\Common {
return false;
}
public function free_space($path) {
// Infinite?
return false;
}
public function touch($path, $mtime = null) {
if (is_null($mtime)) {
$mtime = time();

View File

@ -242,10 +242,6 @@ class SFTP extends \OC\Files\Storage\Common {
}
}
public function free_space($path) {
return -1;
}
public function touch($path, $mtime=null) {
try {
if (!is_null($mtime)) return false;

View File

@ -76,10 +76,6 @@ abstract class StreamWrapper extends \OC\Files\Storage\Common{
return fopen($this->constructUrl($path), $mode);
}
public function free_space($path) {
return 0;
}
public function touch($path, $mtime=null) {
$this->init();
if(is_null($mtime)) {

View File

@ -478,10 +478,6 @@ class SWIFT extends \OC\Files\Storage\Common{
}
}
public function free_space($path) {
return 1024*1024*1024*8;
}
public function touch($path, $mtime=null) {
$this->init();
$obj=$this->getObject($path);

View File

@ -222,7 +222,7 @@ class DAV extends \OC\Files\Storage\Common{
return 0;
}
} catch(\Exception $e) {
return 0;
return \OC\Files\FREE_SPACE_UNKNOWN;
}
}

View File

@ -62,21 +62,21 @@ class OC_FileProxy_Quota extends OC_FileProxy{
* @var string $internalPath
*/
list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($path);
$owner=$storage->getOwner($internalPath);
$owner = $storage->getOwner($internalPath);
if (!$owner) {
return -1;
}
$totalSpace=$this->getQuota($owner);
if($totalSpace==-1) {
$totalSpace = $this->getQuota($owner);
if($totalSpace == -1) {
return -1;
}
$view = new \OC\Files\View("/".$owner."/files");
$rootInfo=$view->getFileInfo('/');
$usedSpace=isset($rootInfo['size'])?$rootInfo['size']:0;
return $totalSpace-$usedSpace;
$rootInfo = $view->getFileInfo('/');
$usedSpace = isset($rootInfo['size'])?$rootInfo['size']:0;
return $totalSpace - $usedSpace;
}
public function postFree_space($path, $space) {
@ -84,6 +84,9 @@ class OC_FileProxy_Quota extends OC_FileProxy{
if($free==-1) {
return $space;
}
if ($space < 0){
return $free;
}
return min($free, $space);
}

View File

@ -29,6 +29,8 @@
namespace OC\Files;
const FREE_SPACE_UNKNOWN = -2;
class Filesystem {
public static $loaded = false;
/**

View File

@ -301,4 +301,13 @@ abstract class Common implements \OC\Files\Storage\Storage {
}
return implode('/', $output);
}
/**
* get the free space in the storage
* @param $path
* return int
*/
public function free_space($path){
return \OC\Files\FREE_SPACE_UNKNOWN;
}
}

View File

@ -762,9 +762,13 @@ class OC_Helper {
$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
$freeSpace = \OC\Files\Filesystem::free_space($dir);
$freeSpace = max($freeSpace, 0);
if($freeSpace !== \OC\Files\FREE_SPACE_UNKNOWN){
$freeSpace = max($freeSpace, 0);
return min($maxUploadFilesize, $freeSpace);
return min($maxUploadFilesize, $freeSpace);
} else {
return $maxUploadFilesize;
}
}
/**