diff options
Diffstat (limited to 'apps/files/command/transferownership.php')
-rw-r--r-- | apps/files/command/transferownership.php | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/files/command/transferownership.php b/apps/files/command/transferownership.php index 3674727b167..6bf2fae6bdf 100644 --- a/apps/files/command/transferownership.php +++ b/apps/files/command/transferownership.php @@ -24,7 +24,7 @@ namespace OCA\Files\Command; use OC\Files\Filesystem; use OC\Files\View; use OCP\Files\FileInfo; -use OCP\Files\Folder; +use OCP\Files\Mount\IMountManager; use OCP\IUserManager; use OCP\Share\IManager; use OCP\Share\IShare; @@ -42,6 +42,9 @@ class TransferOwnership extends Command { /** @var IManager */ private $shareManager; + /** @var IMountManager */ + private $mountManager; + /** @var FileInfo[] */ private $allFiles = []; @@ -60,9 +63,10 @@ class TransferOwnership extends Command { /** @var string */ private $finalTarget; - public function __construct(IUserManager $userManager, IManager $shareManager) { + public function __construct(IUserManager $userManager, IManager $shareManager, IMountManager $mountManager) { $this->userManager = $userManager; $this->shareManager = $shareManager; + $this->mountManager = $mountManager; parent::__construct(); } @@ -206,6 +210,11 @@ class TransferOwnership extends Command { foreach($this->shares as $share) { if ($share->getSharedWith() === $this->destinationUser) { + // Unmount the shares before deleting, so we don't try to get the storage later on. + $shareMountPoint = $this->mountManager->find('/' . $this->destinationUser . '/files' . $share->getTarget()); + if ($shareMountPoint) { + $this->mountManager->removeMount($shareMountPoint->getMountPoint()); + } $this->shareManager->deleteShare($share); } else { if ($share->getShareOwner() === $this->sourceUser) { |