diff options
author | Björn Schießle <schiessle@owncloud.com> | 2012-10-18 18:38:36 +0400 |
---|---|---|
committer | Björn Schießle <schiessle@owncloud.com> | 2012-10-18 19:15:30 +0400 |
commit | 00ed2e87c9a1aa6f9ecd54ceaec4346250f6afca (patch) | |
tree | 3b0442897632cac9bf71d4de1cba6cad86877513 /lib | |
parent | e4c0bb59e52a2cc7be21cdc4180a7f1aa64b18b5 (diff) |
check for mount points if file was shared from a different user
Diffstat (limited to 'lib')
-rw-r--r-- | lib/filesystem.php | 6 | ||||
-rwxr-xr-x | lib/util.php | 37 |
2 files changed, 28 insertions, 15 deletions
diff --git a/lib/filesystem.php b/lib/filesystem.php index da524d7f181..5dc4b2f89e5 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -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])) { diff --git a/lib/util.php b/lib/util.php index 880a519d347..29f2c56b0b2 100755 --- a/lib/util.php +++ b/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 |