]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Transmitter.php
AP: Remove the link description from the "rich html" and adds it to the attachment
[friendica.git] / src / Protocol / ActivityPub / Transmitter.php
index 545ac22c699b0a668cfe486c7d17f617dd01d123..c2a331e01afd886ce12b588865d02df8aa07f6f4 100644 (file)
@@ -1020,6 +1020,34 @@ class Transmitter
        {
                $attachments = [];
 
+               $attach_data = BBCode::getAttachmentData($item['body']);
+               if (!empty($attach_data['url'])) {
+                       $attachment = ['type' => 'Page',
+                               'mediaType' => 'text/html',
+                               'url' => $attach_data['url']];
+
+                       if (!empty($attach_data['title'])) {
+                               $attachment['name'] = $attach_data['title'];
+                       }
+
+                       if (!empty($attach_data['description'])) {
+                               $attachment['summary'] = $attach_data['description'];
+                       }
+
+                       if (!empty($attach_data['image'])) {
+                               $imgdata = Images::getInfoFromURLCached($attach_data['image']);
+                               if ($imgdata) {
+                                       $attachment['icon'] = ['type' => 'Image',
+                                               'mediaType' => $imgdata['mime'],
+                                               'width' => $imgdata[0],
+                                               'height' => $imgdata[1],
+                                               'url' => $attach_data['image']];
+                               }
+                       }
+
+                       $attachments[] = $attachment;
+               }
+
                $arr = explode('[/attach],', $item['attach']);
                if (count($arr)) {
                        foreach ($arr as $r) {
@@ -1266,12 +1294,12 @@ class Transmitter
                } else {
                        $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
                        $body = preg_replace_callback($regexp, ['self', 'mentionCallback'], $body);
-
                        $data['content'] = BBCode::convert($body, false, 9);
                }
 
                $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
                $richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']);
+               $richbody = BBCode::removeAttachment($richbody);
 
                $data['contentMap']['text/html'] = BBCode::convert($richbody, false);
                $data['contentMap']['text/markdown'] = BBCode::toMarkdown($item["body"]);