From: Tom Needham Date: Tue, 6 Nov 2012 20:59:59 +0000 (+0000) Subject: Migration: On import of user accounts only import folders in home dir, use OC_Helper... X-Git-Tag: v5.0.0alpha1~482 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0833be9d4eacdfd712b9a52ab4545effb64f790a;p=nextcloud-server.git Migration: On import of user accounts only import folders in home dir, use OC_Helper::copyr Check files when copying recursivley Remove obsolete method Dont count '.' and '..' as directories when importing. --- diff --git a/lib/helper.php b/lib/helper.php index ed459dab624..ccceb58cd4c 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -319,7 +319,7 @@ class OC_Helper { self::copyr("$src/$file", "$dest/$file"); } } - }elseif(file_exists($src)) { + }elseif(file_exists($src) && !OC_Filesystem::isFileBlacklisted($src)) { copy($src, $dest); } } diff --git a/lib/migrate.php b/lib/migrate.php index 96f5a0001f7..58b9182a45f 100644 --- a/lib/migrate.php +++ b/lib/migrate.php @@ -200,7 +200,7 @@ class OC_Migrate{ $scan = scandir( $extractpath ); // Check for export_info.json if( !in_array( 'export_info.json', $scan ) ) { - OC_Log::write( 'migration', 'Invalid import file, export_info.json note found', OC_Log::ERROR ); + OC_Log::write( 'migration', 'Invalid import file, export_info.json not found', OC_Log::ERROR ); return json_encode( array( 'success' => false ) ); } $json = json_decode( file_get_contents( $extractpath . 'export_info.json' ) ); @@ -235,8 +235,17 @@ class OC_Migrate{ return json_encode( array( 'success' => false ) ); } // Copy data - if( !self::copy_r( $extractpath . $json->exporteduser, $datadir . '/' . self::$uid ) ) { - return json_encode( array( 'success' => false ) ); + $userfolder = $extractpath . $json->exporteduser; + $newuserfolder = $datadir . '/' . self::$uid; + foreach(scandir($userfolder) as $file){ + $success = true; + if($file !== '.' && $file !== '..' && is_dir($file)){ + // Then copy the folder over + $success = OC_Helper::copyr($userfolder.'/'.$file, $newuserfolder.'/'.$file); + } + if(!$success){ + return json_encode( array( 'success' => false ) ); + } } // Import user app data if( !$appsimported = self::importAppData( $extractpath . $json->exporteduser . '/migration.db', $json, self::$uid ) ) { @@ -304,37 +313,6 @@ class OC_Migrate{ return true; } - /** - * @brief copies recursively - * @param $path string path to source folder - * @param $dest string path to destination - * @return bool - */ - private static function copy_r( $path, $dest ) { - if( is_dir($path) ) { - @mkdir( $dest ); - $objects = scandir( $path ); - if( sizeof( $objects ) > 0 ) { - foreach( $objects as $file ) { - if( $file == "." || $file == ".." || $file == ".htaccess") - continue; - // go on - if( is_dir( $path . '/' . $file ) ) { - self::copy_r( $path .'/' . $file, $dest . '/' . $file ); - } else { - copy( $path . '/' . $file, $dest . '/' . $file ); - } - } - } - return true; - } - elseif( is_file( $path ) ) { - return copy( $path, $dest ); - } else { - return false; - } - } - /** * @brief tries to extract the import zip * @param $path string path to the zip