OStatus class is now moved into the right place

This commit is contained in:
Michael Vogel 2016-03-30 23:25:20 +02:00
parent b93e1d73a1
commit 2c5b5c1cd4
4 changed files with 1688 additions and 1623 deletions

View file

@ -101,10 +101,10 @@ function cron_run(&$argv, &$argc){
// Check OStatus conversations // Check OStatus conversations
// Check only conversations with mentions (for a longer time) // Check only conversations with mentions (for a longer time)
check_conversations(true); ostatus::check_conversations(true);
// Check every conversation // Check every conversation
check_conversations(false); ostatus::check_conversations(false);
// Set the gcontact-id in the item table if missing // Set the gcontact-id in the item table if missing
item_set_gcontact(); item_set_gcontact();

View file

@ -19,6 +19,7 @@ require_once("include/text.php");
require_once("include/oembed.php"); require_once("include/oembed.php");
require_once("include/html2bbcode.php"); require_once("include/html2bbcode.php");
require_once("include/bbcode.php"); require_once("include/bbcode.php");
require_once("include/xml.php");
/** /**
* @brief This class contain functions to create and send DFRN XML files * @brief This class contain functions to create and send DFRN XML files
@ -286,17 +287,17 @@ class dfrn {
$mail = $doc->createElement("dfrn:mail"); $mail = $doc->createElement("dfrn:mail");
$sender = $doc->createElement("dfrn:sender"); $sender = $doc->createElement("dfrn:sender");
xml_add_element($doc, $sender, "dfrn:name", $owner['name']); xml::add_element($doc, $sender, "dfrn:name", $owner['name']);
xml_add_element($doc, $sender, "dfrn:uri", $owner['url']); xml::add_element($doc, $sender, "dfrn:uri", $owner['url']);
xml_add_element($doc, $sender, "dfrn:avatar", $owner['thumb']); xml::add_element($doc, $sender, "dfrn:avatar", $owner['thumb']);
$mail->appendChild($sender); $mail->appendChild($sender);
xml_add_element($doc, $mail, "dfrn:id", $item['uri']); 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: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: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:subject", $item['title']);
xml_add_element($doc, $mail, "dfrn:content", $item['body']); xml::add_element($doc, $mail, "dfrn:content", $item['body']);
$root->appendChild($mail); $root->appendChild($mail);
@ -319,11 +320,11 @@ class dfrn {
$suggest = $doc->createElement("dfrn:suggest"); $suggest = $doc->createElement("dfrn:suggest");
xml_add_element($doc, $suggest, "dfrn:url", $item['url']); xml::add_element($doc, $suggest, "dfrn:url", $item['url']);
xml_add_element($doc, $suggest, "dfrn:name", $item['name']); xml::add_element($doc, $suggest, "dfrn:name", $item['name']);
xml_add_element($doc, $suggest, "dfrn:photo", $item['photo']); xml::add_element($doc, $suggest, "dfrn:photo", $item['photo']);
xml_add_element($doc, $suggest, "dfrn:request", $item['request']); xml::add_element($doc, $suggest, "dfrn:request", $item['request']);
xml_add_element($doc, $suggest, "dfrn:note", $item['note']); xml::add_element($doc, $suggest, "dfrn:note", $item['note']);
$root->appendChild($suggest); $root->appendChild($suggest);
@ -365,16 +366,16 @@ class dfrn {
$relocate = $doc->createElement("dfrn:relocate"); $relocate = $doc->createElement("dfrn:relocate");
xml_add_element($doc, $relocate, "dfrn:url", $owner['url']); xml::add_element($doc, $relocate, "dfrn:url", $owner['url']);
xml_add_element($doc, $relocate, "dfrn:name", $owner['name']); xml::add_element($doc, $relocate, "dfrn:name", $owner['name']);
xml_add_element($doc, $relocate, "dfrn:photo", $photos[4]); xml::add_element($doc, $relocate, "dfrn:photo", $photos[4]);
xml_add_element($doc, $relocate, "dfrn:thumb", $photos[5]); xml::add_element($doc, $relocate, "dfrn:thumb", $photos[5]);
xml_add_element($doc, $relocate, "dfrn:micro", $photos[6]); xml::add_element($doc, $relocate, "dfrn:micro", $photos[6]);
xml_add_element($doc, $relocate, "dfrn:request", $owner['request']); xml::add_element($doc, $relocate, "dfrn:request", $owner['request']);
xml_add_element($doc, $relocate, "dfrn:confirm", $owner['confirm']); xml::add_element($doc, $relocate, "dfrn:confirm", $owner['confirm']);
xml_add_element($doc, $relocate, "dfrn:notify", $owner['notify']); xml::add_element($doc, $relocate, "dfrn:notify", $owner['notify']);
xml_add_element($doc, $relocate, "dfrn:poll", $owner['poll']); 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:sitepubkey", get_config('system','site_pubkey'));
$root->appendChild($relocate); $root->appendChild($relocate);
@ -410,39 +411,39 @@ class dfrn {
$root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS); $root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
$root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET); $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
xml_add_element($doc, $root, "id", app::get_baseurl()."/profile/".$owner["nick"]); 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, "title", $owner["name"]);
$attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION); $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/"); $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); $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) { if ($public) {
// DFRN itself doesn't uses this. But maybe someone else wants to subscribe to the public feed. // 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"]); $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"]); $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"]); $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) 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" /// @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); $author = self::add_author($doc, $owner, $authorelement, $public);
$root->appendChild($author); $root->appendChild($author);
@ -468,26 +469,26 @@ class dfrn {
$picdate = datetime_convert('UTC', 'UTC', $owner['avatar-date'].'+00:00', ATOM_TIME); $picdate = datetime_convert('UTC', 'UTC', $owner['avatar-date'].'+00:00', ATOM_TIME);
$attributes = array("dfrn:updated" => $namdate); $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); $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); $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, $attributes = array("rel" => "photo", "type" => "image/jpeg", "dfrn:updated" => $picdate,
"media:width" => 175, "media:height" => 175, "href" => $owner['photo']); "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, $attributes = array("rel" => "avatar", "type" => "image/jpeg", "dfrn:updated" => $picdate,
"media:width" => 175, "media:height" => 175, "href" => $owner['photo']); "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']); $birthday = feed_birthday($owner['uid'], $owner['timezone']);
if ($birthday) 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 // The following fields will only be generated if this isn't for a public feed
if ($public) if ($public)
@ -502,25 +503,25 @@ class dfrn {
intval($owner['uid'])); intval($owner['uid']));
if ($r) { if ($r) {
$profile = $r[0]; $profile = $r[0];
xml_add_element($doc, $author, "poco:displayName", $profile["name"]); xml::add_element($doc, $author, "poco:displayName", $profile["name"]);
xml_add_element($doc, $author, "poco:updated", $namdate); xml::add_element($doc, $author, "poco:updated", $namdate);
if (trim($profile["dob"]) != "0000-00-00") 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:note", $profile["about"]);
xml_add_element($doc, $author, "poco:preferredUsername", $profile["nickname"]); xml::add_element($doc, $author, "poco:preferredUsername", $profile["nickname"]);
$savetz = date_default_timezone_get(); $savetz = date_default_timezone_get();
date_default_timezone_set($profile["timezone"]); 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); date_default_timezone_set($savetz);
if (trim($profile["homepage"]) != "") { if (trim($profile["homepage"]) != "") {
$urls = $doc->createElement("poco:urls"); $urls = $doc->createElement("poco:urls");
xml_add_element($doc, $urls, "poco:type", "homepage"); xml::add_element($doc, $urls, "poco:type", "homepage");
xml_add_element($doc, $urls, "poco:value", $profile["homepage"]); xml::add_element($doc, $urls, "poco:value", $profile["homepage"]);
xml_add_element($doc, $urls, "poco:primary", "true"); xml::add_element($doc, $urls, "poco:primary", "true");
$author->appendChild($urls); $author->appendChild($urls);
} }
@ -528,7 +529,7 @@ class dfrn {
$keywords = explode(",", $profile["pub_keywords"]); $keywords = explode(",", $profile["pub_keywords"]);
foreach ($keywords AS $keyword) 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 = ""; $xmpp = "";
if (trim($xmpp) != "") { if (trim($xmpp) != "") {
$ims = $doc->createElement("poco:ims"); $ims = $doc->createElement("poco:ims");
xml_add_element($doc, $ims, "poco:type", "xmpp"); xml::add_element($doc, $ims, "poco:type", "xmpp");
xml_add_element($doc, $ims, "poco:value", $xmpp); xml::add_element($doc, $ims, "poco:value", $xmpp);
xml_add_element($doc, $ims, "poco:primary", "true"); xml::add_element($doc, $ims, "poco:primary", "true");
$author->appendChild($ims); $author->appendChild($ims);
} }
if (trim($profile["locality"].$profile["region"].$profile["country-name"]) != "") { if (trim($profile["locality"].$profile["region"].$profile["country-name"]) != "") {
$element = $doc->createElement("poco:address"); $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"]) != "") 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"]) != "") 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"]) != "") 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); $author->appendChild($element);
} }
@ -578,9 +579,9 @@ class dfrn {
$contact = get_contact_details_by_url($contact_url, $item["uid"]); $contact = get_contact_details_by_url($contact_url, $item["uid"]);
$author = $doc->createElement($element); $author = $doc->createElement($element);
xml_add_element($doc, $author, "name", $contact["name"]); xml::add_element($doc, $author, "name", $contact["name"]);
xml_add_element($doc, $author, "uri", $contact["url"]); xml::add_element($doc, $author, "uri", $contact["url"]);
xml_add_element($doc, $author, "dfrn:handle", $contact["addr"]); xml::add_element($doc, $author, "dfrn:handle", $contact["addr"]);
/// @Todo /// @Todo
/// - Check real image type and image size /// - Check real image type and image size
@ -591,7 +592,7 @@ class dfrn {
"media:width" => 80, "media:width" => 80,
"media:height" => 80, "media:height" => 80,
"href" => $contact["photo"]); "href" => $contact["photo"]);
xml_add_element($doc, $author, "link", "", $attributes); xml::add_element($doc, $author, "link", "", $attributes);
$attributes = array( $attributes = array(
"rel" => "avatar", "rel" => "avatar",
@ -599,7 +600,7 @@ class dfrn {
"media:width" => 80, "media:width" => 80,
"media:height" => 80, "media:height" => 80,
"href" => $contact["photo"]); "href" => $contact["photo"]);
xml_add_element($doc, $author, "link", "", $attributes); xml::add_element($doc, $author, "link", "", $attributes);
return $author; return $author;
} }
@ -622,11 +623,11 @@ class dfrn {
if(!$r) if(!$r)
return false; return false;
if($r->type) 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) if($r->id)
xml_add_element($doc, $entry, "id", $r->id); xml::add_element($doc, $entry, "id", $r->id);
if($r->title) if($r->title)
xml_add_element($doc, $entry, "title", $r->title); xml::add_element($doc, $entry, "title", $r->title);
if($r->link) { if($r->link) {
if(substr($r->link,0,1) == '<') { if(substr($r->link,0,1) == '<') {
if(strstr($r->link,'&') && (! strstr($r->link,'&amp;'))) if(strstr($r->link,'&') && (! strstr($r->link,'&amp;')))
@ -641,16 +642,16 @@ class dfrn {
$attributes = array(); $attributes = array();
foreach ($link->attributes() AS $parameter => $value) foreach ($link->attributes() AS $parameter => $value)
$attributes[$parameter] = $value; $attributes[$parameter] = $value;
xml_add_element($doc, $entry, "link", "", $attributes); xml::add_element($doc, $entry, "link", "", $attributes);
} }
} }
} else { } else {
$attributes = array("rel" => "alternate", "type" => "text/html", "href" => $r->link); $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) 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; return $entry;
} }
@ -684,7 +685,7 @@ class dfrn {
if(trim($matches[4]) != "") if(trim($matches[4]) != "")
$attributes["title"] = 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']) { if($item['deleted']) {
$attributes = array("ref" => $item['uri'], "when" => datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)); $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"); $entry = $doc->createElement("entry");
@ -745,66 +746,66 @@ class dfrn {
$attributes = array("ref" => $parent_item, "type" => "text/html", $attributes = array("ref" => $parent_item, "type" => "text/html",
"href" => app::get_baseurl().'/display/'.$parent[0]['guid'], "href" => app::get_baseurl().'/display/'.$parent[0]['guid'],
"dfrn:diaspora_guid" => $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, "id", $item["uri"]);
xml_add_element($doc, $entry, "title", $item["title"]); 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, "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, "updated", datetime_convert("UTC","UTC",$item["edited"]."+00:00",ATOM_TIME));
// "dfrn:env" is used to read the content // "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" // 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" // 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? // 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"])); "href" => app::get_baseurl()."/display/".$item["guid"]));
// "comment-allow" is some old fashioned stuff for old Friendica versions. // "comment-allow" is some old fashioned stuff for old Friendica versions.
// It is included in the rewritten code for completeness // It is included in the rewritten code for completeness
if ($comment) 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']) if($item['location'])
xml_add_element($doc, $entry, "dfrn:location", $item['location']); xml::add_element($doc, $entry, "dfrn:location", $item['location']);
if($item['coord']) 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'])) 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']) if($item['extid'])
xml_add_element($doc, $entry, "dfrn:extid", $item['extid']); xml::add_element($doc, $entry, "dfrn:extid", $item['extid']);
if($item['bookmark']) if($item['bookmark'])
xml_add_element($doc, $entry, "dfrn:bookmark", "true"); xml::add_element($doc, $entry, "dfrn:bookmark", "true");
if($item['app']) 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 // 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. // It is needed for relayed comments to Diaspora.
if($item['signed_text']) { if($item['signed_text']) {
$sign = base64_encode(json_encode(array('signed_text' => $item['signed_text'],'signature' => $item['signature'],'signer' => $item['signer']))); $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'] != "") 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']) 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 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']); $actobj = self::create_activity($doc, "activity:object", $item['object']);
if ($actobj) if ($actobj)
@ -819,7 +820,7 @@ class dfrn {
if(count($tags)) { if(count($tags)) {
foreach($tags as $t) foreach($tags as $t)
if (($type != 'html') OR ($t[0] != "@")) 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)) if(count($tags))
@ -832,11 +833,11 @@ class dfrn {
intval($owner["uid"]), intval($owner["uid"]),
dbesc(normalise_link($mention))); dbesc(normalise_link($mention)));
if ($r[0]["forum"] OR $r[0]["prv"]) 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, "ostatus:object-type" => ACTIVITY_OBJ_GROUP,
"href" => $mention)); "href" => $mention));
else 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, "ostatus:object-type" => ACTIVITY_OBJ_PERSON,
"href" => $mention)); "href" => $mention));
} }
@ -1323,7 +1324,7 @@ class dfrn {
$obj_element = $obj_doc->createElementNS(NAMESPACE_ATOM1, $element); $obj_element = $obj_doc->createElementNS(NAMESPACE_ATOM1, $element);
$activity_type = $xpath->query("activity:object-type/text()", $activity)->item(0)->nodeValue; $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); $id = $xpath->query("atom:id", $activity)->item(0);
if (is_object($id)) if (is_object($id))

File diff suppressed because it is too large Load diff

View file

@ -92,5 +92,40 @@ class xml {
self::copy($childentry, $child, $childfield); self::copy($childentry, $child, $childfield);
} }
} }
/**
* @brief Create an XML element
*
* @param object $doc XML root
* @param string $element XML element name
* @param string $value XML value
* @param array $attributes array containing the attributes
*
* @return object XML element object
*/
public static function create_element($doc, $element, $value = "", $attributes = array()) {
$element = $doc->createElement($element, xmlify($value));
foreach ($attributes AS $key => $value) {
$attribute = $doc->createAttribute($key);
$attribute->value = xmlify($value);
$element->appendChild($attribute);
}
return $element;
}
/**
* @brief Create an XML and append it to the parent object
*
* @param object $doc XML root
* @param object $parent parent object
* @param string $element XML element name
* @param string $value XML value
* @param array $attributes array containing the attributes
*/
public static function add_element($doc, $parent, $element, $value = "", $attributes = array()) {
$element = self::create_element($doc, $element, $value, $attributes);
$parent->appendChild($element);
}
} }
?> ?>