summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/filesystem.php9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/filesystem.php b/lib/filesystem.php
index 8afef050832..8b44ab6e6c6 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);