Merge pull request #2425 from annando/1603-ostatus
OStatus is now a class - and reshare and like seems to work
This commit is contained in:
commit
d523a809a2
8 changed files with 1920 additions and 1629 deletions
|
@ -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();
|
||||||
|
|
191
include/dfrn.php
191
include/dfrn.php
|
@ -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,'&')))
|
if(strstr($r->link,'&') && (! strstr($r->link,'&')))
|
||||||
|
@ -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))
|
||||||
|
|
|
@ -383,9 +383,9 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
||||||
// Converting the plink
|
// Converting the plink
|
||||||
if ($arr['network'] == NETWORK_OSTATUS) {
|
if ($arr['network'] == NETWORK_OSTATUS) {
|
||||||
if (isset($arr['plink']))
|
if (isset($arr['plink']))
|
||||||
$arr['plink'] = ostatus_convert_href($arr['plink']);
|
$arr['plink'] = ostatus::convert_href($arr['plink']);
|
||||||
elseif (isset($arr['uri']))
|
elseif (isset($arr['uri']))
|
||||||
$arr['plink'] = ostatus_convert_href($arr['uri']);
|
$arr['plink'] = ostatus::convert_href($arr['uri']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(x($arr, 'gravity'))
|
if(x($arr, 'gravity'))
|
||||||
|
@ -1243,7 +1243,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
|
||||||
//$tempfile = tempnam(get_temppath(), "ostatus2");
|
//$tempfile = tempnam(get_temppath(), "ostatus2");
|
||||||
//file_put_contents($tempfile, $xml);
|
//file_put_contents($tempfile, $xml);
|
||||||
logger("Consume OStatus messages ", LOGGER_DEBUG);
|
logger("Consume OStatus messages ", LOGGER_DEBUG);
|
||||||
ostatus_import($xml,$importer,$contact, $hub);
|
ostatus::import($xml,$importer,$contact, $hub);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,7 +223,7 @@ function notifier_run(&$argv, &$argc){
|
||||||
|
|
||||||
if(! ($mail || $fsuggest || $relocate)) {
|
if(! ($mail || $fsuggest || $relocate)) {
|
||||||
|
|
||||||
$slap = ostatus_salmon($target_item,$owner);
|
$slap = ostatus::salmon($target_item,$owner);
|
||||||
|
|
||||||
require_once('include/group.php');
|
require_once('include/group.php');
|
||||||
|
|
||||||
|
|
3305
include/ostatus.php
3305
include/ostatus.php
File diff suppressed because it is too large
Load diff
|
@ -16,7 +16,7 @@ function handle_pubsubhubbub() {
|
||||||
|
|
||||||
logger("Generate feed for user ".$rr['nickname']." - last updated ".$rr['last_update'], LOGGER_DEBUG);
|
logger("Generate feed for user ".$rr['nickname']." - last updated ".$rr['last_update'], LOGGER_DEBUG);
|
||||||
|
|
||||||
$params = ostatus_feed($a, $rr['nickname'], $rr['last_update']);
|
$params = ostatus::feed($a, $rr['nickname'], $rr['last_update']);
|
||||||
$hmac_sig = hash_hmac("sha1", $params, $rr['secret']);
|
$hmac_sig = hash_hmac("sha1", $params, $rr['secret']);
|
||||||
|
|
||||||
$headers = array("Content-type: application/atom+xml",
|
$headers = array("Content-type: application/atom+xml",
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -84,7 +84,7 @@ function salmon_post(&$a) {
|
||||||
// decode the data
|
// decode the data
|
||||||
$data = base64url_decode($data);
|
$data = base64url_decode($data);
|
||||||
|
|
||||||
$author = ostatus_salmon_author($data,$importer);
|
$author = ostatus::salmon_author($data,$importer);
|
||||||
$author_link = $author["author-link"];
|
$author_link = $author["author-link"];
|
||||||
|
|
||||||
if(! $author_link) {
|
if(! $author_link) {
|
||||||
|
@ -181,7 +181,7 @@ function salmon_post(&$a) {
|
||||||
|
|
||||||
$contact_rec = ((count($r)) ? $r[0] : null);
|
$contact_rec = ((count($r)) ? $r[0] : null);
|
||||||
|
|
||||||
ostatus_import($data,$importer,$contact_rec, $hub);
|
ostatus::import($data,$importer,$contact_rec, $hub);
|
||||||
|
|
||||||
http_status_exit(200);
|
http_status_exit(200);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue