Detect storage full when doing cross storage copy/move
This commit is contained in:
parent
d26c6cab90
commit
404773940d
|
@ -55,9 +55,14 @@ class Quota extends Wrapper {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $path
|
* @param string $path
|
||||||
|
* @param \OC\Files\Storage\Storage $storage
|
||||||
*/
|
*/
|
||||||
protected function getSize($path) {
|
protected function getSize($path, $storage = null) {
|
||||||
$cache = $this->getCache();
|
if (is_null($storage)) {
|
||||||
|
$cache = $this->getCache();
|
||||||
|
} else {
|
||||||
|
$cache = $storage->getCache();
|
||||||
|
}
|
||||||
$data = $cache->get($path);
|
$data = $cache->get($path);
|
||||||
if (is_array($data) and isset($data['size'])) {
|
if (is_array($data) and isset($data['size'])) {
|
||||||
return $data['size'];
|
return $data['size'];
|
||||||
|
@ -141,4 +146,34 @@ class Quota extends Wrapper {
|
||||||
return $source;
|
return $source;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \OCP\Files\Storage $sourceStorage
|
||||||
|
* @param string $sourceInternalPath
|
||||||
|
* @param string $targetInternalPath
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function copyFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
|
||||||
|
$free = $this->free_space('');
|
||||||
|
if ($free < 0 or $this->getSize($sourceInternalPath, $sourceStorage) < $free) {
|
||||||
|
return $this->storage->copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \OCP\Files\Storage $sourceStorage
|
||||||
|
* @param string $sourceInternalPath
|
||||||
|
* @param string $targetInternalPath
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
|
||||||
|
$free = $this->free_space('');
|
||||||
|
if ($free < 0 or $this->getSize($sourceInternalPath, $sourceStorage) < $free) {
|
||||||
|
return $this->storage->moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue