diff --git a/lib/filesystem.php b/lib/filesystem.php index 8afef05083..8b44ab6e6c 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -46,6 +46,7 @@ class OC_Filesystem{ static private $storages=array(); static private $mounts=array(); + static private $loadedUsers=array(); public static $loaded=false; /** * @var OC_Filestorage $defaultInstance @@ -178,6 +179,11 @@ class OC_Filesystem{ $internalPath=substr($path,strlen($mountPoint)); return $internalPath; } + + static private function mountPointsLoaded($user) { + return in_array($user, self::$loadedUsers); + } + /** * get the storage object for a path * @param string path @@ -186,9 +192,10 @@ class OC_Filesystem{ static public function getStorage($path) { $user = ltrim(substr($path, 0, strpos($path, '/', 1)), '/'); // check mount points if file was shared from a different user - if ($user != OC_User::getUser()) { + if ($user != OC_User::getUser() && !self::mountPointsLoaded($user)) { OC_Util::loadUserMountPoints($user); self::loadSystemMountPoints($user); + self::$loadedUsers[] = $user; } $mountpoint=self::getMountPoint($path);