]> source.dussan.org Git - nextcloud-server.git/commitdiff
Migration: On import of user accounts only import folders in home dir, use OC_Helper...
authorTom Needham <needham.thomas@gmail.com>
Tue, 6 Nov 2012 20:59:59 +0000 (20:59 +0000)
committerTom Needham <needham.thomas@gmail.com>
Thu, 8 Nov 2012 11:37:27 +0000 (11:37 +0000)
Check files when copying recursivley

Remove obsolete method

Dont count '.' and '..' as directories when importing.

lib/helper.php
lib/migrate.php

index ed459dab62434bd3992d5f205b4e6af5353e5f8d..ccceb58cd4c0270d3c4631f9013885a2b0d572af 100644 (file)
@@ -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);
                }
        }
index 96f5a0001f79060ebf9c1166909884160507481f..58b9182a45f13c919bdf256cfa91bfcc7d972dc6 100644 (file)
@@ -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