diff options
author | Robin Appelman <robin@icewind.nl> | 2018-08-16 20:10:45 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2018-08-16 21:27:48 +0200 |
commit | b79f338e71c37689e39c95633a92e1ed8ed79db7 (patch) | |
tree | 0ae3a3b9df12ff9a5b37a9cd4f33a17f2f48d59b /apps/files_sharing | |
parent | bc4f10ad838ee2c91161b0e678ed5604de1d9364 (diff) | |
download | nextcloud-server-b79f338e71c37689e39c95633a92e1ed8ed79db7.tar.gz nextcloud-server-b79f338e71c37689e39c95633a92e1ed8ed79db7.zip |
re-use view instances for shared storages
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/lib/MountProvider.php | 15 | ||||
-rw-r--r-- | apps/files_sharing/lib/SharedMount.php | 8 |
2 files changed, 17 insertions, 6 deletions
diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php index f2fc45dae4e..cc29a8ce686 100644 --- a/apps/files_sharing/lib/MountProvider.php +++ b/apps/files_sharing/lib/MountProvider.php @@ -27,6 +27,7 @@ namespace OCA\Files_Sharing; +use OC\Files\View; use OCP\Files\Config\IMountProvider; use OCP\Files\Storage\IStorageFactory; use OCP\IConfig; @@ -84,19 +85,29 @@ class MountProvider implements IMountProvider { $superShares = $this->buildSuperShares($shares, $user); $mounts = []; + $view = new View('/' . $user->getUID() . '/files'); + $ownerViews = []; foreach ($superShares as $share) { try { + /** @var \OCP\Share\IShare $parentShare */ + $parentShare = $share[0]; + $owner = $parentShare->getShareOwner(); + if (!isset($ownerViews[$owner])) { + $ownerViews[$owner] = new View('/' . $parentShare->getShareOwner() . '/files'); + } $mount = new SharedMount( '\OCA\Files_Sharing\SharedStorage', $mounts, [ 'user' => $user->getUID(), // parent share - 'superShare' => $share[0], + 'superShare' => $parentShare, // children/component of the superShare 'groupedShares' => $share[1], + 'ownerView' => $ownerViews[$owner] ], - $storageFactory + $storageFactory, + $view ); $mounts[$mount->getMountPoint()] = $mount; } catch (\Exception $e) { diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php index 40553ef397a..37aa7220620 100644 --- a/apps/files_sharing/lib/SharedMount.php +++ b/apps/files_sharing/lib/SharedMount.php @@ -61,19 +61,19 @@ class SharedMount extends MountPoint implements MoveableMount { /** * @param string $storage * @param SharedMount[] $mountpoints - * @param array|null $arguments + * @param array $arguments * @param \OCP\Files\Storage\IStorageFactory $loader + * @param View $recipientView */ - public function __construct($storage, array $mountpoints, $arguments = null, $loader = null) { + public function __construct($storage, array $mountpoints, $arguments, $loader, $recipientView) { $this->user = $arguments['user']; - $this->recipientView = new View('/' . $this->user . '/files'); + $this->recipientView = $recipientView; $this->superShare = $arguments['superShare']; $this->groupedShares = $arguments['groupedShares']; $newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints); $absMountPoint = '/' . $this->user . '/files' . $newMountPoint; - $arguments['ownerView'] = new View('/' . $this->superShare->getShareOwner() . '/files'); parent::__construct($storage, $absMountPoint, $arguments, $loader); } |