Check quota before transfer ownership

Fixes #15664

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2019-11-13 11:22:19 +01:00
parent eee21c89d9
commit fc4c107788
No known key found for this signature in database
GPG Key ID: F941078878347C0C
1 changed files with 14 additions and 2 deletions

View File

@ -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.');
}
}
/**