* This will change in the future.
*/
-use \Friendica\Core\Config;
+use Friendica\App;
+use Friendica\Core\Config;
require_once 'include/items.php';
require_once 'include/bb2diaspora.php';
-require_once 'include/Scrape.php';
+require_once 'include/probe.php';
require_once 'include/Contact.php';
require_once 'include/Photo.php';
require_once 'include/socgraph.php';
foreach ($element->children() AS $fieldname => $entry) {
if ($oldXML) {
// Translation for the old XML structure
- if ($fieldname == "diaspora_handle")
+ if ($fieldname == "diaspora_handle") {
$fieldname = "author";
-
- if ($fieldname == "participant_handles")
+ }
+ if ($fieldname == "participant_handles") {
$fieldname = "participants";
-
+ }
if (in_array($type, array("like", "participation"))) {
- if ($fieldname == "target_type")
+ if ($fieldname == "target_type") {
$fieldname = "parent_type";
+ }
}
-
- if ($fieldname == "sender_handle")
+ if ($fieldname == "sender_handle") {
$fieldname = "author";
-
- if ($fieldname == "recipient_handle")
+ }
+ if ($fieldname == "recipient_handle") {
$fieldname = "recipient";
-
- if ($fieldname == "root_diaspora_id")
+ }
+ if ($fieldname == "root_diaspora_id") {
$fieldname = "root_author";
-
+ }
+ if ($type == "status_message") {
+ if ($fieldname == "raw_message") {
+ $fieldname = "text";
+ }
+ }
if ($type == "retraction") {
- if ($fieldname == "post_guid")
+ if ($fieldname == "post_guid") {
$fieldname = "target_guid";
-
- if ($fieldname == "type")
+ }
+ if ($fieldname == "type") {
$fieldname = "target_type";
+ }
}
}
}
// Only some message types have signatures. So we quit here for the other types.
- if (!in_array($type, array("comment", "message", "like"))) {
+ if (!in_array($type, array("comment", "like"))) {
return array("fields" => $fields, "relayed" => false);
}
// No author_signature? This is a must, so we quit.
*
* @return array the queried data
*/
- private static function person_by_handle($handle) {
+ public static function person_by_handle($handle) {
$r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1",
dbesc(NETWORK_DIASPORA),
* @return int The message id of the generated comment or "false" if there was an error
*/
private static function receive_comment($importer, $sender, $data, $xml) {
+ $author = notags(unxmlify($data->author));
$guid = notags(unxmlify($data->guid));
$parent_guid = notags(unxmlify($data->parent_guid));
$text = unxmlify($data->text);
- $author = notags(unxmlify($data->author));
if (isset($data->created_at)) {
$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
* @return bool "true" if it was successful
*/
private static function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) {
+ $author = notags(unxmlify($data->author));
$guid = notags(unxmlify($data->guid));
$subject = notags(unxmlify($data->subject));
- $author = notags(unxmlify($data->author));
-
- $msg_guid = notags(unxmlify($mesg->guid));
- $msg_parent_guid = notags(unxmlify($mesg->parent_guid));
- $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature));
- $msg_author_signature = notags(unxmlify($mesg->author_signature));
- $msg_text = unxmlify($mesg->text);
- $msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at)));
// "diaspora_handle" is the element name from the old version
// "author" is the element name from the new version
return false;
}
+ $msg_guid = notags(unxmlify($mesg->guid));
$msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
+ $msg_text = unxmlify($mesg->text);
+ $msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at)));
if ($msg_conversation_guid != $guid) {
logger("message conversation guid does not belong to the current conversation.");
$body = diaspora2bb($msg_text);
$message_uri = $msg_author.":".$msg_guid;
- $author_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid;
-
- $author_signature = base64_decode($msg_author_signature);
-
- if (strcasecmp($msg_author,$msg["author"]) == 0) {
- $person = $contact;
- $key = $msg["key"];
- } else {
- $person = self::person_by_handle($msg_author);
-
- if (is_array($person) && x($person, "pubkey")) {
- $key = $person["pubkey"];
- } else {
- logger("unable to find author details");
- return false;
- }
- }
-
- if (!rsa_verify($author_signed_data, $author_signature, $key, "sha256")) {
- logger("verification failed.");
- return false;
- }
-
- if ($msg_parent_author_signature) {
- $owner_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid;
-
- $parent_author_signature = base64_decode($msg_parent_author_signature);
-
- $key = $msg["key"];
-
- if (!rsa_verify($owner_signed_data, $parent_author_signature, $key, "sha256")) {
- logger("owner verification failed.");
- return false;
- }
- }
+ $person = self::person_by_handle($msg_author);
- $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' LIMIT 1",
- dbesc($message_uri)
+ $r = q("SELECT `id` FROM `mail` WHERE `guid` = '%s' AND `uid` = %d LIMIT 1",
+ dbesc($msg_guid),
+ intval($importer["uid"])
);
if (dbm::is_result($r)) {
logger("duplicate message already delivered.", LOGGER_DEBUG);
* @return bool Success
*/
private static function receive_conversation($importer, $msg, $data) {
+ $author = notags(unxmlify($data->author));
$guid = notags(unxmlify($data->guid));
$subject = notags(unxmlify($data->subject));
$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
- $author = notags(unxmlify($data->author));
$participants = notags(unxmlify($data->participants));
$messages = $data->message;
* @return int The message id of the generated like or "false" if there was an error
*/
private static function receive_like($importer, $sender, $data) {
- $positive = notags(unxmlify($data->positive));
+ $author = notags(unxmlify($data->author));
$guid = notags(unxmlify($data->guid));
- $parent_type = notags(unxmlify($data->parent_type));
$parent_guid = notags(unxmlify($data->parent_guid));
- $author = notags(unxmlify($data->author));
+ $parent_type = notags(unxmlify($data->parent_type));
+ $positive = notags(unxmlify($data->positive));
// likes on comments aren't supported by Diaspora - only on posts
// But maybe this will be supported in the future, so we will accept it.
* @return bool Success?
*/
private static function receive_message($importer, $data) {
+ $author = notags(unxmlify($data->author));
$guid = notags(unxmlify($data->guid));
- $parent_guid = notags(unxmlify($data->parent_guid));
+ $conversation_guid = notags(unxmlify($data->conversation_guid));
$text = unxmlify($data->text);
$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
- $author = notags(unxmlify($data->author));
- $conversation_guid = notags(unxmlify($data->conversation_guid));
$contact = self::allowed_contact_by_handle($importer, $author, true);
if (!$contact) {
return false;
}
- $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($message_uri),
+ $r = q("SELECT `id` FROM `mail` WHERE `guid` = '%s' AND `uid` = %d LIMIT 1",
+ dbesc($guid),
intval($importer["uid"])
);
if (dbm::is_result($r)) {
0,
1,
dbesc($message_uri),
- dbesc($author.":".$parent_guid),
+ dbesc($author.":".$conversation["guid"]),
dbesc($created_at)
);
$name = unxmlify($data->first_name).((strlen($data->last_name)) ? " ".unxmlify($data->last_name) : "");
$image_url = unxmlify($data->image_url);
$birthday = unxmlify($data->birthday);
- $location = diaspora2bb(unxmlify($data->location));
- $about = diaspora2bb(unxmlify($data->bio));
$gender = unxmlify($data->gender);
+ $about = diaspora2bb(unxmlify($data->bio));
+ $location = diaspora2bb(unxmlify($data->location));
$searchable = (unxmlify($data->searchable) == "true");
$nsfw = (unxmlify($data->nsfw) == "true");
$tags = unxmlify($data->tag_string);
* @return int the message id
*/
private static function receive_reshare($importer, $data, $xml) {
+ $author = notags(unxmlify($data->author));
+ $guid = notags(unxmlify($data->guid));
+ $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
$root_author = notags(unxmlify($data->root_author));
$root_guid = notags(unxmlify($data->root_guid));
- $guid = notags(unxmlify($data->guid));
- $author = notags(unxmlify($data->author));
+ /// @todo handle unprocessed property "provider_display_name"
$public = notags(unxmlify($data->public));
- $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
$contact = self::allowed_contact_by_handle($importer, $author, false);
if (!$contact) {
* @return bool success
*/
private static function item_retraction($importer, $contact, $data) {
- $target_type = notags(unxmlify($data->target_type));
- $target_guid = notags(unxmlify($data->target_guid));
$author = notags(unxmlify($data->author));
+ $target_guid = notags(unxmlify($data->target_guid));
+ $target_type = notags(unxmlify($data->target_type));
$person = self::person_by_handle($author);
if (!is_array($person)) {
* @return int The message id of the newly created item
*/
private static function receive_status_message($importer, $data, $xml) {
- $raw_message = unxmlify($data->raw_message);
- $guid = notags(unxmlify($data->guid));
$author = notags(unxmlify($data->author));
- $public = notags(unxmlify($data->public));
+ $guid = notags(unxmlify($data->guid));
$created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
+ $public = notags(unxmlify($data->public));
+ $text = unxmlify($data->text);
$provider_display_name = notags(unxmlify($data->provider_display_name));
- /// @todo enable support for polls
- //if ($data->poll) {
- // foreach ($data->poll AS $poll)
- // print_r($poll);
- // die("poll!\n");
- //}
$contact = self::allowed_contact_by_handle($importer, $author, false);
if (!$contact) {
return false;
}
}
- $body = diaspora2bb($raw_message);
+ $body = diaspora2bb($text);
$datarray = array();
}
}
+ /// @todo enable support for polls
+ //if ($data->poll) {
+ // foreach ($data->poll AS $poll)
+ // print_r($poll);
+ // die("poll!\n");
+ //}
+
+ /// @todo enable support for events
+
$datarray["uid"] = $importer["uid"];
$datarray["contact-id"] = $contact["id"];
$datarray["network"] = NETWORK_DIASPORA;
return true;
}
}
-?>