diff --git a/lib/Mount/MountProvider.php b/lib/Mount/MountProvider.php index d1df7a2ed..da1292a8f 100644 --- a/lib/Mount/MountProvider.php +++ b/lib/Mount/MountProvider.php @@ -30,6 +30,7 @@ use OCP\Files\Cache\ICacheEntry; use OCP\Files\Config\IMountProvider; use OCP\Files\Folder; +use OCP\Files\IHomeStorage; use OCP\Files\Mount\IMountPoint; use OCP\Files\NotFoundException; use OCP\Files\Storage\IStorageFactory; @@ -85,7 +86,22 @@ public function getFoldersForUser(IUser $user) { public function getMountsForUser(IUser $user, IStorageFactory $loader) { $folders = $this->getFoldersForUser($user); - return array_map(function ($folder) use ($user, $loader) { + /** @var Folder $folder */ + $userHome = \OC::$server->getRootFolder()->getUserFolder($user->getUID()); + return array_map(function ($folder) use ($user, $loader, $userHome) { + // check for existing files in the user home and rename them if needed + $folderName = $folder['mount_point']; + $i = 1; + while($userHome->nodeExists($folderName)) { + $folderName = $folder['mount_point'] . ' (' . $i++ . ')'; + } + if ($folderName !== $folder['mount_point']) { + $node = $userHome->get($folder['mount_point']); + if ($node->getStorage()->instanceOfStorage('\OCP\Files\IHomeStorage')) { + $node->move($userHome->getPath() . '/' . $folderName); + } + } + return $this->getMount( $folder['folder_id'], '/' . $user->getUID() . '/files/' . $folder['mount_point'],