From: Robin Appelman Date: Sat, 11 Jun 2011 22:57:43 +0000 (+0200) Subject: allow tear down of filesystem. X-Git-Tag: v3.0~267^2~539 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2a5ee9512ee88da53dcba862a32279bdc7096bfb;p=nextcloud-server.git allow tear down of filesystem. also fix a bug when chrooting to '/' --- diff --git a/lib/base.php b/lib/base.php index a3ffb6b1a6f..50c41dc0859 100644 --- a/lib/base.php +++ b/lib/base.php @@ -145,7 +145,7 @@ class OC_UTIL { if( $user != "" ){ //if we aren't logged in, there is no use to set up the filesystem //first set up the local "root" storage and the backupstorage if needed - $rootStorage=OC_FILESYSTEM::createStorage('local',array('datadir'=>$CONFIG_DATADIRECTORY)); + $rootStorage=OC_FILESYSTEM::createStorage('local',array('datadir'=>$CONFIG_DATADIRECTORY_ROOT)); // if( OC_CONFIG::getValue( "enablebackup", false )){ // // This creates the Directorys recursively // if(!is_dir( "$CONFIG_BACKUPDIRECTORY/$user/$root" )){ @@ -182,6 +182,11 @@ class OC_UTIL { } } + public static function tearDownFS(){ + OC_FILESYSTEM::tearDown(); + self::$fsSetup=false; + } + /** * get the current installed version of ownCloud * @return array diff --git a/lib/filesystem.php b/lib/filesystem.php index 2b5c3a56b6e..27a937f5e4c 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -67,6 +67,16 @@ class OC_FILESYSTEM{ return array_keys(self::$storageTypes); } + /** + * tear down the filesystem, removing all storage providers + */ + static public function tearDown(){ + foreach(self::$storages as $mountpoint=>$storage){ + unset(self::$storages[$mountpoint]); + } + $fakeRoot=''; + } + /** * create a new storage of a specific type * @param string type @@ -91,8 +101,10 @@ class OC_FILESYSTEM{ * @return bool */ static public function chroot($fakeRoot){ - if($fakeRoot[0]!=='/'){ - $fakeRoot='/'.$fakeRoot; + if(!$fakeRoot==''){ + if($fakeRoot[0]!=='/'){ + $fakeRoot='/'.$fakeRoot; + } } self::$fakeRoot=$fakeRoot; }