Merge pull request #3022 from annando/1612-ostatus-follow2
Ostatus: The follow/unfollow XML should now be even more compliant.
This commit is contained in:
commit
b3fa0a4e90
1 changed files with 31 additions and 22 deletions
|
@ -467,7 +467,7 @@ class ostatus {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is it a repeated post?
|
// Is it a repeated post?
|
||||||
if ($repeat_of != "") {
|
if (($repeat_of != "") OR ($item["verb"] == ACTIVITY_SHARE)) {
|
||||||
$activityobjects = $xpath->query('activity:object', $entry)->item(0);
|
$activityobjects = $xpath->query('activity:object', $entry)->item(0);
|
||||||
|
|
||||||
if (is_object($activityobjects)) {
|
if (is_object($activityobjects)) {
|
||||||
|
@ -1801,10 +1801,8 @@ class ostatus {
|
||||||
private function follow_entry($doc, $item, $owner, $toplevel) {
|
private function follow_entry($doc, $item, $owner, $toplevel) {
|
||||||
|
|
||||||
$item["id"] = $item["parent"] = 0;
|
$item["id"] = $item["parent"] = 0;
|
||||||
$item['guid'] = get_guid(32);
|
$item["created"] = $item["edited"] = date("c");
|
||||||
$item["uri"] = $item['parent-uri'] = $item['thr-parent'] = 'urn:X-dfrn:'.get_app()->get_hostname() . ':follow:'.$item['guid'];
|
$item["private"] = true;
|
||||||
$item["created"] = $item["edited"] = datetime_convert('UTC','UTC', 'now', ATOM_TIME);
|
|
||||||
$item["app"] = "activity";
|
|
||||||
|
|
||||||
$contact = Probe::uri($item['follow']);
|
$contact = Probe::uri($item['follow']);
|
||||||
|
|
||||||
|
@ -1814,17 +1812,35 @@ class ostatus {
|
||||||
$item['follow'] = $contact['alias'];
|
$item['follow'] = $contact['alias'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($item['verb'] == ACTIVITY_FOLLOW) {
|
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s'",
|
||||||
$message = t('<a href="%s">%s</> is now following <a href="%s">%s</>.');
|
intval($owner['uid']), dbesc(normalise_link($contact["url"])));
|
||||||
|
|
||||||
|
if (dbm::is_result($r)) {
|
||||||
|
$connect_id = $r[0]['id'];
|
||||||
} else {
|
} else {
|
||||||
$message = t('<a href="%s">%s</> stopped following <a href="%s">%s</>.');
|
$connect_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$item["body"] = sprintf($message, $owner["url"], $owner["nick"], $contact["url"], $contact["nick"]);
|
if ($item['verb'] == ACTIVITY_FOLLOW) {
|
||||||
|
$message = t('%s is now following %s.');
|
||||||
|
$title = t('following');
|
||||||
|
$action = "subscription";
|
||||||
|
} else {
|
||||||
|
$message = t('%s stopped following %s.');
|
||||||
|
$title = t('stopped following');
|
||||||
|
$action = "unfollow";
|
||||||
|
}
|
||||||
|
|
||||||
$title = self::entry_header($doc, $entry, $owner, $toplevel);
|
$item["uri"] = $item['parent-uri'] = $item['thr-parent'] =
|
||||||
|
'tag:'.get_app()->get_hostname().
|
||||||
|
','.date('Y-m-d').':'.$action.':'.$owner['uid'].
|
||||||
|
':person:'.$connect_id.':'.$item['created'];
|
||||||
|
|
||||||
self::entry_content($doc, $entry, $item, $owner, "");
|
$item["body"] = sprintf($message, $owner["nick"], $contact["nick"]);
|
||||||
|
|
||||||
|
self::entry_header($doc, $entry, $owner, $toplevel);
|
||||||
|
|
||||||
|
self::entry_content($doc, $entry, $item, $owner, $title);
|
||||||
|
|
||||||
$object = self::add_person_object($doc, $owner, $contact);
|
$object = self::add_person_object($doc, $owner, $contact);
|
||||||
$entry->appendChild($object);
|
$entry->appendChild($object);
|
||||||
|
@ -1926,7 +1942,7 @@ class ostatus {
|
||||||
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"]));
|
||||||
|
|
||||||
if ($complete)
|
if ($complete AND ($item["id"] > 0))
|
||||||
xml::add_element($doc, $entry, "status_net", "", array("notice_id" => $item["id"]));
|
xml::add_element($doc, $entry, "status_net", "", array("notice_id" => $item["id"]));
|
||||||
|
|
||||||
xml::add_element($doc, $entry, "activity:verb", $verb);
|
xml::add_element($doc, $entry, "activity:verb", $verb);
|
||||||
|
@ -1977,12 +1993,9 @@ class ostatus {
|
||||||
|
|
||||||
if (intval($item["parent"]) > 0) {
|
if (intval($item["parent"]) > 0) {
|
||||||
$conversation = App::get_baseurl()."/display/".$owner["nick"]."/".$item["parent"];
|
$conversation = App::get_baseurl()."/display/".$owner["nick"]."/".$item["parent"];
|
||||||
} else {
|
|
||||||
$conversation = "urn:X-dfrn:".App::get_baseurl().":conversation:".$item["guid"];
|
|
||||||
}
|
|
||||||
|
|
||||||
xml::add_element($doc, $entry, "link", "", array("rel" => "ostatus:conversation", "href" => $conversation));
|
xml::add_element($doc, $entry, "link", "", array("rel" => "ostatus:conversation", "href" => $conversation));
|
||||||
xml::add_element($doc, $entry, "ostatus:conversation", $conversation);
|
xml::add_element($doc, $entry, "ostatus:conversation", $conversation);
|
||||||
|
}
|
||||||
|
|
||||||
$tags = item_getfeedtags($item);
|
$tags = item_getfeedtags($item);
|
||||||
|
|
||||||
|
@ -1991,10 +2004,6 @@ class ostatus {
|
||||||
if ($t[0] == "@")
|
if ($t[0] == "@")
|
||||||
$mentioned[$t[1]] = $t[1];
|
$mentioned[$t[1]] = $t[1];
|
||||||
|
|
||||||
if (isset($item['follow'])) {
|
|
||||||
$mentioned[$item['follow']] = $item['follow'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure that mentions are accepted (GNU Social has problems with mixing HTTP and HTTPS)
|
// Make sure that mentions are accepted (GNU Social has problems with mixing HTTP and HTTPS)
|
||||||
$newmentions = array();
|
$newmentions = array();
|
||||||
foreach ($mentioned AS $mention) {
|
foreach ($mentioned AS $mention) {
|
||||||
|
@ -2032,7 +2041,7 @@ class ostatus {
|
||||||
|
|
||||||
self::get_attachment($doc, $entry, $item);
|
self::get_attachment($doc, $entry, $item);
|
||||||
|
|
||||||
if ($complete) {
|
if ($complete AND ($item["id"] > 0)) {
|
||||||
$app = $item["app"];
|
$app = $item["app"];
|
||||||
if ($app == "")
|
if ($app == "")
|
||||||
$app = "web";
|
$app = "web";
|
||||||
|
|
Loading…
Reference in a new issue