AP: Remove the link description from the "rich html" and adds it to the attachment
This commit is contained in:
parent
19bbae21de
commit
28ca0d6fab
2 changed files with 51 additions and 1 deletions
|
@ -385,6 +385,28 @@ class BBCode extends BaseObject
|
|||
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
|
||||
*
|
||||
|
|
|
@ -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"]);
|
||||
|
|
Loading…
Reference in a new issue