]> git.mxchange.org Git - friendica.git/commitdiff
Adding media attachments to Diaspora posts if they are only attached and not embedded...
authorMichael <heluecht@pirati.ca>
Mon, 26 Apr 2021 10:49:57 +0000 (10:49 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 26 Apr 2021 10:49:57 +0000 (10:49 +0000)
mod/item.php
src/Protocol/Diaspora.php

index 19d0c1172b9193768c2d8a9fbd70f64b1bd3b8d4..04e7c7c39c21240ba09915f94cfaebfb5ac3dd88 100644 (file)
@@ -45,6 +45,7 @@ use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
 use Friendica\Model\FileTag;
 use Friendica\Model\Item;
+use Friendica\Model\ItemURI;
 use Friendica\Model\Notification;
 use Friendica\Model\Photo;
 use Friendica\Model\Post;
@@ -613,6 +614,8 @@ function item_post(App $a) {
        $datarray['origin']        = $origin;
        $datarray['object']        = $object;
 
+       $datarray["uri-id"]        = ItemURI::getIdByURI($datarray["uri"]);
+
        /*
         * These fields are for the convenience of addons...
         * 'self' if true indicates the owner is posting on their own wall
index 2a4dfe75e7e516a1aaee9a88106a33af26ea9ea3..e973fcb85f683ccbe08c6664dcffbb64f8453de4 100644 (file)
@@ -2485,7 +2485,6 @@ class Diaspora
 
                Tag::storeFromBody($datarray['uri-id'], $datarray["body"]);
 
-               //Post\Media::copy($original_item['uri-id'], $datarray['uri-id']);
                $datarray["app"]  = $original_item["app"];
 
                $datarray["plink"] = self::plink($author, $guid);
@@ -3369,6 +3368,36 @@ class Diaspora
                return $eventdata;
        }
 
+       /**
+        * Add media attachments to the body
+        *
+        * @param array $item
+        * @return string body
+        */
+       private static function addAttachments(array $item)
+       {
+               $body = $item['body'];
+
+               foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::IMAGE, Post\Media::AUDIO, Post\Media::VIDEO]) as $media) {
+                       if (Item::containsLink($item['body'], $media['url'])) {
+                               continue;
+                       }
+
+                       if ($media['type'] == Post\Media::IMAGE) {
+                               if (!empty($media['description'])) {
+                                       $body .= "\n[img=" . $media['url'] . ']' . $media['description'] .'[/img]';
+                               } else {
+                                       $body .= "\n[img]" . $media['url'] .'[/img]';
+                               }
+                       } elseif ($media['type'] == Post\Media::AUDIO) {
+                               $body .= "\n[audio]" . $media['url'] . "[/audio]\n";
+                       } elseif ($media['type'] == Post\Media::VIDEO) {
+                               $body .= "\n[video]" . $media['url'] . "[/video]\n";
+                       }
+               }
+               return $body;
+       }
+
        /**
         * Create a post (status message or reshare)
         *
@@ -3409,7 +3438,7 @@ class Diaspora
                        $type = "reshare";
                } else {
                        $title = $item["title"];
-                       $body = $item["body"];
+                       $body = self::addAttachments($item);
 
                        // Fetch the title from an attached link - if there is one
                        if (empty($item["title"]) && DI::pConfig()->get($owner['uid'], 'system', 'attach_link_title')) {
@@ -3623,7 +3652,7 @@ class Diaspora
                        $thread_parent_item = Post::selectFirst(['guid', 'author-id', 'author-link', 'gravity'], ['uri' => $item['thr-parent'], 'uid' => $item['uid']]);
                }
 
-               $body = $item["body"];
+               $body = self::addAttachments($item);
 
                // The replied to autor mention is prepended for clarity if:
                // - Item replied isn't yours