|
|
|
@ -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 |
|
|
|
|