]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/OStatus.php
Move FSuggest to depository
[friendica.git] / src / Protocol / OStatus.php
index 82dc17679e29c0cc2fad2e61b83f5c9a56f0992b..7e17ab9f98e5179c5b23d0a9e40cd4462a2a2f1d 100644 (file)
@@ -42,7 +42,7 @@ use Friendica\Network\HTTPClientOptions;
 use Friendica\Network\Probe;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Images;
-use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Util\Proxy;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
 
@@ -209,7 +209,7 @@ class OStatus
 
                        $contact['name-date'] = DateTimeFormat::utcNow();
 
-                       DBA::update('contact', $contact, ['id' => $contact["id"]], $current);
+                       Contact::update($contact, ['id' => $contact["id"]], $current);
 
                        if (!empty($author["author-avatar"]) && ($author["author-avatar"] != $current['avatar'])) {
                                Logger::log("Update profile picture for contact ".$contact["id"], Logger::DEBUG);
@@ -230,7 +230,7 @@ class OStatus
                                                'about' => $contact["about"], 'location' => $contact["location"],
                                                'success_update' => DateTimeFormat::utcNow(), 'last-update' => DateTimeFormat::utcNow()];
 
-                               DBA::update('contact', $fields, ['id' => $cid], $old_contact);
+                               Contact::update($fields, ['id' => $cid], $old_contact);
 
                                // Update the avatar
                                if (!empty($author["author-avatar"])) {
@@ -1173,23 +1173,6 @@ class OStatus
                }
        }
 
-       /**
-        * Checks if the current post is a reshare
-        *
-        * @param array $item The item array of thw post
-        *
-        * @return string The guid if the post is a reshare
-        */
-       public static function getResharedGuid(array $item)
-       {
-               $reshared = Item::getShareArray($item);
-               if (empty($reshared['guid']) || !empty($reshared['comment'])) {
-                       return '';
-               }
-
-               return $reshared['guid'];
-       }
-
        /**
         * Cleans the body of a post if it contains picture links
         *
@@ -1210,7 +1193,7 @@ class OStatus
                        }
 
                        // Is it a remote picture? Then make a smaller preview here
-                       $preview = Post\Link::getByLink($uriid, $preview, ProxyUtils::SIZE_SMALL);
+                       $preview = Post\Link::getByLink($uriid, $preview, Proxy::SIZE_SMALL);
 
                        // Is it a local picture? Then make it smaller here
                        $preview = str_replace(["-0.jpg", "-0.png"], ["-2.jpg", "-2.png"], $preview);
@@ -1275,7 +1258,7 @@ class OStatus
                XML::addElement($doc, $root, "id", DI::baseUrl() . "/profile/" . $owner["nick"]);
                XML::addElement($doc, $root, "title", $title);
                XML::addElement($doc, $root, "subtitle", sprintf("Updates from %s on %s", $owner["name"], DI::config()->get('config', 'sitename')));
-               XML::addElement($doc, $root, "logo", User::getAvatarUrlForId($owner['uid'], ProxyUtils::SIZE_SMALL));
+               XML::addElement($doc, $root, "logo", User::getAvatarUrl($owner, Proxy::SIZE_SMALL));
                XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM));
 
                $author = self::addAuthor($doc, $owner, true);
@@ -1430,18 +1413,18 @@ class OStatus
                $attributes = [
                                "rel" => "avatar",
                                "type" => "image/jpeg", // To-Do?
-                               "media:width" => ProxyUtils::PIXEL_SMALL,
-                               "media:height" => ProxyUtils::PIXEL_SMALL,
-                               "href" => User::getAvatarUrlForId($owner['uid'], ProxyUtils::SIZE_SMALL)];
+                               "media:width" => Proxy::PIXEL_SMALL,
+                               "media:height" => Proxy::PIXEL_SMALL,
+                               "href" => User::getAvatarUrl($owner, Proxy::SIZE_SMALL)];
                XML::addElement($doc, $author, "link", "", $attributes);
 
                if (isset($owner["thumb"])) {
                        $attributes = [
                                        "rel" => "avatar",
                                        "type" => "image/jpeg", // To-Do?
-                                       "media:width" => ProxyUtils::PIXEL_THUMB,
-                                       "media:height" => ProxyUtils::PIXEL_THUMB,
-                                       "href" => User::getAvatarUrlForId($owner['uid'], ProxyUtils::SIZE_THUMB)];
+                                       "media:width" => Proxy::PIXEL_THUMB,
+                                       "media:height" => Proxy::PIXEL_THUMB,
+                                       "href" => User::getAvatarUrl($owner, Proxy::SIZE_THUMB)];
                        XML::addElement($doc, $author, "link", "", $attributes);
                }
 
@@ -1529,17 +1512,6 @@ class OStatus
         */
        private static function entry(DOMDocument $doc, array $item, array $owner, $toplevel = false)
        {
-               $xml = null;
-
-               $repeated_guid = self::getResharedGuid($item);
-               if ($repeated_guid != "") {
-                       $xml = self::reshareEntry($doc, $item, $owner, $repeated_guid, $toplevel);
-               }
-
-               if ($xml) {
-                       return $xml;
-               }
-
                if ($item["verb"] == Activity::LIKE) {
                        return self::likeEntry($doc, $item, $owner, $toplevel);
                } elseif (in_array($item["verb"], [Activity::FOLLOW, Activity::O_UNFOLLOW])) {
@@ -1549,94 +1521,6 @@ class OStatus
                }
        }
 
-       /**
-        * Adds a source entry to the XML document
-        *
-        * @param DOMDocument $doc     XML document
-        * @param array       $contact Array of the contact that is added
-        *
-        * @return \DOMElement Source element
-        * @throws \Exception
-        */
-       private static function sourceEntry(DOMDocument $doc, array $contact)
-       {
-               $source = $doc->createElement("source");
-               XML::addElement($doc, $source, "id", $contact["poll"]);
-               XML::addElement($doc, $source, "title", $contact["name"]);
-               XML::addElement($doc, $source, "link", "", ["rel" => "alternate", "type" => "text/html", "href" => $contact["alias"]]);
-               XML::addElement($doc, $source, "link", "", ["rel" => "self", "type" => "application/atom+xml", "href" => $contact["poll"]]);
-               XML::addElement($doc, $source, "icon", $contact["photo"]);
-               XML::addElement($doc, $source, "updated", DateTimeFormat::utc($contact["success_update"]."+00:00", DateTimeFormat::ATOM));
-
-               return $source;
-       }
-
-       /**
-        * Adds an entry element with reshared content
-        *
-        * @param DOMDocument $doc           XML document
-        * @param array       $item          Data of the item that is to be posted
-        * @param array       $owner         Contact data of the poster
-        * @param string      $repeated_guid guid
-        * @param bool        $toplevel      Is it for en entry element (false) or a feed entry (true)?
-        *
-        * @return bool Entry element
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
-        * @throws \ImagickException
-        */
-       private static function reshareEntry(DOMDocument $doc, array $item, array $owner, $repeated_guid, $toplevel)
-       {
-               if (($item['gravity'] != GRAVITY_PARENT) && (Strings::normaliseLink($item["author-link"]) != Strings::normaliseLink($owner["url"]))) {
-                       Logger::log("OStatus entry is from author ".$owner["url"]." - not from ".$item["author-link"].". Quitting.", Logger::DEBUG);
-               }
-
-               $entry = self::entryHeader($doc, $owner, $item, $toplevel);
-
-               $condition = ['uid' => $owner["uid"], 'guid' => $repeated_guid, 'private' => [Item::PUBLIC, Item::UNLISTED],
-                       'network' => [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]];
-               $repeated_item = Post::selectFirst([], $condition);
-               if (!DBA::isResult($repeated_item)) {
-                       return false;
-               }
-
-               $contact = Contact::getByURL($repeated_item['author-link']) ?: $owner;
-
-               $title = $owner["nick"]." repeated a notice by ".$contact["nick"];
-
-               self::entryContent($doc, $entry, $item, $owner, $title, Activity::SHARE, false);
-
-               $as_object = $doc->createElement("activity:object");
-
-               XML::addElement($doc, $as_object, "activity:object-type", ActivityNamespace::ACTIVITY_SCHEMA . "activity");
-
-               self::entryContent($doc, $as_object, $repeated_item, $owner, "", "", false);
-
-               $author = self::addAuthor($doc, $contact, false);
-               $as_object->appendChild($author);
-
-               $as_object2 = $doc->createElement("activity:object");
-
-               XML::addElement($doc, $as_object2, "activity:object-type", self::constructObjecttype($repeated_item));
-
-               $title = sprintf("New comment by %s", $contact["nick"]);
-
-               self::entryContent($doc, $as_object2, $repeated_item, $owner, $title);
-
-               $as_object->appendChild($as_object2);
-
-               self::entryFooter($doc, $as_object, $item, $owner, false);
-
-               $source = self::sourceEntry($doc, $contact);
-
-               $as_object->appendChild($source);
-
-               $entry->appendChild($as_object);
-
-               self::entryFooter($doc, $entry, $item, $owner, true);
-
-               return $entry;
-       }
-
        /**
         * Adds an entry element with a "like"
         *
@@ -1931,27 +1815,31 @@ class OStatus
                if ($item['gravity'] != GRAVITY_PARENT) {
                        $parent = Post::selectFirst(['guid', 'author-link', 'owner-link'], ['id' => $item['parent']]);
 
-                       $thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner["uid"], 'uri' => $item['thr-parent']]);
+                       $thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner['uid'], 'uri' => $item['thr-parent']]);
 
                        if (DBA::isResult($thrparent)) {
-                               $mentioned[$thrparent["author-link"]] = $thrparent["author-link"];
-                               $mentioned[$thrparent["owner-link"]] = $thrparent["owner-link"];
-                               $parent_plink = $thrparent["plink"];
+                               $mentioned[$thrparent['author-link']] = $thrparent['author-link'];
+                               $mentioned[$thrparent['owner-link']]  = $thrparent['owner-link'];
+                               $parent_plink                         = $thrparent['plink'];
+                       } elseif (DBA::isResult($parent)) {
+                               $mentioned[$parent['author-link']] = $parent['author-link'];
+                               $mentioned[$parent['owner-link']]  = $parent['owner-link'];
+                               $parent_plink                      = DI::baseUrl() . '/display/' . $parent['guid'];
                        } else {
-                               $mentioned[$parent["author-link"]] = $parent["author-link"];
-                               $mentioned[$parent["owner-link"]] = $parent["owner-link"];
-                               $parent_plink = DI::baseUrl()."/display/".$parent["guid"];
+                               DI::logger()->notice('Missing parent and thr-parent for child item', ['item' => $item]);
                        }
 
-                       $attributes = [
-                                       "ref" => $item['thr-parent'],
-                                       "href" => $parent_plink];
-                       XML::addElement($doc, $entry, "thr:in-reply-to", "", $attributes);
+                       if (isset($parent_plink)) {
+                               $attributes = [
+                                       'ref'  => $item['thr-parent'],
+                                       'href' => $parent_plink];
+                               XML::addElement($doc, $entry, 'thr:in-reply-to', '', $attributes);
 
-                       $attributes = [
-                                       "rel" => "related",
-                                       "href" => $parent_plink];
-                       XML::addElement($doc, $entry, "link", "", $attributes);
+                               $attributes = [
+                                       'rel'  => 'related',
+                                       'href' => $parent_plink];
+                               XML::addElement($doc, $entry, 'link', '', $attributes);
+                       }
                }
 
                if (intval($item['parent']) > 0) {