check if mount point was already loaded to avoid redundant read operations

This commit is contained in:
Björn Schießle 2012-10-18 17:30:01 +02:00
parent 65b0824d35
commit 08ee2fcf93
1 changed files with 8 additions and 1 deletions

View File

@ -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);