use DOMDocument;
use DOMXPath;
-use Friendica\App;
use Friendica\App\BaseURL;
+use Friendica\BaseObject;
use Friendica\Content\OEmbed;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System;
-use Friendica\Core\Session;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
use Friendica\Model\Conversation;
use Friendica\Model\User;
use Friendica\Network\Probe;
use Friendica\Object\Image;
+use Friendica\Protocol\Activity\ANamespace;
use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
foreach ($items as $item) {
// These values aren't sent when sending from the queue.
/// @todo Check if we can set these values from the queue or if they are needed at all.
- $item["entry:comment-allow"] = defaults($item, "entry:comment-allow", true);
- $item["entry:cid"] = defaults($item, "entry:cid", 0);
+ $item["entry:comment-allow"] = ($item["entry:comment-allow"] ?? '') ?: true;
+ $item["entry:cid"] = $item["entry:cid"] ?? 0;
$entry = self::entry($doc, "text", $item, $owner, $item["entry:comment-allow"], $item["entry:cid"]);
if (isset($entry)) {
$type = 'html';
if ($conversation) {
- $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed');
+ $root = $doc->createElementNS(ANamespace::ATOM1, 'feed');
$doc->appendChild($root);
- $root->setAttribute("xmlns:thr", NAMESPACE_THREAD);
- $root->setAttribute("xmlns:at", NAMESPACE_TOMB);
- $root->setAttribute("xmlns:media", NAMESPACE_MEDIA);
- $root->setAttribute("xmlns:dfrn", NAMESPACE_DFRN);
- $root->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
- $root->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
- $root->setAttribute("xmlns:poco", NAMESPACE_POCO);
- $root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
- $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
+ $root->setAttribute("xmlns:thr", ANamespace::THREAD);
+ $root->setAttribute("xmlns:at", ANamespace::TOMB);
+ $root->setAttribute("xmlns:media", ANamespace::MEDIA);
+ $root->setAttribute("xmlns:dfrn", ANamespace::DFRN);
+ $root->setAttribute("xmlns:activity", ANamespace::ACTIVITY);
+ $root->setAttribute("xmlns:georss", ANamespace::GEORSS);
+ $root->setAttribute("xmlns:poco", ANamespace::POCO);
+ $root->setAttribute("xmlns:ostatus", ANamespace::OSTATUS);
+ $root->setAttribute("xmlns:statusnet", ANamespace::STATUSNET);
//$root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
$alternatelink = $owner['url'];
}
- $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed');
+ $root = $doc->createElementNS(ANamespace::ATOM1, 'feed');
$doc->appendChild($root);
- $root->setAttribute("xmlns:thr", NAMESPACE_THREAD);
- $root->setAttribute("xmlns:at", NAMESPACE_TOMB);
- $root->setAttribute("xmlns:media", NAMESPACE_MEDIA);
- $root->setAttribute("xmlns:dfrn", NAMESPACE_DFRN);
- $root->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
- $root->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
- $root->setAttribute("xmlns:poco", NAMESPACE_POCO);
- $root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
- $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
+ $root->setAttribute("xmlns:thr", ANamespace::THREAD);
+ $root->setAttribute("xmlns:at", ANamespace::TOMB);
+ $root->setAttribute("xmlns:media", ANamespace::MEDIA);
+ $root->setAttribute("xmlns:dfrn", ANamespace::DFRN);
+ $root->setAttribute("xmlns:activity", ANamespace::ACTIVITY);
+ $root->setAttribute("xmlns:georss", ANamespace::GEORSS);
+ $root->setAttribute("xmlns:poco", ANamespace::POCO);
+ $root->setAttribute("xmlns:ostatus", ANamespace::OSTATUS);
+ $root->setAttribute("xmlns:statusnet", ANamespace::STATUSNET);
XML::addElement($doc, $root, "id", System::baseUrl()."/profile/".$owner["nick"]);
XML::addElement($doc, $root, "title", $owner["name"]);
if (!$single) {
$entry = $doc->createElement("entry");
} else {
- $entry = $doc->createElementNS(NAMESPACE_ATOM1, 'entry');
+ $entry = $doc->createElementNS(ANamespace::ATOM1, 'entry');
$doc->appendChild($entry);
- $entry->setAttribute("xmlns:thr", NAMESPACE_THREAD);
- $entry->setAttribute("xmlns:at", NAMESPACE_TOMB);
- $entry->setAttribute("xmlns:media", NAMESPACE_MEDIA);
- $entry->setAttribute("xmlns:dfrn", NAMESPACE_DFRN);
- $entry->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY);
- $entry->setAttribute("xmlns:georss", NAMESPACE_GEORSS);
- $entry->setAttribute("xmlns:poco", NAMESPACE_POCO);
- $entry->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
- $entry->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
+ $entry->setAttribute("xmlns:thr", ANamespace::THREAD);
+ $entry->setAttribute("xmlns:at", ANamespace::TOMB);
+ $entry->setAttribute("xmlns:media", ANamespace::MEDIA);
+ $entry->setAttribute("xmlns:dfrn", ANamespace::DFRN);
+ $entry->setAttribute("xmlns:activity", ANamespace::ACTIVITY);
+ $entry->setAttribute("xmlns:georss", ANamespace::GEORSS);
+ $entry->setAttribute("xmlns:poco", ANamespace::POCO);
+ $entry->setAttribute("xmlns:ostatus", ANamespace::OSTATUS);
+ $entry->setAttribute("xmlns:statusnet", ANamespace::STATUSNET);
}
if ($item['private']) {
if ($item['object-type'] != "") {
XML::addElement($doc, $entry, "activity:object-type", $item['object-type']);
} elseif ($item['id'] == $item['parent']) {
- XML::addElement($doc, $entry, "activity:object-type", ACTIVITY_OBJ_NOTE);
+ XML::addElement($doc, $entry, "activity:object-type", Activity\ObjectType::NOTE);
} else {
- XML::addElement($doc, $entry, "activity:object-type", ACTIVITY_OBJ_COMMENT);
+ XML::addElement($doc, $entry, "activity:object-type", Activity\ObjectType::COMMENT);
}
$actobj = self::createActivity($doc, "activity:object", $item['object']);
"link",
"",
["rel" => "mentioned",
- "ostatus:object-type" => ACTIVITY_OBJ_GROUP,
+ "ostatus:object-type" => Activity\ObjectType::GROUP,
"href" => $mention]
);
} else {
"link",
"",
["rel" => "mentioned",
- "ostatus:object-type" => ACTIVITY_OBJ_PERSON,
+ "ostatus:object-type" => Activity\ObjectType::PERSON,
"href" => $mention]
);
}
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
$challenge = hex2bin((string) $res->challenge);
$perm = (($res->perm) ? $res->perm : null);
- $dfrn_version = (float) (($res->dfrn_version) ? $res->dfrn_version : 2.0);
+ $dfrn_version = floatval($res->dfrn_version ?: 2.0);
$rino_remote_version = intval($res->rino);
$page = (($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? 1 : 0);
$obj_doc = new DOMDocument("1.0", "utf-8");
$obj_doc->formatOutput = true;
- $obj_element = $obj_doc->createElementNS(NAMESPACE_ATOM1, $element);
+ $obj_element = $obj_doc->createElementNS( ANamespace::ATOM1, $element);
$activity_type = $xpath->query("activity:object-type/text()", $activity)->item(0)->nodeValue;
XML::addElement($obj_doc, $obj_element, "type", $activity_type);
'source_name' => $importer['name'],
'source_link' => $importer['url'],
'source_photo' => $importer['photo'],
- 'verb' => ACTIVITY_REQ_FRIEND,
+ 'verb' => Activity::REQ_FRIEND,
'otype' => 'intro']
);
return false;
}
- $fields = ['title' => defaults($item, 'title', ''), 'body' => defaults($item, 'body', ''),
- 'tag' => defaults($item, 'tag', ''), 'changed' => DateTimeFormat::utcNow(),
+ $fields = ['title' => $item['title'] ?? '', 'body' => $item['body'] ?? '',
+ 'tag' => $item['tag'] ?? '', 'changed' => DateTimeFormat::utcNow(),
'edited' => DateTimeFormat::utc($item["edited"])];
$condition = ["`uri` = ? AND `uid` IN (0, ?)", $item["uri"], $importer["importer_uid"]];
}
$xo = XML::parseString($item["object"], false);
- if (($xo->type == ACTIVITY_OBJ_PERSON) && ($xo->id)) {
+ if (($xo->type == Activity\ObjectType::PERSON) && ($xo->id)) {
// somebody was poked/prodded. Was it me?
$Blink = '';
foreach ($xo->link as $l) {
// The functions below are partly used by ostatus.php as well - where we have this variable
$contact = Contact::selectFirst([], ['id' => $importer['id']]);
+ /** @var Activity $activity */
+ $activity = BaseObject::getClass(Activity::class);
+
// Big question: Do we need these functions? They were part of the "consume_feed" function.
// This function once was responsible for DFRN and OStatus.
- if (activity_match($item["verb"], ACTIVITY_FOLLOW)) {
+ if ($activity->match($item["verb"], Activity::FOLLOW)) {
Logger::log("New follower");
Contact::addRelationship($importer, $contact, $item);
return false;
}
- if (activity_match($item["verb"], ACTIVITY_UNFOLLOW)) {
+ if ($activity->match($item["verb"], Activity::UNFOLLOW)) {
Logger::log("Lost follower");
Contact::removeFollower($importer, $contact, $item);
return false;
}
- if (activity_match($item["verb"], ACTIVITY_REQ_FRIEND)) {
+ if ($activity->match($item["verb"], Activity::REQ_FRIEND)) {
Logger::log("New friend request");
Contact::addRelationship($importer, $contact, $item, true);
return false;
}
- if (activity_match($item["verb"], ACTIVITY_UNFRIEND)) {
+ if ($activity->match($item["verb"], Activity::UNFRIEND)) {
Logger::log("Lost sharer");
Contact::removeSharer($importer, $contact, $item);
return false;
}
} else {
- if (($item["verb"] == ACTIVITY_LIKE)
- || ($item["verb"] == ACTIVITY_DISLIKE)
- || ($item["verb"] == ACTIVITY_ATTEND)
- || ($item["verb"] == ACTIVITY_ATTENDNO)
- || ($item["verb"] == ACTIVITY_ATTENDMAYBE)
+ if (($item["verb"] == Activity::LIKE)
+ || ($item["verb"] == Activity::DISLIKE)
+ || ($item["verb"] == Activity::ATTEND)
+ || ($item["verb"] == Activity::ATTENDNO)
+ || ($item["verb"] == Activity::ATTENDMAYBE)
) {
$is_like = true;
$item["gravity"] = GRAVITY_ACTIVITY;
$is_like = false;
}
- if (($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) {
+ if (($item["verb"] == Activity::TAG) && ($item["object-type"] == Activity\ObjectType::TAGTERM)) {
$xo = XML::parseString($item["object"], false);
$xt = XML::parseString($item["target"], false);
- if ($xt->type == ACTIVITY_OBJ_NOTE) {
+ if ($xt->type == Activity\ObjectType::NOTE) {
$item_tag = Item::selectFirst(['id', 'tag'], ['uri' => $xt->id, 'uid' => $importer["importer_uid"]]);
if (!DBA::isResult($item_tag)) {
// Now assign the rest of the values that depend on the type of the message
if (in_array($entrytype, [DFRN::REPLY, DFRN::REPLY_RC])) {
if (!isset($item["object-type"])) {
- $item["object-type"] = ACTIVITY_OBJ_COMMENT;
+ $item["object-type"] = Activity\ObjectType::COMMENT;
}
if ($item["contact-id"] != $owner["contact-id"]) {
$item["wall"] = 1;
} elseif ($entrytype == DFRN::TOP_LEVEL) {
if (!isset($item["object-type"])) {
- $item["object-type"] = ACTIVITY_OBJ_NOTE;
+ $item["object-type"] = Activity\ObjectType::NOTE;
}
// Is it an event?
- if (($item["object-type"] == ACTIVITY_OBJ_EVENT) && !$owner_unknown) {
+ if (($item["object-type"] == Activity\ObjectType::EVENT) && !$owner_unknown) {
Logger::log("Item ".$item["uri"]." seems to contain an event.", Logger::DEBUG);
$ev = Event::fromBBCode($item["body"]);
if ((!empty($ev['desc']) || !empty($ev['summary'])) && !empty($ev['start'])) {
Item::distribute($posted_id);
}
- if (stristr($item["verb"], ACTIVITY_POKE)) {
+ if (stristr($item["verb"], Activity::POKE)) {
$item['id'] = $posted_id;
self::doPoke($item, $importer);
}
@$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
- $xpath->registerNamespace("atom", NAMESPACE_ATOM1);
- $xpath->registerNamespace("thr", NAMESPACE_THREAD);
- $xpath->registerNamespace("at", NAMESPACE_TOMB);
- $xpath->registerNamespace("media", NAMESPACE_MEDIA);
- $xpath->registerNamespace("dfrn", NAMESPACE_DFRN);
- $xpath->registerNamespace("activity", NAMESPACE_ACTIVITY);
- $xpath->registerNamespace("georss", NAMESPACE_GEORSS);
- $xpath->registerNamespace("poco", NAMESPACE_POCO);
- $xpath->registerNamespace("ostatus", NAMESPACE_OSTATUS);
- $xpath->registerNamespace("statusnet", NAMESPACE_STATUSNET);
+ $xpath->registerNamespace("atom", ANamespace::ATOM1);
+ $xpath->registerNamespace("thr", ANamespace::THREAD);
+ $xpath->registerNamespace("at", ANamespace::TOMB);
+ $xpath->registerNamespace("media", ANamespace::MEDIA);
+ $xpath->registerNamespace("dfrn", ANamespace::DFRN);
+ $xpath->registerNamespace("activity", ANamespace::ACTIVITY);
+ $xpath->registerNamespace("georss", ANamespace::GEORSS);
+ $xpath->registerNamespace("poco", ANamespace::POCO);
+ $xpath->registerNamespace("ostatus", ANamespace::OSTATUS);
+ $xpath->registerNamespace("statusnet", ANamespace::STATUSNET);
$header = [];
$header["uid"] = $importer["importer_uid"];
if ($item['verb']) {
return $item['verb'];
}
- return ACTIVITY_POST;
+ return Activity::POST;
}
private static function tgroupCheck($uid, $item)