]> git.mxchange.org Git - friendica.git/blobdiff - include/uimport.php
Split the name in the hcard
[friendica.git] / include / uimport.php
index b27f9dc12607d52ed20402915de4947955c8548f..d9b040597fdc6c8affe2af20354a437821dba064 100644 (file)
@@ -1,23 +1,23 @@
 <?php
-
+/**
+ * @file include/uimport.php
+ */
 use Friendica\App;
+use Friendica\Core\System;
+use Friendica\Core\PConfig;
+use Friendica\Core\Worker;
+use Friendica\Database\DBM;
+use Friendica\Model\Photo;
+use Friendica\Object\Image;
 
-require_once("include/Photo.php");
 define("IMPORT_DEBUG", False);
 
 function last_insert_id() {
-       global $db;
-
        if (IMPORT_DEBUG) {
                return 1;
        }
 
-       return $db->insert_id();
-}
-
-function last_error() {
-       global $db;
-       return $db->error;
+       return dba::lastInsertId();
 }
 
 /**
@@ -104,28 +104,38 @@ function import_account(App $a, $file) {
        // check for username
        $r = q("SELECT uid FROM user WHERE nickname='%s'", $account['user']['nickname']);
        if ($r === false) {
-               logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
+               logger("uimport:check nickname : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                notice(t('Error! Cannot check nickname'));
                return;
        }
-       if (dbm::is_result($r) > 0) {
+       if (DBM::is_result($r) > 0) {
                notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
                return;
        }
        // check if username matches deleted account
        $r = q("SELECT id FROM userd WHERE username='%s'", $account['user']['nickname']);
        if ($r === false) {
-               logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
+               logger("uimport:check nickname : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                notice(t('Error! Cannot check nickname'));
                return;
        }
-       if (dbm::is_result($r) > 0) {
+       if (DBM::is_result($r) > 0) {
                notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
                return;
        }
 
        $oldbaseurl = $account['baseurl'];
-       $newbaseurl = App::get_baseurl();
+       $newbaseurl = System::baseUrl();
+
+       $oldaddr = str_replace('http://', '@', normalise_link($oldbaseurl));
+       $newaddr = str_replace('http://', '@', normalise_link($newbaseurl));
+
+       if (!empty($account['profile']['addr'])) {
+               $old_handle = $account['profile']['addr'];
+       } else {
+               $old_handle = $account['user']['nickname'].$oldaddr;
+       }
+
        $olduid = $account['user']['uid'];
 
        unset($account['user']['uid']);
@@ -134,27 +144,28 @@ function import_account(App $a, $file) {
        unset($account['user']['expire_notification_sent']);
 
        foreach ($account['user'] as $k => &$v) {
-               $v = str_replace($oldbaseurl, $newbaseurl, $v);
+               $v = str_replace(array($oldbaseurl, $oldaddr), array($newbaseurl, $newaddr), $v);
        }
 
        // import user
        $r = db_import_assoc('user', $account['user']);
        if ($r === false) {
-               //echo "<pre>"; var_dump($r, $query, mysql_error()); killme();
-               logger("uimport:insert user : ERROR : " . last_error(), LOGGER_NORMAL);
+               logger("uimport:insert user : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                notice(t("User creation error"));
                return;
        }
        $newuid = last_insert_id();
        //~ $newuid = 1;
 
+       PConfig::set($newuid, 'system', 'previous_addr', $old_handle);
+
        // Generate a new guid for the account. Otherwise there will be problems with diaspora
        q("UPDATE `user` SET `guid` = '%s' WHERE `uid` = %d",
                dbesc(generate_user_guid()), intval($newuid));
 
        foreach ($account['profile'] as &$profile) {
                foreach ($profile as $k => &$v) {
-                       $v = str_replace($oldbaseurl, $newbaseurl, $v);
+                       $v = str_replace(array($oldbaseurl, $oldaddr), array($newbaseurl, $newaddr), $v);
                        foreach (array("profile", "avatar") as $k) {
                                $v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
                        }
@@ -162,7 +173,7 @@ function import_account(App $a, $file) {
                $profile['uid'] = $newuid;
                $r = db_import_assoc('profile', $profile);
                if ($r === false) {
-                       logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+                       logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                        info(t("User profile creation error"));
                        dba::delete('user', array('uid' => $newuid));
                        return;
@@ -173,26 +184,21 @@ function import_account(App $a, $file) {
        foreach ($account['contact'] as &$contact) {
                if ($contact['uid'] == $olduid && $contact['self'] == '1') {
                        foreach ($contact as $k => &$v) {
-                               $v = str_replace($oldbaseurl, $newbaseurl, $v);
+                               $v = str_replace(array($oldbaseurl, $oldaddr), array($newbaseurl, $newaddr), $v);
                                foreach (array("profile", "avatar", "micro") as $k) {
                                        $v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
                                }
                        }
                }
                if ($contact['uid'] == $olduid && $contact['self'] == '0') {
-                       // set contacts 'avatar-date' to NULL_DATE to let poller to update urls
+                       // set contacts 'avatar-date' to NULL_DATE to let worker to update urls
                        $contact["avatar-date"] = NULL_DATE;
 
                        switch ($contact['network']) {
                                case NETWORK_DFRN:
+                               case NETWORK_DIASPORA:
                                        //  send relocate message (below)
                                        break;
-                               case NETWORK_ZOT:
-                                       /// @TODO handle zot network
-                                       break;
-                               case NETWORK_MAIL2:
-                                       /// @TODO ?
-                                       break;
                                case NETWORK_FEED:
                                case NETWORK_MAIL:
                                        // Nothing to do
@@ -205,7 +211,7 @@ function import_account(App $a, $file) {
                $contact['uid'] = $newuid;
                $r = db_import_assoc('contact', $contact);
                if ($r === false) {
-                       logger("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+                       logger("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                        $errorcount++;
                } else {
                        $contact['newid'] = last_insert_id();
@@ -219,15 +225,13 @@ function import_account(App $a, $file) {
                $group['uid'] = $newuid;
                $r = db_import_assoc('group', $group);
                if ($r === false) {
-                       logger("uimport:insert group " . $group['name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+                       logger("uimport:insert group " . $group['name'] . " : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                } else {
                        $group['newid'] = last_insert_id();
                }
        }
 
        foreach ($account['group_member'] as &$group_member) {
-               $group_member['uid'] = $newuid;
-
                $import = 0;
                foreach ($account['group'] as $group) {
                        if ($group['id'] == $group_member['gid'] && isset($group['newid'])) {
@@ -246,7 +250,7 @@ function import_account(App $a, $file) {
                if ($import == 2) {
                        $r = db_import_assoc('group_member', $group_member);
                        if ($r === false) {
-                               logger("uimport:insert group member " . $group_member['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+                               logger("uimport:insert group member " . $group_member['id'] . " : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                        }
                }
        }
@@ -255,15 +259,16 @@ function import_account(App $a, $file) {
                $photo['uid'] = $newuid;
                $photo['data'] = hex2bin($photo['data']);
 
-               $p = new Photo($photo['data'], $photo['type']);
-               $r = $p->store(
+               $Image = new Image($photo['data'], $photo['type']);
+               $r = Photo::store(
+                               $Image,
                                $photo['uid'], $photo['contact-id'], //0
                                $photo['resource-id'], $photo['filename'], $photo['album'], $photo['scale'], $photo['profile'], //1
                                $photo['allow_cid'], $photo['allow_gid'], $photo['deny_cid'], $photo['deny_gid']
                );
 
                if ($r === false) {
-                       logger("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+                       logger("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                }
        }
 
@@ -271,13 +276,13 @@ function import_account(App $a, $file) {
                $pconfig['uid'] = $newuid;
                $r = db_import_assoc('pconfig', $pconfig);
                if ($r === false) {
-                       logger("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+                       logger("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . dba::errorMessage(), LOGGER_NORMAL);
                }
        }
 
        // send relocate messages
-       proc_run(PRIORITY_HIGH, 'include/notifier.php', 'relocate', $newuid);
+       Worker::add(PRIORITY_HIGH, 'Notifier', 'relocate', $newuid);
 
        info(t("Done. You can now login with your username and password"));
-       goaway(App::get_baseurl() . "/login");
+       goaway(System::baseUrl() . "/login");
 }