summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2018-08-16 20:10:45 +0200
committerRobin Appelman <robin@icewind.nl>2018-08-16 21:27:48 +0200
commitb79f338e71c37689e39c95633a92e1ed8ed79db7 (patch)
tree0ae3a3b9df12ff9a5b37a9cd4f33a17f2f48d59b /apps/files_sharing
parentbc4f10ad838ee2c91161b0e678ed5604de1d9364 (diff)
downloadnextcloud-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.php15
-rw-r--r--apps/files_sharing/lib/SharedMount.php8
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);
}