<?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\Object\Photo;
-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();
}
/**
return q($query);
}
-function import_cleanup($newuid) {
- q("DELETE FROM `user` WHERE uid = %d", $newuid);
- q("DELETE FROM `contact` WHERE uid = %d", $newuid);
- q("DELETE FROM `profile` WHERE uid = %d", $newuid);
- q("DELETE FROM `photo` WHERE uid = %d", $newuid);
- q("DELETE FROM `group` WHERE uid = %d", $newuid);
- q("DELETE FROM `group_member` WHERE uid = %d", $newuid);
- q("DELETE FROM `pconfig` WHERE uid = %d", $newuid);
-}
-
/**
* @brief Import account file exported from mod/uexport
*
// 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']);
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);
}
$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"));
- import_cleanup($newuid);
+ dba::delete('user', array('uid' => $newuid));
return;
}
}
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;
$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();
$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();
}
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);
}
}
}
);
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);
}
}
$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");
}