diff options
author | Björn Schießle <schiessle@owncloud.com> | 2012-10-18 17:08:25 +0200 |
---|---|---|
committer | Björn Schießle <schiessle@owncloud.com> | 2012-10-18 17:15:30 +0200 |
commit | 2499c24b8b31845488adcdae76a0ababa737cf27 (patch) | |
tree | e6a334eba78d7587f02a9bd8f0662eaa1bb2cd98 /lib/filesystem.php | |
parent | 00ed2e87c9a1aa6f9ecd54ceaec4346250f6afca (diff) | |
download | nextcloud-server-2499c24b8b31845488adcdae76a0ababa737cf27.tar.gz nextcloud-server-2499c24b8b31845488adcdae76a0ababa737cf27.zip |
load system wide configured mount points before accessing shared files
Diffstat (limited to 'lib/filesystem.php')
-rw-r--r-- | lib/filesystem.php | 101 |
1 files changed, 55 insertions, 46 deletions
diff --git a/lib/filesystem.php b/lib/filesystem.php index 5dc4b2f89e5..e4e63cee486 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -187,7 +187,8 @@ class OC_Filesystem{ $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); + OC_Util::loadUserMountPoints($user); + self::loadSystemMountPoints($user); } $mountpoint=self::getMountPoint($path); @@ -200,6 +201,52 @@ class OC_Filesystem{ } } + static private function loadSystemMountPoints($user) { + if(is_file(OC::$SERVERROOT.'/config/mount.php')) {
+ $mountConfig=include(OC::$SERVERROOT.'/config/mount.php');
+ if(isset($mountConfig['global'])) {
+ foreach($mountConfig['global'] as $mountPoint=>$options) {
+ self::mount($options['class'],$options['options'],$mountPoint);
+ }
+ }
+
+ if(isset($mountConfig['group'])) {
+ foreach($mountConfig['group'] as $group=>$mounts) {
+ if(OC_Group::inGroup($user,$group)) {
+ foreach($mounts as $mountPoint=>$options) {
+ $mountPoint=self::($mountPoint, $user);
+ foreach($options as &$option) {
+ $option=self::setUserVars($option, $user);
+ }
+ self::mount($options['class'],$options['options'],$mountPoint);
+ }
+ }
+ }
+ }
+
+ if(isset($mountConfig['user'])) {
+ foreach($mountConfig['user'] as $user=>$mounts) {
+ if($user==='all' or strtolower($user)===strtolower($user)) {
+ foreach($mounts as $mountPoint=>$options) {
+ $mountPoint=self::setUserVars($mountPoint, $user);
+ foreach($options as &$option) {
+ $option=self::setUserVars($option, $user);
+ }
+ self::mount($options['class'],$options['options'],$mountPoint);
+ }
+ }
+ }
+ }
+
+ $mtime=filemtime(OC::$SERVERROOT.'/config/mount.php');
+ $previousMTime=OC_Appconfig::getValue('files','mountconfigmtime',0);
+ if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
+ OC_FileCache::triggerUpdate();
+ OC_Appconfig::setValue('files','mountconfigmtime',$mtime);
+ }
+ } + } + static public function init($root) { if(self::$defaultInstance) { return false; @@ -207,49 +254,7 @@ class OC_Filesystem{ self::$defaultInstance=new OC_FilesystemView($root); //load custom mount config - if(is_file(OC::$SERVERROOT.'/config/mount.php')) { - $mountConfig=include(OC::$SERVERROOT.'/config/mount.php'); - if(isset($mountConfig['global'])) { - foreach($mountConfig['global'] as $mountPoint=>$options) { - self::mount($options['class'],$options['options'],$mountPoint); - } - } - - if(isset($mountConfig['group'])) { - foreach($mountConfig['group'] as $group=>$mounts) { - if(OC_Group::inGroup(OC_User::getUser(),$group)) { - foreach($mounts as $mountPoint=>$options) { - $mountPoint=self::setUserVars($mountPoint); - foreach($options as &$option) { - $option=self::setUserVars($option); - } - self::mount($options['class'],$options['options'],$mountPoint); - } - } - } - } - - if(isset($mountConfig['user'])) { - foreach($mountConfig['user'] as $user=>$mounts) { - if($user==='all' or strtolower($user)===strtolower(OC_User::getUser())) { - foreach($mounts as $mountPoint=>$options) { - $mountPoint=self::setUserVars($mountPoint); - foreach($options as &$option) { - $option=self::setUserVars($option); - } - self::mount($options['class'],$options['options'],$mountPoint); - } - } - } - } - - $mtime=filemtime(OC::$SERVERROOT.'/config/mount.php'); - $previousMTime=OC_Appconfig::getValue('files','mountconfigmtime',0); - if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated - OC_FileCache::triggerUpdate(); - OC_Appconfig::setValue('files','mountconfigmtime',$mtime); - } - } + self::loadSystemMountPoints(OC_User::getUser()); self::$loaded=true; } @@ -259,8 +264,12 @@ class OC_Filesystem{ * @param string intput * @return string */ - private static function setUserVars($input) { - return str_replace('$user',OC_User::getUser(),$input); + private static function setUserVars($input, $user) { + if (isset($user)) { + return str_replace('$user', $user,$input); + } else { + return str_replace('$user',OC_User::getUser(),$input); + } } /** |