[Pkg-owncloud-commits] [owncloud] 53/67: load system wide configured mount points before accessing shared files

David Prévot taffit at alioth.debian.org
Fri Nov 8 23:10:43 UTC 2013


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to annotated tag v4.5.1
in repository owncloud.

commit 5433932bd4a5c1e229ce81e06c4638391a061003
Author: Björn Schießle <schiessle at owncloud.com>
Date:   Thu Oct 18 17:08:25 2012 +0200

    load system wide configured mount points before accessing shared files
---
 lib/filesystem.php |  101 ++++++++++++++++++++++++++++------------------------
 lib/util.php       |    4 +--
 2 files changed, 57 insertions(+), 48 deletions(-)

diff --git a/lib/filesystem.php b/lib/filesystem.php
index 5dc4b2f..e4e63ce 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);
+		}
 	}
 
 	/**
diff --git a/lib/util.php b/lib/util.php
index 135465c..ecb790f 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -53,7 +53,7 @@ class OC_Util {
 			OC_FileProxy::register($quotaProxy);
 			OC_FileProxy::register($fileOperationProxy);
 			// Load personal mount config
-			self::loadMountPoints($user);
+			self::loadUserMountPoints($user);
 			OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $user_dir));
 		}
 	}
@@ -63,7 +63,7 @@ class OC_Util {
 		self::$fsSetup=false;
 	}
 	
-	public static function loadMountPoints($user) {
+	public static function loadUserMountPoints($user) {
 		$user_dir = '/'.$user.'/files';
 		$user_root = OC_User::getHome($user);
 		$userdirectory = $user_root . '/files';

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list