<?php
/**
- * ownCloud - admin export
+ * ownCloud - user_migrate
*
- * @author Thomas Schmidt
- * @copyright 2011 Thomas Schmidt tom@opensuse.org
* @author Tom Needham
* @copyright 2012 Tom Needham tom@owncloud.com
*
OC_Util::checkAppEnabled('user_migrate');
// Import?
-if (isset($_POST['userimport'])) {
+if (isset($_POST['user_import'])) {
$root = OC::$SERVERROOT . "/";
$importname = "owncloud_import_" . date("y-m-d_H-i-s");
$from = $_FILES['owncloud_import']['tmp_name'];
$to = get_temp_dir().'/'.$importname.'.zip';
if( !move_uploaded_file( $from, $to ) ){
- OC_Log::write('admin_export',"Failed to copy the uploaded file",OC_Log::INFO);
+ OC_Log::write('migration',"Failed to copy the uploaded file",OC_Log::INFO);
exit();
}
// Extract zip
$zip = new ZipArchive();
if ($zip->open(get_temp_dir().'/'.$importname.'.zip') != TRUE) {
- OC_Log::write('admin_export',"Failed to open zip file",OC_Log::INFO);
+ OC_Log::write('migration',"Failed to open zip file",OC_Log::INFO);
exit();
}
$zip->extractTo(get_temp_dir().'/'.$importname.'/');
if( is_array( $tables ) ){
// Save the table names
foreach($tables as $table){
- $return['app'][$provider->id]['tables'][] = $table;
+ $return['apps'][$provider->id]['tables'][] = $table;
}
} else {
// It failed to create the tables
// Run the import function?
if( !$failed ){
- $return['app'][$provider->id]['success'] = $provider->export( self::$uid );
+ $return['apps'][$provider->id]['success'] = $provider->export( self::$uid );
} else {
- $return['app'][$provider->id]['success'] = false;
- $return['app'][$provider->id]['message'] = 'failed to create the app tables';
+ $return['apps'][$provider->id]['success'] = false;
+ $return['apps'][$provider->id]['message'] = 'failed to create the app tables';
}
// Now add some app info the the return array
$appinfo = OC_App::getAppInfo( $provider->id );
- $return['app'][$provider->id]['version'] = $appinfo['version'];
+ $return['apps'][$provider->id]['version'] = $appinfo['version'];
}
-
-
- // Add some general info to the return array
- $return['migrateinfo']['uid'] = self::$uid;
- $return['migrateinfo']['ocversion'] = OC_Util::getVersionString();
return $return;
* @breif adds a json file with infomation on the export to the zips root (used on import)
* @return bool
*/
- static private function addExportInfo(){
+ static private function addExportInfo( $array=array() ){
$info = array(
'ocversion' => OC_Util::getVersion(),
'exporttime' => time(),
'exportedby' => OC_User::getUser(),
'exporttype' => self::$exporttype
);
+ // Add hash if user export
+ if( self::$exporttype = 'user' ){
+ $query = OC_DB::prepare( "SELECT password FROM *PREFIX*users WHERE uid LIKE ?" );
+ $result = $query->execute( array( self::$uid ) );
+ $row = $result->fetchRow();
+ $hash = $row ? $row['password'] : false;
+ if( !$hash ){
+ OC_Log::write( 'migration', 'Failed to get the users password hash', OC_log::ERROR);
+ return false;
+ }
+ $info['hash'] = $hash;
+ }
+ // Merge in other data
+ $info = array_merge( $info, $array );
// Create json
$json = json_encode( $info );
$tmpfile = tempnam("/tmp", "oc_export_info_");
return false;
}
// Export the app info
- $info = json_encode( self::exportAppData() );
- file_put_contents( $userdatadir . '/exportinfo.json', $info );
+ $exportinfo = json_encode( self::addExportInfo( self::exportAppData() ) );
+ file_put_contents( $userdatadir . '/exportinfo.json', $exportinfo );
// Add the data dir to the zip
self::addDirToZip( $userdatadir );
// Close the zip
// @param $uid string user_id of the user to be created
// @param $hash string hash of the user to be created
// @return bool result of user creation
- private static function createUser( $uid, $hash ){
+ public static function createUser( $uid, $hash ){
// Check if userid exists
if(OC_User::userExists( $uid )){