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.
This commit is contained in:
parent
fbc3123d8e
commit
0833be9d4e
2 changed files with 13 additions and 35 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue