check for mount points if file was shared from a different user
This commit is contained in:
parent
e4c0bb59e5
commit
00ed2e87c9
2 changed files with 28 additions and 15 deletions
|
@ -184,6 +184,12 @@ class OC_Filesystem{
|
|||
* @return OC_Filestorage
|
||||
*/
|
||||
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()) {
|
||||
OC_Util::loadMountPoints($user);
|
||||
}
|
||||
|
||||
$mountpoint=self::getMountPoint($path);
|
||||
if($mountpoint) {
|
||||
if(!isset(OC_Filesystem::$storages[$mountpoint])) {
|
||||
|
|
37
lib/util.php
37
lib/util.php
|
@ -53,21 +53,7 @@ class OC_Util {
|
|||
OC_FileProxy::register($quotaProxy);
|
||||
OC_FileProxy::register($fileOperationProxy);
|
||||
// Load personal mount config
|
||||
if (is_file($user_root.'/mount.php')) {
|
||||
$mountConfig = include($user_root.'/mount.php');
|
||||
if (isset($mountConfig['user'][$user])) {
|
||||
foreach ($mountConfig['user'][$user] as $mountPoint => $options) {
|
||||
OC_Filesystem::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
|
||||
$mtime=filemtime($user_root.'/mount.php');
|
||||
$previousMTime=OC_Preferences::getValue($user,'files','mountconfigmtime',0);
|
||||
if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
|
||||
OC_FileCache::triggerUpdate($user);
|
||||
OC_Preferences::setValue($user,'files','mountconfigmtime',$mtime);
|
||||
}
|
||||
}
|
||||
self::loadMountPoints($user);
|
||||
OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $user_dir));
|
||||
}
|
||||
}
|
||||
|
@ -76,6 +62,27 @@ class OC_Util {
|
|||
OC_Filesystem::tearDown();
|
||||
self::$fsSetup=false;
|
||||
}
|
||||
|
||||
public static function loadMountPoints($user) {
|
||||
$user_dir = '/'.$user.'/files';
|
||||
$user_root = OC_User::getHome($user);
|
||||
$userdirectory = $user_root . '/files';
|
||||
if (is_file($user_root.'/mount.php')) {
|
||||
$mountConfig = include($user_root.'/mount.php');
|
||||
if (isset($mountConfig['user'][$user])) {
|
||||
foreach ($mountConfig['user'][$user] as $mountPoint => $options) {
|
||||
OC_Filesystem::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
|
||||
$mtime=filemtime($user_root.'/mount.php');
|
||||
$previousMTime=OC_Preferences::getValue($user,'files','mountconfigmtime',0);
|
||||
if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
|
||||
OC_FileCache::triggerUpdate($user);
|
||||
OC_Preferences::setValue($user,'files','mountconfigmtime',$mtime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the current installed version of ownCloud
|
||||
|
|
Loading…
Reference in a new issue