summaryrefslogtreecommitdiffstats
path: root/apps/user_migrate
diff options
context:
space:
mode:
authorTom Needham <needham.thomas@gmail.com>2012-03-17 13:30:58 +0000
committerTom Needham <needham.thomas@gmail.com>2012-03-17 13:30:58 +0000
commit27bf34f7be0e7c3c1516cdf6c44877ee77962dca (patch)
treef5385168d0b3552a074159913e104a3fb277415a /apps/user_migrate
parent222bb2303fb0825b4e279024ff723db84e23153d (diff)
downloadnextcloud-server-27bf34f7be0e7c3c1516cdf6c44877ee77962dca.tar.gz
nextcloud-server-27bf34f7be0e7c3c1516cdf6c44877ee77962dca.zip
Move user import to the admin
Diffstat (limited to 'apps/user_migrate')
-rw-r--r--apps/user_migrate/admin.php118
-rw-r--r--apps/user_migrate/appinfo/app.php8
-rw-r--r--apps/user_migrate/settings.php123
-rw-r--r--apps/user_migrate/templates/admin.php9
-rw-r--r--apps/user_migrate/templates/settings.php11
5 files changed, 137 insertions, 132 deletions
diff --git a/apps/user_migrate/admin.php b/apps/user_migrate/admin.php
new file mode 100644
index 00000000000..56fe8875145
--- /dev/null
+++ b/apps/user_migrate/admin.php
@@ -0,0 +1,118 @@
+<?php
+
+/**
+ * ownCloud - admin export
+ *
+ * @author Thomas Schmidt
+ * @copyright 2011 Thomas Schmidt tom@opensuse.org
+ * @author Tom Needham
+ * @copyright 2012 Tom Needham tom@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+OC_Util::checkAdminUser();
+OC_Util::checkAppEnabled('user_migrate');
+
+// Import?
+if (isset($_POST['userimport'])) {
+
+ $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('admin_export',"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);
+ exit();
+ }
+ $zip->extractTo(get_temp_dir().'/'.$importname.'/');
+ $zip->close();
+
+ $importdir = get_temp_dir() . '/' . $importname;
+
+ // Delete uploaded file
+ unlink( $importdir . '.zip' );
+
+ // 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');
+ }
+
+ $user = reset($files);
+
+ // Check for dbexport.xml and export info and data dir
+ $files = scandir( $importdir . '/' . $user );
+ $required = array( 'migration.db', 'exportinfo.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 . '/' . $user . '/exportinfo.json';
+ $migrateinfo = json_decode( file_get_contents( $migrateinfo ) );
+ $olduid = $migrateinfo->migrateinfo->uid;
+
+ // Check if uid is available
+ if( OC_User::UserExists( $olduid ) ){
+ OC_Log::write('migration','Username exists', OC_Log::ERROR);
+ die('user exists');
+ }
+
+ // Create the user
+ if( !OC_Migrate::createUser( $olduid, $migrateinfo->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' );
+ // Copy data
+ if( !copy_r( $importdir . '/files', $datadir . '/' ) ){
+ 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::importUser( $importdir . '/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();
+} \ No newline at end of file
diff --git a/apps/user_migrate/appinfo/app.php b/apps/user_migrate/appinfo/app.php
index 4a795a54741..18b97b93df1 100644
--- a/apps/user_migrate/appinfo/app.php
+++ b/apps/user_migrate/appinfo/app.php
@@ -22,5 +22,13 @@
*/
OC_APP::registerPersonal('user_migrate','settings');
+OC_APP::registerAdmin('user_migrate','admin');
+// add settings page to navigation
+$entry = array(
+ 'id' => "user_migrate_settings",
+ 'order'=>1,
+ 'href' => OC_Helper::linkTo( "user_migrate", "admin.php" ),
+ 'name' => 'Import'
+);
?> \ No newline at end of file
diff --git a/apps/user_migrate/settings.php b/apps/user_migrate/settings.php
index 3efe9228a13..62f5e3f20d7 100644
--- a/apps/user_migrate/settings.php
+++ b/apps/user_migrate/settings.php
@@ -38,129 +38,8 @@ if (isset($_POST['user_export'])) {
readfile($path);
unlink( $path );
}
-} if( isset( $_POST['user_import'] ) ){
- // TODO
- $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('admin_export',"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);
- exit();
- }
- $zip->extractTo(get_temp_dir().'/'.$importname.'/');
- $zip->close();
-
- $importdir = get_temp_dir() . '/' . $importname;
-
- // Delete uploaded file
- unlink( $importdir . '.zip' );
-
- // 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');
- }
-
- $user = reset($files);
-
- // Check for dbexport.xml and export info and data dir
- $files = scandir( $importdir . '/' . $user );
- $required = array( 'migration.db', 'exportinfo.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 . '/' . $user . '/exportinfo.json';
- $migrateinfo = json_decode( file_get_contents( $migrateinfo ) );
- $olduid = $migrateinfo->migrateinfo->uid;
-
- // Check if uid is available
- if( OC_User::UserExists( $olduid ) ){
- OC_Log::write('migration','Username exists', OC_Log::ERROR);
- die('user exists');
- }
-
- // Create the user
- if( !OC_Migrate::createUser( $olduid, $migrateinfo->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' );
- // Copy data
- if( !copy_r( $importdir . '/files', $datadir . '/' ) ){
- 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::importUser( $importdir . '/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', 'settings');
return $tmpl->fetchPage();
-}
-
-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 == ".." )
- continue;
- // go on
- if( is_dir( $path.DS.$file ) )
- {
- copy_r( $path.DS.$file, $dest.DS.$file );
- }
- else
- {
- copy( $path.DS.$file, $dest.DS.$file );
- }
- }
- }
- return true;
- }
- elseif( is_file($path) )
- {
- return copy($path, $dest);
- }
- else
- {
- return false;
- }
- }
-
+} \ No newline at end of file
diff --git a/apps/user_migrate/templates/admin.php b/apps/user_migrate/templates/admin.php
new file mode 100644
index 00000000000..b5a99518419
--- /dev/null
+++ b/apps/user_migrate/templates/admin.php
@@ -0,0 +1,9 @@
+<form id="import" action="#" method="post" enctype="multipart/form-data">
+ <fieldset class="personalblock">
+ <legend><strong><?php echo $l->t('Import user account');?></strong></legend>
+ </p>
+ <p><input type="file" id="owncloud_import" name="owncloud_import"><label for="owncloud_import"><?php echo $l->t('ownCloud User Zip');?></label>
+ </p>
+ <input type="submit" name="user_import" value="<?php echo $l->t('Import'); ?>" />
+ </fieldset>
+</form>
diff --git a/apps/user_migrate/templates/settings.php b/apps/user_migrate/templates/settings.php
index 59a27a926d8..389de563a6f 100644
--- a/apps/user_migrate/templates/settings.php
+++ b/apps/user_migrate/templates/settings.php
@@ -5,13 +5,4 @@
</p>
<input type="submit" name="user_export" value="Export" />
</fieldset>
-</form>
-<form id="import" action="#" method="post" enctype="multipart/form-data">
- <fieldset class="personalblock">
- <legend><strong><?php echo $l->t('Import user account');?></strong></legend>
- </p>
- <p><input type="file" id="owncloud_import" name="owncloud_import"><label for="owncloud_import"><?php echo $l->t('ownCloud User Zip');?></label>
- </p>
- <input type="submit" name="user_import" value="<?php echo $l->t('Import'); ?>" />
- </fieldset>
-</form>
+</form> \ No newline at end of file