use Friendica\App;
use Friendica\Core\System;
use Friendica\Core\Config;
+use Friendica\Core\PConfig;
require_once 'include/items.php';
require_once 'include/bb2diaspora.php';
return $return_code;
}
+ /**
+ * @brief sends an "unshare"
+ *
+ * @param array $owner the array of the item owner
+ * @param array $contact Target of the communication
+ *
+ * @return int The result of the transmission
+ */
+ public static function sendAccountMigration($owner, $uid) {
+
+ $old_handle = PConfig::get($uid, 'system', 'previous_addr');
+ $profile = self::createProfileData($uid);
+
+ $signed_text = 'AccountMigration:'.$old_handle.':'.$profile['author'];
+ $signature = rsa_sign($signed_text, $owner["uprvkey"], "sha256");
+
+ $message = array("author" => $old_handle,
+ "profile" => $profile,
+ "signature" => $signature);
+
+ logger("Send account migration ".print_r($message, true), LOGGER_DEBUG);
+
+ return self::build_and_transmit($owner, $contact, "account_migration", $message);
+ }
+
/**
* @brief Sends a "share" message
*
}
/**
- * @brief Sends profile data
+ * @brief Create profile data
*
* @param int $uid The user id
+ *
+ * @return array The profile data
*/
- public static function send_profile($uid, $recips = false) {
-
- if (!$uid)
- return;
-
- if (!$recips)
- $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
- AND `uid` = %d AND `rel` != %d",
- dbesc(NETWORK_DIASPORA),
- intval($uid),
- intval(CONTACT_IS_SHARING)
- );
- if (!$recips)
- return;
-
+ private static function createProfileData($uid) {
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.*, `user`.`prvkey` AS `uprvkey`, `contact`.`addr`
FROM `profile`
INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
intval($uid)
);
- if (!$r)
- return;
+ if (!$r) {
+ return array();
+ }
$profile = $r[0];
$tags = trim($tags);
}
- $message = array("author" => $handle,
+ return array("author" => $handle,
"first_name" => $first,
"last_name" => $last,
"image_url" => $large,
"searchable" => $searchable,
"nsfw" => "false",
"tag_string" => $tags);
+ }
+
+ /**
+ * @brief Sends profile data
+ *
+ * @param int $uid The user id
+ */
+ public static function send_profile($uid, $recips = false) {
+
+ if (!$uid)
+ return;
+
+ if (!$recips)
+ $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
+ AND `uid` = %d AND `rel` != %d",
+ dbesc(NETWORK_DIASPORA),
+ intval($uid),
+ intval(CONTACT_IS_SHARING)
+ );
+ if (!$recips)
+ return;
+
+ $message = self::createProfileData($uid);
foreach ($recips as $recip) {
logger("Send updated profile data for user ".$uid." to contact ".$recip["id"], LOGGER_DEBUG);
use Friendica\App;
use Friendica\Core\System;
+use Friendica\Core\PConfig;
require_once("include/Photo.php");
define("IMPORT_DEBUG", False);
$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']);
$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));
switch ($contact['network']) {
case NETWORK_DFRN:
+ case NETWORK_DIASPORA:
// send relocate message (below)
break;
case NETWORK_ZOT: