|
|
|
@ -19,6 +19,7 @@ require_once("include/text.php");
|
|
|
|
|
require_once("include/oembed.php");
|
|
|
|
|
require_once("include/html2bbcode.php");
|
|
|
|
|
require_once("include/bbcode.php");
|
|
|
|
|
require_once("include/xml.php");
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief This class contain functions to create and send DFRN XML files
|
|
|
|
@ -286,17 +287,17 @@ class dfrn {
|
|
|
|
|
$mail = $doc->createElement("dfrn:mail");
|
|
|
|
|
$sender = $doc->createElement("dfrn:sender");
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $sender, "dfrn:name", $owner['name']);
|
|
|
|
|
xml_add_element($doc, $sender, "dfrn:uri", $owner['url']);
|
|
|
|
|
xml_add_element($doc, $sender, "dfrn:avatar", $owner['thumb']);
|
|
|
|
|
xml::add_element($doc, $sender, "dfrn:name", $owner['name']);
|
|
|
|
|
xml::add_element($doc, $sender, "dfrn:uri", $owner['url']);
|
|
|
|
|
xml::add_element($doc, $sender, "dfrn:avatar", $owner['thumb']);
|
|
|
|
|
|
|
|
|
|
$mail->appendChild($sender);
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $mail, "dfrn:id", $item['uri']);
|
|
|
|
|
xml_add_element($doc, $mail, "dfrn:in-reply-to", $item['parent-uri']);
|
|
|
|
|
xml_add_element($doc, $mail, "dfrn:sentdate", datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME));
|
|
|
|
|
xml_add_element($doc, $mail, "dfrn:subject", $item['title']);
|
|
|
|
|
xml_add_element($doc, $mail, "dfrn:content", $item['body']);
|
|
|
|
|
xml::add_element($doc, $mail, "dfrn:id", $item['uri']);
|
|
|
|
|
xml::add_element($doc, $mail, "dfrn:in-reply-to", $item['parent-uri']);
|
|
|
|
|
xml::add_element($doc, $mail, "dfrn:sentdate", datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME));
|
|
|
|
|
xml::add_element($doc, $mail, "dfrn:subject", $item['title']);
|
|
|
|
|
xml::add_element($doc, $mail, "dfrn:content", $item['body']);
|
|
|
|
|
|
|
|
|
|
$root->appendChild($mail);
|
|
|
|
|
|
|
|
|
@ -319,11 +320,11 @@ class dfrn {
|
|
|
|
|
|
|
|
|
|
$suggest = $doc->createElement("dfrn:suggest");
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $suggest, "dfrn:url", $item['url']);
|
|
|
|
|
xml_add_element($doc, $suggest, "dfrn:name", $item['name']);
|
|
|
|
|
xml_add_element($doc, $suggest, "dfrn:photo", $item['photo']);
|
|
|
|
|
xml_add_element($doc, $suggest, "dfrn:request", $item['request']);
|
|
|
|
|
xml_add_element($doc, $suggest, "dfrn:note", $item['note']);
|
|
|
|
|
xml::add_element($doc, $suggest, "dfrn:url", $item['url']);
|
|
|
|
|
xml::add_element($doc, $suggest, "dfrn:name", $item['name']);
|
|
|
|
|
xml::add_element($doc, $suggest, "dfrn:photo", $item['photo']);
|
|
|
|
|
xml::add_element($doc, $suggest, "dfrn:request", $item['request']);
|
|
|
|
|
xml::add_element($doc, $suggest, "dfrn:note", $item['note']);
|
|
|
|
|
|
|
|
|
|
$root->appendChild($suggest);
|
|
|
|
|
|
|
|
|
@ -365,16 +366,16 @@ class dfrn {
|
|
|
|
|
|
|
|
|
|
$relocate = $doc->createElement("dfrn:relocate");
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:url", $owner['url']);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:name", $owner['name']);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:photo", $photos[4]);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:thumb", $photos[5]);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:micro", $photos[6]);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:request", $owner['request']);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:confirm", $owner['confirm']);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:notify", $owner['notify']);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:poll", $owner['poll']);
|
|
|
|
|
xml_add_element($doc, $relocate, "dfrn:sitepubkey", get_config('system','site_pubkey'));
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:url", $owner['url']);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:name", $owner['name']);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:photo", $photos[4]);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:thumb", $photos[5]);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:micro", $photos[6]);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:request", $owner['request']);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:confirm", $owner['confirm']);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:notify", $owner['notify']);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:poll", $owner['poll']);
|
|
|
|
|
xml::add_element($doc, $relocate, "dfrn:sitepubkey", get_config('system','site_pubkey'));
|
|
|
|
|
|
|
|
|
|
$root->appendChild($relocate);
|
|
|
|
|
|
|
|
|
@ -410,39 +411,39 @@ class dfrn {
|
|
|
|
|
$root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
|
|
|
|
|
$root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $root, "id", app::get_baseurl()."/profile/".$owner["nick"]);
|
|
|
|
|
xml_add_element($doc, $root, "title", $owner["name"]);
|
|
|
|
|
xml::add_element($doc, $root, "id", app::get_baseurl()."/profile/".$owner["nick"]);
|
|
|
|
|
xml::add_element($doc, $root, "title", $owner["name"]);
|
|
|
|
|
|
|
|
|
|
$attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION);
|
|
|
|
|
xml_add_element($doc, $root, "generator", FRIENDICA_PLATFORM, $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "generator", FRIENDICA_PLATFORM, $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "license", "href" => "http://creativecommons.org/licenses/by/3.0/");
|
|
|
|
|
xml_add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "alternate", "type" => "text/html", "href" => $alternatelink);
|
|
|
|
|
xml_add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($public) {
|
|
|
|
|
// DFRN itself doesn't uses this. But maybe someone else wants to subscribe to the public feed.
|
|
|
|
|
ostatus_hublinks($doc, $root);
|
|
|
|
|
ostatus::hublinks($doc, $root);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "salmon", "href" => app::get_baseurl()."/salmon/".$owner["nick"]);
|
|
|
|
|
xml_add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "http://salmon-protocol.org/ns/salmon-replies", "href" => app::get_baseurl()."/salmon/".$owner["nick"]);
|
|
|
|
|
xml_add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "http://salmon-protocol.org/ns/salmon-mention", "href" => app::get_baseurl()."/salmon/".$owner["nick"]);
|
|
|
|
|
xml_add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($owner['page-flags'] == PAGE_COMMUNITY)
|
|
|
|
|
xml_add_element($doc, $root, "dfrn:community", 1);
|
|
|
|
|
xml::add_element($doc, $root, "dfrn:community", 1);
|
|
|
|
|
|
|
|
|
|
/// @todo We need a way to transmit the different page flags like "PAGE_PRVGROUP"
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $root, "updated", datetime_convert("UTC", "UTC", "now", ATOM_TIME));
|
|
|
|
|
xml::add_element($doc, $root, "updated", datetime_convert("UTC", "UTC", "now", ATOM_TIME));
|
|
|
|
|
|
|
|
|
|
$author = self::add_author($doc, $owner, $authorelement, $public);
|
|
|
|
|
$root->appendChild($author);
|
|
|
|
@ -468,26 +469,26 @@ class dfrn {
|
|
|
|
|
$picdate = datetime_convert('UTC', 'UTC', $owner['avatar-date'].'+00:00', ATOM_TIME);
|
|
|
|
|
|
|
|
|
|
$attributes = array("dfrn:updated" => $namdate);
|
|
|
|
|
xml_add_element($doc, $author, "name", $owner["name"], $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "name", $owner["name"], $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("dfrn:updated" => $namdate);
|
|
|
|
|
xml_add_element($doc, $author, "uri", app::get_baseurl().'/profile/'.$owner["nickname"], $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "uri", app::get_baseurl().'/profile/'.$owner["nickname"], $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("dfrn:updated" => $namdate);
|
|
|
|
|
xml_add_element($doc, $author, "dfrn:handle", $owner["addr"], $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "dfrn:handle", $owner["addr"], $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "photo", "type" => "image/jpeg", "dfrn:updated" => $picdate,
|
|
|
|
|
"media:width" => 175, "media:height" => 175, "href" => $owner['photo']);
|
|
|
|
|
xml_add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array("rel" => "avatar", "type" => "image/jpeg", "dfrn:updated" => $picdate,
|
|
|
|
|
"media:width" => 175, "media:height" => 175, "href" => $owner['photo']);
|
|
|
|
|
xml_add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
$birthday = feed_birthday($owner['uid'], $owner['timezone']);
|
|
|
|
|
|
|
|
|
|
if ($birthday)
|
|
|
|
|
xml_add_element($doc, $author, "dfrn:birthday", $birthday);
|
|
|
|
|
xml::add_element($doc, $author, "dfrn:birthday", $birthday);
|
|
|
|
|
|
|
|
|
|
// The following fields will only be generated if this isn't for a public feed
|
|
|
|
|
if ($public)
|
|
|
|
@ -502,25 +503,25 @@ class dfrn {
|
|
|
|
|
intval($owner['uid']));
|
|
|
|
|
if ($r) {
|
|
|
|
|
$profile = $r[0];
|
|
|
|
|
xml_add_element($doc, $author, "poco:displayName", $profile["name"]);
|
|
|
|
|
xml_add_element($doc, $author, "poco:updated", $namdate);
|
|
|
|
|
xml::add_element($doc, $author, "poco:displayName", $profile["name"]);
|
|
|
|
|
xml::add_element($doc, $author, "poco:updated", $namdate);
|
|
|
|
|
|
|
|
|
|
if (trim($profile["dob"]) != "0000-00-00")
|
|
|
|
|
xml_add_element($doc, $author, "poco:birthday", "0000-".date("m-d", strtotime($profile["dob"])));
|
|
|
|
|
xml::add_element($doc, $author, "poco:birthday", "0000-".date("m-d", strtotime($profile["dob"])));
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $author, "poco:note", $profile["about"]);
|
|
|
|
|
xml_add_element($doc, $author, "poco:preferredUsername", $profile["nickname"]);
|
|
|
|
|
xml::add_element($doc, $author, "poco:note", $profile["about"]);
|
|
|
|
|
xml::add_element($doc, $author, "poco:preferredUsername", $profile["nickname"]);
|
|
|
|
|
|
|
|
|
|
$savetz = date_default_timezone_get();
|
|
|
|
|
date_default_timezone_set($profile["timezone"]);
|
|
|
|
|
xml_add_element($doc, $author, "poco:utcOffset", date("P"));
|
|
|
|
|
xml::add_element($doc, $author, "poco:utcOffset", date("P"));
|
|
|
|
|
date_default_timezone_set($savetz);
|
|
|
|
|
|
|
|
|
|
if (trim($profile["homepage"]) != "") {
|
|
|
|
|
$urls = $doc->createElement("poco:urls");
|
|
|
|
|
xml_add_element($doc, $urls, "poco:type", "homepage");
|
|
|
|
|
xml_add_element($doc, $urls, "poco:value", $profile["homepage"]);
|
|
|
|
|
xml_add_element($doc, $urls, "poco:primary", "true");
|
|
|
|
|
xml::add_element($doc, $urls, "poco:type", "homepage");
|
|
|
|
|
xml::add_element($doc, $urls, "poco:value", $profile["homepage"]);
|
|
|
|
|
xml::add_element($doc, $urls, "poco:primary", "true");
|
|
|
|
|
$author->appendChild($urls);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -528,7 +529,7 @@ class dfrn {
|
|
|
|
|
$keywords = explode(",", $profile["pub_keywords"]);
|
|
|
|
|
|
|
|
|
|
foreach ($keywords AS $keyword)
|
|
|
|
|
xml_add_element($doc, $author, "poco:tags", trim($keyword));
|
|
|
|
|
xml::add_element($doc, $author, "poco:tags", trim($keyword));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -536,25 +537,25 @@ class dfrn {
|
|
|
|
|
$xmpp = "";
|
|
|
|
|
if (trim($xmpp) != "") {
|
|
|
|
|
$ims = $doc->createElement("poco:ims");
|
|
|
|
|
xml_add_element($doc, $ims, "poco:type", "xmpp");
|
|
|
|
|
xml_add_element($doc, $ims, "poco:value", $xmpp);
|
|
|
|
|
xml_add_element($doc, $ims, "poco:primary", "true");
|
|
|
|
|
xml::add_element($doc, $ims, "poco:type", "xmpp");
|
|
|
|
|
xml::add_element($doc, $ims, "poco:value", $xmpp);
|
|
|
|
|
xml::add_element($doc, $ims, "poco:primary", "true");
|
|
|
|
|
$author->appendChild($ims);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (trim($profile["locality"].$profile["region"].$profile["country-name"]) != "") {
|
|
|
|
|
$element = $doc->createElement("poco:address");
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $element, "poco:formatted", formatted_location($profile));
|
|
|
|
|
xml::add_element($doc, $element, "poco:formatted", formatted_location($profile));
|
|
|
|
|
|
|
|
|
|
if (trim($profile["locality"]) != "")
|
|
|
|
|
xml_add_element($doc, $element, "poco:locality", $profile["locality"]);
|
|
|
|
|
xml::add_element($doc, $element, "poco:locality", $profile["locality"]);
|
|
|
|
|
|
|
|
|
|
if (trim($profile["region"]) != "")
|
|
|
|
|
xml_add_element($doc, $element, "poco:region", $profile["region"]);
|
|
|
|
|
xml::add_element($doc, $element, "poco:region", $profile["region"]);
|
|
|
|
|
|
|
|
|
|
if (trim($profile["country-name"]) != "")
|
|
|
|
|
xml_add_element($doc, $element, "poco:country", $profile["country-name"]);
|
|
|
|
|
xml::add_element($doc, $element, "poco:country", $profile["country-name"]);
|
|
|
|
|
|
|
|
|
|
$author->appendChild($element);
|
|
|
|
|
}
|
|
|
|
@ -578,9 +579,9 @@ class dfrn {
|
|
|
|
|
$contact = get_contact_details_by_url($contact_url, $item["uid"]);
|
|
|
|
|
|
|
|
|
|
$author = $doc->createElement($element);
|
|
|
|
|
xml_add_element($doc, $author, "name", $contact["name"]);
|
|
|
|
|
xml_add_element($doc, $author, "uri", $contact["url"]);
|
|
|
|
|
xml_add_element($doc, $author, "dfrn:handle", $contact["addr"]);
|
|
|
|
|
xml::add_element($doc, $author, "name", $contact["name"]);
|
|
|
|
|
xml::add_element($doc, $author, "uri", $contact["url"]);
|
|
|
|
|
xml::add_element($doc, $author, "dfrn:handle", $contact["addr"]);
|
|
|
|
|
|
|
|
|
|
/// @Todo
|
|
|
|
|
/// - Check real image type and image size
|
|
|
|
@ -591,7 +592,7 @@ class dfrn {
|
|
|
|
|
"media:width" => 80,
|
|
|
|
|
"media:height" => 80,
|
|
|
|
|
"href" => $contact["photo"]);
|
|
|
|
|
xml_add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
$attributes = array(
|
|
|
|
|
"rel" => "avatar",
|
|
|
|
@ -599,7 +600,7 @@ class dfrn {
|
|
|
|
|
"media:width" => 80,
|
|
|
|
|
"media:height" => 80,
|
|
|
|
|
"href" => $contact["photo"]);
|
|
|
|
|
xml_add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $author, "link", "", $attributes);
|
|
|
|
|
|
|
|
|
|
return $author;
|
|
|
|
|
}
|
|
|
|
@ -622,11 +623,11 @@ class dfrn {
|
|
|
|
|
if(!$r)
|
|
|
|
|
return false;
|
|
|
|
|
if($r->type)
|
|
|
|
|
xml_add_element($doc, $entry, "activity:object-type", $r->type);
|
|
|
|
|
xml::add_element($doc, $entry, "activity:object-type", $r->type);
|
|
|
|
|
if($r->id)
|
|
|
|
|
xml_add_element($doc, $entry, "id", $r->id);
|
|
|
|
|
xml::add_element($doc, $entry, "id", $r->id);
|
|
|
|
|
if($r->title)
|
|
|
|
|
xml_add_element($doc, $entry, "title", $r->title);
|
|
|
|
|
xml::add_element($doc, $entry, "title", $r->title);
|
|
|
|
|
if($r->link) {
|
|
|
|
|
if(substr($r->link,0,1) == '<') {
|
|
|
|
|
if(strstr($r->link,'&') && (! strstr($r->link,'&')))
|
|
|
|
@ -641,16 +642,16 @@ class dfrn {
|
|
|
|
|
$attributes = array();
|
|
|
|
|
foreach ($link->attributes() AS $parameter => $value)
|
|
|
|
|
$attributes[$parameter] = $value;
|
|
|
|
|
xml_add_element($doc, $entry, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $entry, "link", "", $attributes);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$attributes = array("rel" => "alternate", "type" => "text/html", "href" => $r->link);
|
|
|
|
|
xml_add_element($doc, $entry, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $entry, "link", "", $attributes);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if($r->content)
|
|
|
|
|
xml_add_element($doc, $entry, "content", bbcode($r->content), array("type" => "html"));
|
|
|
|
|
xml::add_element($doc, $entry, "content", bbcode($r->content), array("type" => "html"));
|
|
|
|
|
|
|
|
|
|
return $entry;
|
|
|
|
|
}
|
|
|
|
@ -684,7 +685,7 @@ class dfrn {
|
|
|
|
|
if(trim($matches[4]) != "")
|
|
|
|
|
$attributes["title"] = trim($matches[4]);
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $root, "link", "", $attributes);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -711,7 +712,7 @@ class dfrn {
|
|
|
|
|
|
|
|
|
|
if($item['deleted']) {
|
|
|
|
|
$attributes = array("ref" => $item['uri'], "when" => datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME));
|
|
|
|
|
return xml_create_element($doc, "at:deleted-entry", "", $attributes);
|
|
|
|
|
return xml::create_element($doc, "at:deleted-entry", "", $attributes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$entry = $doc->createElement("entry");
|
|
|
|
@ -745,66 +746,66 @@ class dfrn {
|
|
|
|
|
$attributes = array("ref" => $parent_item, "type" => "text/html",
|
|
|
|
|
"href" => app::get_baseurl().'/display/'.$parent[0]['guid'],
|
|
|
|
|
"dfrn:diaspora_guid" => $parent[0]['guid']);
|
|
|
|
|
xml_add_element($doc, $entry, "thr:in-reply-to", "", $attributes);
|
|
|
|
|
xml::add_element($doc, $entry, "thr:in-reply-to", "", $attributes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $entry, "id", $item["uri"]);
|
|
|
|
|
xml_add_element($doc, $entry, "title", $item["title"]);
|
|
|
|
|
xml::add_element($doc, $entry, "id", $item["uri"]);
|
|
|
|
|
xml::add_element($doc, $entry, "title", $item["title"]);
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $entry, "published", datetime_convert("UTC","UTC",$item["created"]."+00:00",ATOM_TIME));
|
|
|
|
|
xml_add_element($doc, $entry, "updated", datetime_convert("UTC","UTC",$item["edited"]."+00:00",ATOM_TIME));
|
|
|
|
|
xml::add_element($doc, $entry, "published", datetime_convert("UTC","UTC",$item["created"]."+00:00",ATOM_TIME));
|
|
|
|
|
xml::add_element($doc, $entry, "updated", datetime_convert("UTC","UTC",$item["edited"]."+00:00",ATOM_TIME));
|
|
|
|
|
|
|
|
|
|
// "dfrn:env" is used to read the content
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:env", base64url_encode($body, true));
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:env", base64url_encode($body, true));
|
|
|
|
|
|
|
|
|
|
// The "content" field is not read by the receiver. We could remove it when the type is "text"
|
|
|
|
|
// We keep it at the moment, maybe there is some old version that doesn't read "dfrn:env"
|
|
|
|
|
xml_add_element($doc, $entry, "content", (($type == 'html') ? $htmlbody : $body), array("type" => $type));
|
|
|
|
|
xml::add_element($doc, $entry, "content", (($type == 'html') ? $htmlbody : $body), array("type" => $type));
|
|
|
|
|
|
|
|
|
|
// We save this value in "plink". Maybe we should read it from there as well?
|
|
|
|
|
xml_add_element($doc, $entry, "link", "", array("rel" => "alternate", "type" => "text/html",
|
|
|
|
|
xml::add_element($doc, $entry, "link", "", array("rel" => "alternate", "type" => "text/html",
|
|
|
|
|
"href" => app::get_baseurl()."/display/".$item["guid"]));
|
|
|
|
|
|
|
|
|
|
// "comment-allow" is some old fashioned stuff for old Friendica versions.
|
|
|
|
|
// It is included in the rewritten code for completeness
|
|
|
|
|
if ($comment)
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:comment-allow", intval($item['last-child']));
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:comment-allow", intval($item['last-child']));
|
|
|
|
|
|
|
|
|
|
if($item['location'])
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:location", $item['location']);
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:location", $item['location']);
|
|
|
|
|
|
|
|
|
|
if($item['coord'])
|
|
|
|
|
xml_add_element($doc, $entry, "georss:point", $item['coord']);
|
|
|
|
|
xml::add_element($doc, $entry, "georss:point", $item['coord']);
|
|
|
|
|
|
|
|
|
|
if(($item['private']) || strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid']))
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:private", (($item['private']) ? $item['private'] : 1));
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:private", (($item['private']) ? $item['private'] : 1));
|
|
|
|
|
|
|
|
|
|
if($item['extid'])
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:extid", $item['extid']);
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:extid", $item['extid']);
|
|
|
|
|
|
|
|
|
|
if($item['bookmark'])
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:bookmark", "true");
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:bookmark", "true");
|
|
|
|
|
|
|
|
|
|
if($item['app'])
|
|
|
|
|
xml_add_element($doc, $entry, "statusnet:notice_info", "", array("local_id" => $item['id'], "source" => $item['app']));
|
|
|
|
|
xml::add_element($doc, $entry, "statusnet:notice_info", "", array("local_id" => $item['id'], "source" => $item['app']));
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:diaspora_guid", $item["guid"]);
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:diaspora_guid", $item["guid"]);
|
|
|
|
|
|
|
|
|
|
// The signed text contains the content in Markdown, the sender handle and the signatur for the content
|
|
|
|
|
// It is needed for relayed comments to Diaspora.
|
|
|
|
|
if($item['signed_text']) {
|
|
|
|
|
$sign = base64_encode(json_encode(array('signed_text' => $item['signed_text'],'signature' => $item['signature'],'signer' => $item['signer'])));
|
|
|
|
|
xml_add_element($doc, $entry, "dfrn:diaspora_signature", $sign);
|
|
|
|
|
xml::add_element($doc, $entry, "dfrn:diaspora_signature", $sign);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
xml_add_element($doc, $entry, "activity:verb", construct_verb($item));
|
|
|
|
|
xml::add_element($doc, $entry, "activity:verb", construct_verb($item));
|
|
|
|
|
|
|
|
|
|
if ($item['object-type'] != "")
|
|
|
|
|
xml_add_element($doc, $entry, "activity:object-type", $item['object-type']);
|
|
|
|
|
xml::add_element($doc, $entry, "activity:object-type", $item['object-type']);
|
|
|
|
|
elseif ($item['id'] == $item['parent'])
|
|
|
|
|
xml_add_element($doc, $entry, "activity:object-type", ACTIVITY_OBJ_NOTE);
|
|
|
|
|
xml::add_element($doc, $entry, "activity:object-type", ACTIVITY_OBJ_NOTE);
|
|
|
|
|
else
|
|
|
|
|
xml_add_element($doc, $entry, "activity:object-type", ACTIVITY_OBJ_COMMENT);
|
|
|
|
|
xml::add_element($doc, $entry, "activity:object-type", ACTIVITY_OBJ_COMMENT);
|
|
|
|
|
|
|
|
|
|
$actobj = self::create_activity($doc, "activity:object", $item['object']);
|
|
|
|
|
if ($actobj)
|
|
|
|
@ -819,7 +820,7 @@ class dfrn {
|
|
|
|
|
if(count($tags)) {
|
|
|
|
|
foreach($tags as $t)
|
|
|
|
|
if (($type != 'html') OR ($t[0] != "@"))
|
|
|
|
|
xml_add_element($doc, $entry, "category", "", array("scheme" => "X-DFRN:".$t[0].":".$t[1], "term" => $t[2]));
|
|
|
|
|
xml::add_element($doc, $entry, "category", "", array("scheme" => "X-DFRN:".$t[0].":".$t[1], "term" => $t[2]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(count($tags))
|
|
|
|
@ -832,11 +833,11 @@ class dfrn {
|
|
|
|
|
intval($owner["uid"]),
|
|
|
|
|
dbesc(normalise_link($mention)));
|
|
|
|
|
if ($r[0]["forum"] OR $r[0]["prv"])
|
|
|
|
|
xml_add_element($doc, $entry, "link", "", array("rel" => "mentioned",
|
|
|
|
|
xml::add_element($doc, $entry, "link", "", array("rel" => "mentioned",
|
|
|
|
|
"ostatus:object-type" => ACTIVITY_OBJ_GROUP,
|
|
|
|
|
"href" => $mention));
|
|
|
|
|
else
|
|
|
|
|
xml_add_element($doc, $entry, "link", "", array("rel" => "mentioned",
|
|
|
|
|
xml::add_element($doc, $entry, "link", "", array("rel" => "mentioned",
|
|
|
|
|
"ostatus:object-type" => ACTIVITY_OBJ_PERSON,
|
|
|
|
|
"href" => $mention));
|
|
|
|
|
}
|
|
|
|
@ -1323,7 +1324,7 @@ class dfrn {
|
|
|
|
|
$obj_element = $obj_doc->createElementNS(NAMESPACE_ATOM1, $element);
|
|
|
|
|
|
|
|
|
|
$activity_type = $xpath->query("activity:object-type/text()", $activity)->item(0)->nodeValue;
|
|
|
|
|
xml_add_element($obj_doc, $obj_element, "type", $activity_type);
|
|
|
|
|
xml::add_element($obj_doc, $obj_element, "type", $activity_type);
|
|
|
|
|
|
|
|
|
|
$id = $xpath->query("atom:id", $activity)->item(0);
|
|
|
|
|
if (is_object($id))
|
|
|
|
|