]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/OStatus.php
Providing the uri-id to "convert" when possible
[friendica.git] / src / Protocol / OStatus.php
index 72008a1989679200572cdaeb344e309591f90e2c..6318f0940a1c4f0724fe5f36da63c22f05d2b3bc 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -23,7 +23,6 @@ namespace Friendica\Protocol;
 
 use DOMDocument;
 use DOMXPath;
-use Friendica\Content\PageInfo;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
 use Friendica\Core\Cache\Duration;
@@ -673,11 +672,6 @@ class OStatus
 
                $item["body"] .= $add_body;
 
-               // Only add additional data when there is no picture in the post
-               if (!strstr($item["body"], '[/img]')) {
-                       $item["body"] = PageInfo::searchAndAppendToBody($item["body"]);
-               }
-
                Tag::storeFromBody($item['uri-id'], $item['body']);
 
                // Mastodon Content Warning
@@ -735,7 +729,7 @@ class OStatus
 
                $curlResult = DI::httpRequest()->get($conversation, ['accept_content' => 'application/atom+xml, text/html']);
 
-               if (!$curlResult->isSuccess()) {
+               if (!$curlResult->isSuccess() || empty($curlResult->getBody())) {
                        return;
                }
 
@@ -928,7 +922,7 @@ class OStatus
                $stored = false;
                $curlResult = DI::httpRequest()->get($related, ['accept_content' => 'application/atom+xml, text/html']);
 
-               if (!$curlResult->isSuccess()) {
+               if (!$curlResult->isSuccess() || empty($curlResult->getBody())) {
                        return;
                }
 
@@ -1098,7 +1092,9 @@ class OStatus
                                                if (($item["object-type"] == Activity\ObjectType::QUESTION)
                                                        || ($item["object-type"] == Activity\ObjectType::EVENT)
                                                ) {
-                                                       $item["body"] .= "\n" . PageInfo::getFooterFromUrl($attribute['href']);
+                                                       Post\Media::insert(['uri-id' => $item['uri-id'], 'type' => Post\Media::UNKNOWN,
+                                                               'url' => $attribute['href'], 'mimetype' => $attribute['type'] ?? null,
+                                                               'size' => $attribute['length'] ?? null, 'description' => $attribute['title'] ?? null]);
                                                }
                                                break;
                                        case "ostatus:conversation":
@@ -1125,7 +1121,9 @@ class OStatus
                                                        }
                                                        $link_data['related'] = $attribute['href'];
                                                } else {
-                                                       $item["body"] .= "\n" . PageInfo::getFooterFromUrl($attribute['href']);
+                                                       Post\Media::insert(['uri-id' => $item['uri-id'], 'type' => Post\Media::UNKNOWN,
+                                                               'url' => $attribute['href'], 'mimetype' => $attribute['type'] ?? null,
+                                                               'size' => $attribute['length'] ?? null, 'description' => $attribute['title'] ?? null]);
                                                }
                                                break;
                                        case "self":
@@ -1197,7 +1195,7 @@ class OStatus
         * @return string The cleaned body
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function formatPicturePost($body)
+       public static function formatPicturePost($body, $uriid)
        {
                $siteinfo = BBCode::getAttachedData($body);
 
@@ -1209,7 +1207,7 @@ class OStatus
                        }
 
                        // Is it a remote picture? Then make a smaller preview here
-                       $preview = ProxyUtils::proxifyUrl($preview, false, ProxyUtils::SIZE_SMALL);
+                       $preview = Post\Link::getByLink($uriid, $preview, ProxyUtils::SIZE_SMALL);
 
                        // Is it a local picture? Then make it smaller here
                        $preview = str_replace(["-0.jpg", "-0.png"], ["-2.jpg", "-2.png"], $preview);
@@ -1274,7 +1272,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", $owner["photo"]);
+               XML::addElement($doc, $root, "logo", Contact::getAvatarUrlForId($owner['id'], ProxyUtils::SIZE_SMALL, $owner['updated']));
                XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM));
 
                $author = self::addAuthor($doc, $owner, true);
@@ -1429,18 +1427,18 @@ class OStatus
                $attributes = [
                                "rel" => "avatar",
                                "type" => "image/jpeg", // To-Do?
-                               "media:width" => 300,
-                               "media:height" => 300,
-                               "href" => $owner["photo"]];
+                               "media:width" => ProxyUtils::PIXEL_SMALL,
+                               "media:height" => ProxyUtils::PIXEL_SMALL,
+                               "href" => Contact::getAvatarUrlForId($owner['id'], ProxyUtils::SIZE_SMALL, $owner['updated'])];
                XML::addElement($doc, $author, "link", "", $attributes);
 
                if (isset($owner["thumb"])) {
                        $attributes = [
                                        "rel" => "avatar",
                                        "type" => "image/jpeg", // To-Do?
-                                       "media:width" => 80,
-                                       "media:height" => 80,
-                                       "href" => $owner["thumb"]];
+                                       "media:width" => ProxyUtils::PIXEL_THUMB,
+                                       "media:height" => ProxyUtils::PIXEL_THUMB,
+                                       "href" => Contact::getAvatarUrlForId($owner['id'], ProxyUtils::SIZE_THUMB, $owner['updated'])];
                        XML::addElement($doc, $author, "link", "", $attributes);
                }
 
@@ -1805,7 +1803,7 @@ class OStatus
 
                if (!$toplevel) {
                        if (!empty($item['title'])) {
-                               $title = BBCode::convert($item['title'], false, BBCode::OSTATUS);
+                               $title = BBCode::convert($item['title'], false, BBCode::OSTATUS, false, $item['uri-id']);
                        } else {
                                $title = sprintf("New note by %s", $owner["nick"]);
                        }
@@ -1887,13 +1885,14 @@ class OStatus
                XML::addElement($doc, $entry, "id", $item["uri"]);
                XML::addElement($doc, $entry, "title", html_entity_decode($title, ENT_QUOTES, 'UTF-8'));
 
-               $body = self::formatPicturePost($item['body']);
+               $body = Post\Media::addAttachmentsToBody($item['uri-id'], $item['body']);
+               $body = self::formatPicturePost($body, $item['uri-id']);
 
                if (!empty($item['title'])) {
                        $body = "[b]".$item['title']."[/b]\n\n".$body;
                }
 
-               $body = BBCode::convert($body, false, BBCode::OSTATUS);
+               $body = BBCode::convert($body, false, BBCode::OSTATUS, false, $item['uri-id']);
 
                XML::addElement($doc, $entry, "content", $body, ["type" => "html"]);
 
@@ -2124,12 +2123,12 @@ class OStatus
                $params = ['order' => ['received' => true], 'limit' => $max_items];
 
                if ($filter === 'posts') {
-                       $ret = Item::selectThread([], $condition, $params);
+                       $ret = Post::selectThread([], $condition, $params);
                } else {
-                       $ret = Item::select([], $condition, $params);
+                       $ret = Post::select([], $condition, $params);
                }
 
-               $items = Item::toArray($ret);
+               $items = Post::toArray($ret);
 
                $doc = new DOMDocument('1.0', 'utf-8');
                $doc->formatOutput = true;