use Friendica\Model\User;
use Friendica\Network\Probe;
use Friendica\Object\Image;
-use Friendica\Protocol\Activity\ANamespace;
+use Friendica\Protocol\ActivityNamespace;
use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Images;
use Friendica\Util\Network;
use Friendica\Util\Proxy as ProxyUtils;
use Friendica\Util\Strings;
@$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
- $xpath->registerNamespace('atom', ANamespace::ATOM1);
- $xpath->registerNamespace('thr', ANamespace::THREAD);
- $xpath->registerNamespace('georss', ANamespace::GEORSS);
- $xpath->registerNamespace('activity', ANamespace::ACTIVITY);
- $xpath->registerNamespace('media', ANamespace::MEDIA);
- $xpath->registerNamespace('poco', ANamespace::POCO);
- $xpath->registerNamespace('ostatus', ANamespace::OSTATUS);
- $xpath->registerNamespace('statusnet', ANamespace::STATUSNET);
+ $xpath->registerNamespace('atom', ActivityNamespace::ATOM1);
+ $xpath->registerNamespace('thr', ActivityNamespace::THREAD);
+ $xpath->registerNamespace('georss', ActivityNamespace::GEORSS);
+ $xpath->registerNamespace('activity', ActivityNamespace::ACTIVITY);
+ $xpath->registerNamespace('media', ActivityNamespace::MEDIA);
+ $xpath->registerNamespace('poco', ActivityNamespace::POCO);
+ $xpath->registerNamespace('ostatus', ActivityNamespace::OSTATUS);
+ $xpath->registerNamespace('statusnet', ActivityNamespace::STATUSNET);
$contact = ["id" => 0];
@$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
- $xpath->registerNamespace('atom', ANamespace::ATOM1);
- $xpath->registerNamespace('thr', ANamespace::THREAD);
- $xpath->registerNamespace('georss', ANamespace::GEORSS);
- $xpath->registerNamespace('activity', ANamespace::ACTIVITY);
- $xpath->registerNamespace('media', ANamespace::MEDIA);
- $xpath->registerNamespace('poco', ANamespace::POCO);
- $xpath->registerNamespace('ostatus', ANamespace::OSTATUS);
- $xpath->registerNamespace('statusnet', ANamespace::STATUSNET);
+ $xpath->registerNamespace('atom', ActivityNamespace::ATOM1);
+ $xpath->registerNamespace('thr', ActivityNamespace::THREAD);
+ $xpath->registerNamespace('georss', ActivityNamespace::GEORSS);
+ $xpath->registerNamespace('activity', ActivityNamespace::ACTIVITY);
+ $xpath->registerNamespace('media', ActivityNamespace::MEDIA);
+ $xpath->registerNamespace('poco', ActivityNamespace::POCO);
+ $xpath->registerNamespace('ostatus', ActivityNamespace::OSTATUS);
+ $xpath->registerNamespace('statusnet', ActivityNamespace::STATUSNET);
$hub = "";
$hub_items = $xpath->query("/atom:feed/atom:link[@rel='hub']")->item(0);
continue;
}
- if (in_array($item["verb"], [ANamespace::OSTATUS . "/unfavorite", Activity::UNFAVORITE])) {
+ if (in_array($item["verb"], [Activity::O_UNFAVOURITE, Activity::UNFAVORITE])) {
// Ignore "Unfavorite" message
Logger::log("Ignore unfavorite message ".print_r($item, true), Logger::DEBUG);
continue;
continue;
}
- if ($item["verb"] == ANamespace::OSTATUS . "/unfollow") {
+ if ($item["verb"] == Activity::O_UNFOLLOW) {
$dummy = null;
Contact::removeFollower($importer, $contact, $item, $dummy);
continue;
$item["verb"] = Activity::LIKE;
$item["parent-uri"] = $orig_uri;
$item["gravity"] = GRAVITY_ACTIVITY;
- $item["object-type"] = Activity::OBJ_NOTE;
+ $item["object-type"] = Activity\ObjectType::NOTE;
}
// http://activitystrea.ms/schema/1.0/rsvp-yes
{
$item["body"] = HTML::toBBCode(XML::getFirstNodeValue($xpath, 'atom:content/text()', $entry));
$item["object-type"] = XML::getFirstNodeValue($xpath, 'activity:object-type/text()', $entry);
- if (($item["object-type"] == Activity::OBJ_BOOKMARK) || ($item["object-type"] == Activity::OBJ_EVENT)) {
+ if (($item["object-type"] == Activity\ObjectType::BOOKMARK) || ($item["object-type"] == Activity\ObjectType::EVENT)) {
$item["title"] = XML::getFirstNodeValue($xpath, 'atom:title/text()', $entry);
$item["body"] = XML::getFirstNodeValue($xpath, 'atom:summary/text()', $entry);
- } elseif ($item["object-type"] == Activity::OBJ_QUESTION) {
+ } elseif ($item["object-type"] == Activity\ObjectType::QUESTION) {
$item["title"] = XML::getFirstNodeValue($xpath, 'atom:title/text()', $entry);
}
@$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
- $xpath->registerNamespace('atom', ANamespace::ATOM1);
- $xpath->registerNamespace('thr', ANamespace::THREAD);
- $xpath->registerNamespace('ostatus', ANamespace::OSTATUS);
+ $xpath->registerNamespace('atom', ActivityNamespace::ATOM1);
+ $xpath->registerNamespace('thr', ActivityNamespace::THREAD);
+ $xpath->registerNamespace('ostatus', ActivityNamespace::OSTATUS);
$entries = $xpath->query('/atom:feed/atom:entry');
switch ($attribute['rel']) {
case "alternate":
$item["plink"] = $attribute['href'];
- if (($item["object-type"] == Activity::OBJ_QUESTION)
- || ($item["object-type"] == Activity::OBJ_EVENT)
+ if (($item["object-type"] == Activity\ObjectType::QUESTION)
+ || ($item["object-type"] == Activity\ObjectType::EVENT)
) {
$item["body"] .= add_page_info($attribute['href']);
}
}
break;
case "related":
- if ($item["object-type"] != Activity::OBJ_BOOKMARK) {
+ if ($item["object-type"] != Activity\ObjectType::BOOKMARK) {
if (!isset($item["parent-uri"])) {
$item["parent-uri"] = $attribute['href'];
}
*/
private static function getResharedGuid(array $item)
{
- $body = trim($item["body"]);
-
- // Skip if it isn't a pure repeated messages
- // Does it start with a share?
- if (strpos($body, "[share") > 0) {
- return "";
- }
-
- // Does it end with a share?
- if (strlen($body) > (strrpos($body, "[/share]") + 8)) {
- return "";
- }
-
- $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism", "$1", $body);
- // Skip if there is no shared message in there
- if ($body == $attributes) {
- return false;
- }
-
- $guid = "";
- preg_match("/guid='(.*?)'/ism", $attributes, $matches);
- if (!empty($matches[1])) {
- $guid = $matches[1];
- }
-
- preg_match('/guid="(.*?)"/ism', $attributes, $matches);
- if (!empty($matches[1])) {
- $guid = $matches[1];
+ $reshared = Item::getShareArray($item);
+ if (empty($reshared['guid']) || !empty($reshared['comment'])) {
+ return '';
}
- return $guid;
+ return $reshared['guid'];
}
/**
*/
private static function addHeader(DOMDocument $doc, array $owner, $filter, $feed_mode = false)
{
- $root = $doc->createElementNS(ANamespace::ATOM1, 'feed');
+ $root = $doc->createElementNS(ActivityNamespace::ATOM1, 'feed');
$doc->appendChild($root);
- $root->setAttribute("xmlns:thr", ANamespace::THREAD);
- $root->setAttribute("xmlns:georss", ANamespace::GEORSS);
- $root->setAttribute("xmlns:activity", ANamespace::ACTIVITY);
- $root->setAttribute("xmlns:media", ANamespace::MEDIA);
- $root->setAttribute("xmlns:poco", ANamespace::POCO);
- $root->setAttribute("xmlns:ostatus", ANamespace::OSTATUS);
- $root->setAttribute("xmlns:statusnet", ANamespace::STATUSNET);
- $root->setAttribute("xmlns:mastodon", ANamespace::MASTODON);
+ $root->setAttribute("xmlns:thr", ActivityNamespace::THREAD);
+ $root->setAttribute("xmlns:georss", ActivityNamespace::GEORSS);
+ $root->setAttribute("xmlns:activity", ActivityNamespace::ACTIVITY);
+ $root->setAttribute("xmlns:media", ActivityNamespace::MEDIA);
+ $root->setAttribute("xmlns:poco", ActivityNamespace::POCO);
+ $root->setAttribute("xmlns:ostatus", ActivityNamespace::OSTATUS);
+ $root->setAttribute("xmlns:statusnet", ActivityNamespace::STATUSNET);
+ $root->setAttribute("xmlns:mastodon", ActivityNamespace::MASTODON);
$title = '';
$selfUri = '/feed/' . $owner["nick"] . '/';
switch ($siteinfo["type"]) {
case 'photo':
if (!empty($siteinfo["image"])) {
- $imgdata = Image::getInfoFromURL($siteinfo["image"]);
+ $imgdata = Images::getInfoFromURLCached($siteinfo["image"]);
if ($imgdata) {
$attributes = ["rel" => "enclosure",
"href" => $siteinfo["image"],
}
if (!Config::get('system', 'ostatus_not_attach_preview') && ($siteinfo["type"] != "photo") && isset($siteinfo["image"])) {
- $imgdata = Image::getInfoFromURL($siteinfo["image"]);
+ $imgdata = Images::getInfoFromURLCached($siteinfo["image"]);
if ($imgdata) {
$attributes = ["rel" => "enclosure",
"href" => $siteinfo["image"],
$author = $doc->createElement("author");
XML::addElement($doc, $author, "id", $owner["url"]);
if ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) {
- XML::addElement($doc, $author, "activity:object-type", Activity::OBJ_GROUP);
+ XML::addElement($doc, $author, "activity:object-type", Activity\ObjectType::GROUP);
} else {
- XML::addElement($doc, $author, "activity:object-type", Activity::OBJ_PERSON);
+ XML::addElement($doc, $author, "activity:object-type", Activity\ObjectType::PERSON);
}
XML::addElement($doc, $author, "uri", $owner["url"]);
XML::addElement($doc, $author, "name", $owner["nick"]);
*/
private static function constructObjecttype(array $item)
{
- if (!empty($item['object-type']) && in_array($item['object-type'], [Activity::OBJ_NOTE, Activity::OBJ_COMMENT])) {
+ if (!empty($item['object-type']) && in_array($item['object-type'], [Activity\ObjectType::NOTE, Activity\ObjectType::COMMENT])) {
return $item['object-type'];
}
- return Activity::OBJ_NOTE;
+ return Activity\ObjectType::NOTE;
}
/**
if ($item["verb"] == Activity::LIKE) {
return self::likeEntry($doc, $item, $owner, $toplevel);
- } elseif (in_array($item["verb"], [Activity::FOLLOW, ANamespace::OSTATUS . "/unfollow"])) {
+ } elseif (in_array($item["verb"], [Activity::FOLLOW, Activity::O_UNFOLLOW])) {
return self::followEntry($doc, $item, $owner, $toplevel);
} else {
return self::noteEntry($doc, $item, $owner, $toplevel, $feed_mode);
$as_object = $doc->createElement("activity:object");
- XML::addElement($doc, $as_object, "activity:object-type", ANamespace::ACTIVITY_SCHEMA . "activity");
+ XML::addElement($doc, $as_object, "activity:object-type", ActivityNamespace::ACTIVITY_SCHEMA . "activity");
self::entryContent($doc, $as_object, $repeated_item, $owner, "", "", false);
$entry = self::entryHeader($doc, $owner, $item, $toplevel);
- $verb = Activity\ANamespace::ACTIVITY_SCHEMA . "favorite";
+ $verb = ActivityNamespace::ACTIVITY_SCHEMA . "favorite";
self::entryContent($doc, $entry, $item, $owner, "Favorite", $verb, false);
$parent = Item::selectFirst([], ['uri' => $item["thr-parent"], 'uid' => $item["uid"]]);
private static function addPersonObject(DOMDocument $doc, array $owner, array $contact)
{
$object = $doc->createElement("activity:object");
- XML::addElement($doc, $object, "activity:object-type", Activity::OBJ_PERSON);
+ XML::addElement($doc, $object, "activity:object-type", Activity\ObjectType::PERSON);
if ($contact['network'] == Protocol::PHANTOM) {
XML::addElement($doc, $object, "id", $contact['url']);
$entry = self::entryHeader($doc, $owner, $item, $toplevel);
- XML::addElement($doc, $entry, "activity:object-type", Activity::OBJ_NOTE);
+ XML::addElement($doc, $entry, "activity:object-type", Activity\ObjectType::NOTE);
self::entryContent($doc, $entry, $item, $owner, $title, '', true, $feed_mode);
$entry->appendChild($author);
}
} else {
- $entry = $doc->createElementNS(ANamespace::ATOM1, "entry");
+ $entry = $doc->createElementNS(ActivityNamespace::ATOM1, "entry");
- $entry->setAttribute("xmlns:thr", ANamespace::THREAD);
- $entry->setAttribute("xmlns:georss", ANamespace::GEORSS);
- $entry->setAttribute("xmlns:activity", ANamespace::ACTIVITY);
- $entry->setAttribute("xmlns:media", ANamespace::MEDIA);
- $entry->setAttribute("xmlns:poco", ANamespace::POCO);
- $entry->setAttribute("xmlns:ostatus", ANamespace::OSTATUS);
- $entry->setAttribute("xmlns:statusnet", ANamespace::STATUSNET);
- $entry->setAttribute("xmlns:mastodon", ANamespace::MASTODON);
+ $entry->setAttribute("xmlns:thr", ActivityNamespace::THREAD);
+ $entry->setAttribute("xmlns:georss", ActivityNamespace::GEORSS);
+ $entry->setAttribute("xmlns:activity", ActivityNamespace::ACTIVITY);
+ $entry->setAttribute("xmlns:media", ActivityNamespace::MEDIA);
+ $entry->setAttribute("xmlns:poco", ActivityNamespace::POCO);
+ $entry->setAttribute("xmlns:ostatus", ActivityNamespace::OSTATUS);
+ $entry->setAttribute("xmlns:statusnet", ActivityNamespace::STATUSNET);
+ $entry->setAttribute("xmlns:mastodon", ActivityNamespace::MASTODON);
$author = self::addAuthor($doc, $owner);
$entry->appendChild($author);
XML::addElement($doc, $entry, "link", "",
[
"rel" => "mentioned",
- "ostatus:object-type" => Activity::OBJ_GROUP,
+ "ostatus:object-type" => Activity\ObjectType::GROUP,
"href" => $mention]
);
} else {
XML::addElement($doc, $entry, "link", "",
[
"rel" => "mentioned",
- "ostatus:object-type" => Activity::OBJ_PERSON,
+ "ostatus:object-type" => Activity\ObjectType::PERSON,
"href" => $mention]
);
}
if ($filter === 'comments') {
$condition[0] .= " AND `object-type` = ? ";
- $condition[] = Activity::OBJ_COMMENT;
+ $condition[] = Activity\ObjectType::COMMENT;
}
if ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) {