aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-11-13 15:05:19 +0100
committerGitHub <noreply@github.com>2019-11-13 15:05:19 +0100
commit570bb4064369f3bea6f22d8ff48fd7f16b8bfbf8 (patch)
tree32bdff42c2c3480c66256e3b1a0dea2a6c5b5a91
parentd9204f61ead5f5c95cbef21a5d6fc40ac2d1861a (diff)
parentfc4c1077882681b94bf02c9957fe2816ddeadbb7 (diff)
downloadnextcloud-server-570bb4064369f3bea6f22d8ff48fd7f16b8bfbf8.tar.gz
nextcloud-server-570bb4064369f3bea6f22d8ff48fd7f16b8bfbf8.zip
Merge pull request #17924 from nextcloud/enh/15664/check_quota_before_transfer
Check quota before transfer ownership
-rw-r--r--apps/files/lib/Command/TransferOwnership.php16
1 files changed, 14 insertions, 2 deletions
diff --git a/apps/files/lib/Command/TransferOwnership.php b/apps/files/lib/Command/TransferOwnership.php
index f417898f217..a77a02a4947 100644
--- a/apps/files/lib/Command/TransferOwnership.php
+++ b/apps/files/lib/Command/TransferOwnership.php
@@ -32,6 +32,7 @@ use OC\Files\Filesystem;
use OC\Files\View;
use OCP\Files\FileInfo;
use OCP\Files\IHomeStorage;
+use OCP\Files\IRootFolder;
use OCP\Files\Mount\IMountManager;
use OCP\IUser;
use OCP\IUserManager;
@@ -76,7 +77,10 @@ class TransferOwnership extends Command {
/** @var string */
private $finalTarget;
- public function __construct(IUserManager $userManager, IManager $shareManager, IMountManager $mountManager) {
+ public function __construct(IUserManager $userManager,
+ IManager $shareManager,
+ IMountManager $mountManager,
+ IRootFolder $rootFolder) {
$this->userManager = $userManager;
$this->shareManager = $shareManager;
$this->mountManager = $mountManager;
@@ -174,6 +178,15 @@ class TransferOwnership extends Command {
*/
protected function analyse(OutputInterface $output) {
$view = new View();
+
+ $output->writeln('Validating quota');
+ $size = $view->getFileInfo($this->sourcePath, false)->getSize(false);
+ $freeSpace = $view->free_space($this->destinationUser . '/files/');
+ if ($size > $freeSpace) {
+ $output->writeln('<error>Target user does not have enough free space available</error>');
+ throw new \Exception('Execution terminated');
+ }
+
$output->writeln("Analysing files of $this->sourceUser ...");
$progress = new ProgressBar($output);
$progress->start();
@@ -207,7 +220,6 @@ class TransferOwnership extends Command {
}
throw new \Exception('Execution terminated.');
}
-
}
/**