AP: Remove the link description from the "rich html" and adds it to the attachment

This commit is contained in:
Michael 2019-11-17 18:10:12 +00:00
parent 19bbae21de
commit 28ca0d6fab
2 changed files with 51 additions and 1 deletions

View File

@ -385,6 +385,28 @@ class BBCode extends BaseObject
return $post; return $post;
} }
/**
* Remove [attachment] BBCode and replaces it with a regular [url]
*
* @param string $body
*
* @return string with replaced body
*/
public static function removeAttachment($body)
{
return preg_replace_callback("/\[attachment (.*)\](.*?)\[\/attachment\]/ism",
function ($match) {
$attach_data = self::getAttachmentData($match[0]);
if (empty($attach_data['url'])) {
return $match[0];
} elseif (empty($attach_data['title'])) {
return '[url]' . $attach_data['url'] . '[/url]';
} else {
return '[url=' . $attach_data['url'] . ']' . $attach_data['title'] . '[/url]';
}
}, $body);
}
/** /**
* @brief Converts a BBCode text into plaintext * @brief Converts a BBCode text into plaintext
* *

View File

@ -1020,6 +1020,34 @@ class Transmitter
{ {
$attachments = []; $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']); $arr = explode('[/attach],', $item['attach']);
if (count($arr)) { if (count($arr)) {
foreach ($arr as $r) { foreach ($arr as $r) {
@ -1266,12 +1294,12 @@ class Transmitter
} else { } else {
$regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism"; $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
$body = preg_replace_callback($regexp, ['self', 'mentionCallback'], $body); $body = preg_replace_callback($regexp, ['self', 'mentionCallback'], $body);
$data['content'] = BBCode::convert($body, false, 9); $data['content'] = BBCode::convert($body, false, 9);
} }
$regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism"; $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
$richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']); $richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']);
$richbody = BBCode::removeAttachment($richbody);
$data['contentMap']['text/html'] = BBCode::convert($richbody, false); $data['contentMap']['text/html'] = BBCode::convert($richbody, false);
$data['contentMap']['text/markdown'] = BBCode::toMarkdown($item["body"]); $data['contentMap']['text/markdown'] = BBCode::toMarkdown($item["body"]);