. * */ OC_Util::checkAdminUser(); OC_Util::checkAppEnabled('user_migrate'); // Import? if (isset($_POST['user_import'])) { $root = OC::$SERVERROOT . "/"; $importname = "owncloud_import_" . date("y-m-d_H-i-s"); // Save data dir for later $datadir = OC_Config::getValue( 'datadirectory' ); // Copy the uploaded file $from = $_FILES['owncloud_import']['tmp_name']; $to = get_temp_dir().'/'.$importname.'.zip'; if( !move_uploaded_file( $from, $to ) ){ OC_Log::write( 'user_migrate', "Failed to copy the uploaded file", OC_Log::ERROR ); exit(); } OC_Migrate::import( $to, 'user', 'newuser' ); die(); // Find folder $files = scandir( $importdir ); unset($files[0]); unset($files[1]); // Get the user if( count($files) != 1 ){ OC_Log::write('migration', 'Invalid import file', OC_Log::ERROR); die('invalid import, no user included'); } $olduser = reset($files); // Check for dbexport.xml and export info and data dir $files = scandir( $importdir . '/' . $olduser ); $required = array( 'migration.db', 'export_info.json', 'files'); foreach($required as $require){ if( !in_array( $require, $files) ){ OC_Log::write('migration', 'Invlaid import file', OC_Log::ERROR); die('invalid import'); } } $migrateinfo = $importdir . '/' . $olduser . '/export_info.json'; $migrateinfo = json_decode( file_get_contents( $migrateinfo ) ); // Check if uid is available if( OC_User::UserExists( $olduser ) ){ OC_Log::write('migration','Username exists', OC_Log::ERROR); die('user exists'); } // Create the user if( !OC_Migrate::createUser( $olduser, $migrateinfo->hash ) ){ OC_Log::write('migration', 'Failed to create the new user', OC_Log::ERROR); die('coundlt create new user'); } $datadir = OC_Config::getValue( 'datadirectory' ); // Make the new users data dir $path = $datadir . '/' . $olduser . '/files/'; if( !mkdir( $path, 0755, true ) ){ OC_Log::write('migration','Failed to create users data dir: '.$path, OC_Log::ERROR); die('failed to create users data dir'); } // Copy data if( !copy_r( $importdir . '/' . $olduser . '/files', $datadir . '/' . $olduser . '/files' ) ){ OC_Log::write('migration','Failed to copy user files to destination', OC_Log::ERROR); die('failed to copy user files'); } // Import user data if( !OC_Migrate::importAppData( $importdir . '/' . $olduser . '/migration.db', $migrateinfo ) ){ OC_Log::write('migration','Failed to import user data', OC_Log::ERROR); die('failed to import user data'); } // All done! die('done'); } else { // fill template $tmpl = new OC_Template('user_migrate', 'admin'); return $tmpl->fetchPage(); }