From fd7b210654dfb2c310264fec70683cdd7682b3bb Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 3 Sep 2015 13:46:08 +0200 Subject: [PATCH 1/2] Delay setting up the filesystem for a share owner untill the share is used --- apps/files_sharing/lib/mountprovider.php | 6 ------ apps/files_sharing/lib/sharedstorage.php | 7 ++++++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/files_sharing/lib/mountprovider.php b/apps/files_sharing/lib/mountprovider.php index 3f59fd131d..14a7962599 100644 --- a/apps/files_sharing/lib/mountprovider.php +++ b/apps/files_sharing/lib/mountprovider.php @@ -66,12 +66,6 @@ class MountProvider implements IMountProvider { return $share['permissions'] > 0; }); $shares = array_map(function ($share) use ($user, $storageFactory) { - try { - Filesystem::initMountPoints($share['uid_owner']); - } catch(NoUserException $e) { - \OC::$server->getLogger()->warning('The user \'' . $share['uid_owner'] . '\' of share with ID \'' . $share['id'] . '\' can\'t be retrieved.', array('app' => 'files_sharing')); - return null; - } // for updating etags for the share owner when we make changes to this share. $ownerPropagator = $this->propagationManager->getChangePropagator($share['uid_owner']); diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index c7529df061..1ac401f3cf 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -55,6 +55,10 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { $this->ownerView = $arguments['ownerView']; } + private function init() { + Filesystem::initMountPoints($this->share['uid_owner']); + } + /** * get id of the mount point * @@ -80,6 +84,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { * @return array Returns array with the keys path, permissions, and owner or false if not found */ public function getFile($target) { + $this->init(); if (!isset($this->files[$target])) { // Check for partial files if (pathinfo($target, PATHINFO_EXTENSION) === 'part') { @@ -319,7 +324,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { } public function rename($path1, $path2) { - + $this->init(); // we need the paths relative to data/user/files $relPath1 = $this->getMountPoint() . '/' . $path1; $relPath2 = $this->getMountPoint() . '/' . $path2; From 8123df948960423489a1476a6dce3456161c4982 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 3 Sep 2015 14:34:46 +0200 Subject: [PATCH 2/2] setup owner when getting users for share --- lib/private/share/share.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/private/share/share.php b/lib/private/share/share.php index d0c69badb4..e1735dbf92 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -37,6 +37,7 @@ namespace OC\Share; +use OC\Files\Filesystem; use OCP\IUserSession; use OCP\IDBConnection; use OCP\IConfig; @@ -120,6 +121,7 @@ class Share extends Constants { */ public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false) { + Filesystem::initMountPoints($ownerUser); $shares = $sharePaths = $fileTargets = array(); $publicShare = false; $remoteShare = false;