Skip to content
Snippets Groups Projects
Commit 0833be9d authored by Tom Needham's avatar Tom Needham
Browse files

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.
parent fbc3123d
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
}
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment