Merge pull request #17928 from nextcloud/backport/17924/stable17

[stable17] Check quota before transfer ownership
This commit is contained in:
Roeland Jago Douma 2019-11-13 19:56:19 +01:00 committed by GitHub
commit 6708ed71a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 2 deletions

View File

@ -32,6 +32,7 @@ use OC\Files\Filesystem;
use OC\Files\View; use OC\Files\View;
use OCP\Files\FileInfo; use OCP\Files\FileInfo;
use OCP\Files\IHomeStorage; use OCP\Files\IHomeStorage;
use OCP\Files\IRootFolder;
use OCP\Files\Mount\IMountManager; use OCP\Files\Mount\IMountManager;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager; use OCP\IUserManager;
@ -76,7 +77,10 @@ class TransferOwnership extends Command {
/** @var string */ /** @var string */
private $finalTarget; 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->userManager = $userManager;
$this->shareManager = $shareManager; $this->shareManager = $shareManager;
$this->mountManager = $mountManager; $this->mountManager = $mountManager;
@ -174,6 +178,15 @@ class TransferOwnership extends Command {
*/ */
protected function analyse(OutputInterface $output) { protected function analyse(OutputInterface $output) {
$view = new View(); $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 ..."); $output->writeln("Analysing files of $this->sourceUser ...");
$progress = new ProgressBar($output); $progress = new ProgressBar($output);
$progress->start(); $progress->start();
@ -207,7 +220,6 @@ class TransferOwnership extends Command {
} }
throw new \Exception('Execution terminated.'); throw new \Exception('Execution terminated.');
} }
} }
/** /**