]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/DFRN.php
Replace BaseObject class with DI::* calls
[friendica.git] / src / Protocol / DFRN.php
index d557af0692fb761db121bb815a59f93bf024aa8b..c20f06956735419f45701063b7f237b89008561a 100644 (file)
@@ -10,7 +10,6 @@ namespace Friendica\Protocol;
 
 use DOMDocument;
 use DOMXPath;
-use Friendica\App;
 use Friendica\App\BaseURL;
 use Friendica\Content\OEmbed;
 use Friendica\Content\Text\BBCode;
@@ -20,8 +19,8 @@ use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
-use Friendica\Core\Session;
 use Friendica\Database\DBA;
+use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
 use Friendica\Model\Event;
@@ -32,9 +31,9 @@ use Friendica\Model\PermissionSet;
 use Friendica\Model\Profile;
 use Friendica\Model\User;
 use Friendica\Network\Probe;
-use Friendica\Object\Image;
 use Friendica\Util\Crypto;
 use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Images;
 use Friendica\Util\Network;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
@@ -381,18 +380,18 @@ class DFRN
                $type = 'html';
 
                if ($conversation) {
-                       $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed');
+                       $root = $doc->createElementNS(ActivityNamespace::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", ActivityNamespace::THREAD);
+                       $root->setAttribute("xmlns:at", ActivityNamespace::TOMB);
+                       $root->setAttribute("xmlns:media", ActivityNamespace::MEDIA);
+                       $root->setAttribute("xmlns:dfrn", ActivityNamespace::DFRN);
+                       $root->setAttribute("xmlns:activity", ActivityNamespace::ACTIVITY);
+                       $root->setAttribute("xmlns:georss", ActivityNamespace::GEORSS);
+                       $root->setAttribute("xmlns:poco", ActivityNamespace::POCO);
+                       $root->setAttribute("xmlns:ostatus", ActivityNamespace::OSTATUS);
+                       $root->setAttribute("xmlns:statusnet", ActivityNamespace::STATUSNET);
 
                        //$root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
 
@@ -504,7 +503,7 @@ class DFRN
                        $uid
                );
                $photos = [];
-               $ext = Image::supportedTypes();
+               $ext = Images::supportedTypes();
 
                foreach ($rp as $p) {
                        $photos[$p['scale']] = System::baseUrl().'/photo/'.$p['resource-id'].'-'.$p['scale'].'.'.$ext[$p['type']];
@@ -556,18 +555,18 @@ class DFRN
                        $alternatelink = $owner['url'];
                }
 
-               $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed');
+               $root = $doc->createElementNS(ActivityNamespace::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", ActivityNamespace::THREAD);
+               $root->setAttribute("xmlns:at", ActivityNamespace::TOMB);
+               $root->setAttribute("xmlns:media", ActivityNamespace::MEDIA);
+               $root->setAttribute("xmlns:dfrn", ActivityNamespace::DFRN);
+               $root->setAttribute("xmlns:activity", ActivityNamespace::ACTIVITY);
+               $root->setAttribute("xmlns:georss", ActivityNamespace::GEORSS);
+               $root->setAttribute("xmlns:poco", ActivityNamespace::POCO);
+               $root->setAttribute("xmlns:ostatus", ActivityNamespace::OSTATUS);
+               $root->setAttribute("xmlns:statusnet", ActivityNamespace::STATUSNET);
 
                XML::addElement($doc, $root, "id", System::baseUrl()."/profile/".$owner["nick"]);
                XML::addElement($doc, $root, "title", $owner["name"]);
@@ -940,18 +939,18 @@ class DFRN
                if (!$single) {
                        $entry = $doc->createElement("entry");
                } else {
-                       $entry = $doc->createElementNS(NAMESPACE_ATOM1, 'entry');
+                       $entry = $doc->createElementNS(ActivityNamespace::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", ActivityNamespace::THREAD);
+                       $entry->setAttribute("xmlns:at", ActivityNamespace::TOMB);
+                       $entry->setAttribute("xmlns:media", ActivityNamespace::MEDIA);
+                       $entry->setAttribute("xmlns:dfrn", ActivityNamespace::DFRN);
+                       $entry->setAttribute("xmlns:activity", ActivityNamespace::ACTIVITY);
+                       $entry->setAttribute("xmlns:georss", ActivityNamespace::GEORSS);
+                       $entry->setAttribute("xmlns:poco", ActivityNamespace::POCO);
+                       $entry->setAttribute("xmlns:ostatus", ActivityNamespace::OSTATUS);
+                       $entry->setAttribute("xmlns:statusnet", ActivityNamespace::STATUSNET);
                }
 
                if ($item['private']) {
@@ -1078,9 +1077,9 @@ class DFRN
                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']);
@@ -1123,7 +1122,7 @@ class DFRN
                                        "link",
                                        "",
                                        ["rel" => "mentioned",
-                                                       "ostatus:object-type" => ACTIVITY_OBJ_GROUP,
+                                                       "ostatus:object-type" => Activity\ObjectType::GROUP,
                                                        "href" => $mention]
                                );
                        } else {
@@ -1133,7 +1132,7 @@ class DFRN
                                        "link",
                                        "",
                                        ["rel" => "mentioned",
-                                                       "ostatus:object-type" => ACTIVITY_OBJ_PERSON,
+                                                       "ostatus:object-type" => Activity\ObjectType::PERSON,
                                                        "href" => $mention]
                                );
                        }
@@ -1749,7 +1748,7 @@ class DFRN
                $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( ActivityNamespace::ATOM1, $element);
 
                $activity_type = $xpath->query("activity:object-type/text()", $activity)->item(0)->nodeValue;
                XML::addElement($obj_doc, $obj_element, "type", $activity_type);
@@ -1906,7 +1905,7 @@ class DFRN
                                'source_name'  => $importer['name'],
                                'source_link'  => $importer['url'],
                                'source_photo' => $importer['photo'],
-                               'verb'         => ACTIVITY_REQ_FRIEND,
+                               'verb'         => Activity::REQ_FRIEND,
                                'otype'        => 'intro']
                );
 
@@ -2116,7 +2115,7 @@ class DFRN
                }
                $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) {
@@ -2180,34 +2179,36 @@ class DFRN
                        // The functions below are partly used by ostatus.php as well - where we have this variable
                        $contact = Contact::selectFirst([], ['id' => $importer['id']]);
 
+                       $activity = DI::activity();
+
                        // 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;
@@ -2234,11 +2235,11 @@ class DFRN
                                $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)) {
@@ -2513,7 +2514,7 @@ class DFRN
                // 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"]) {
@@ -2533,15 +2534,18 @@ class DFRN
                        }
                }
 
+               // Ensure to have the correct share data
+               $item = Item::addShareDataFromOriginal($item);
+
                if ($entrytype == DFRN::REPLY_RC) {
                        $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'])) {
@@ -2638,7 +2642,7 @@ class DFRN
                                Item::distribute($posted_id);
                        }
 
-                       if (stristr($item["verb"], ACTIVITY_POKE)) {
+                       if (stristr($item["verb"], Activity::POKE)) {
                                $item['id'] = $posted_id;
                                self::doPoke($item, $importer);
                        }
@@ -2727,16 +2731,16 @@ class DFRN
                @$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", ActivityNamespace::ATOM1);
+               $xpath->registerNamespace("thr", ActivityNamespace::THREAD);
+               $xpath->registerNamespace("at", ActivityNamespace::TOMB);
+               $xpath->registerNamespace("media", ActivityNamespace::MEDIA);
+               $xpath->registerNamespace("dfrn", ActivityNamespace::DFRN);
+               $xpath->registerNamespace("activity", ActivityNamespace::ACTIVITY);
+               $xpath->registerNamespace("georss", ActivityNamespace::GEORSS);
+               $xpath->registerNamespace("poco", ActivityNamespace::POCO);
+               $xpath->registerNamespace("ostatus", ActivityNamespace::OSTATUS);
+               $xpath->registerNamespace("statusnet", ActivityNamespace::STATUSNET);
 
                $header = [];
                $header["uid"] = $importer["importer_uid"];
@@ -2861,7 +2865,7 @@ class DFRN
                if ($item['verb']) {
                        return $item['verb'];
                }
-               return ACTIVITY_POST;
+               return Activity::POST;
        }
 
        private static function tgroupCheck($uid, $item)