* @return array
* @throws \Exception
*/
- public static function ItemArrayFromMail($mail_id)
+ public static function ItemArrayFromMail($mail_id, $use_title = false)
{
$mail = DBA::selectFirst('mail', [], ['id' => $mail_id]);
if (!DBA::isResult($mail)) {
return [];
}
- $mail['uri-id'] = ItemURI::insert(['uri' => $mail['uri'], 'guid' => $mail['guid']]);
-
- $reply = DBA::selectFirst('mail', ['uri'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
+ $reply = DBA::selectFirst('mail', ['uri', 'uri-id', 'from-url'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
// Making the post more compatible for Mastodon by:
// - Making it a note and not an article (no title)
// - Moving the title into the "summary" field that is used as a "content warning"
- $mail['body'] = '[abstract]' . $mail['title'] . "[/abstract]\n" . $mail['body'];
- $mail['title'] = '';
-
- $mail['author-link'] = $mail['owner-link'] = $mail['from-url'];
- $mail['allow_cid'] = '<'.$mail['contact-id'].'>';
- $mail['allow_gid'] = '';
- $mail['deny_cid'] = '';
- $mail['deny_gid'] = '';
- $mail['private'] = true;
- $mail['deleted'] = false;
- $mail['edited'] = $mail['created'];
- $mail['plink'] = $mail['uri'];
- $mail['thr-parent'] = $reply['uri'];
- $mail['gravity'] = ($mail['reply'] ? GRAVITY_COMMENT: GRAVITY_PARENT);
-
- $mail['event-type'] = '';
- $mail['parent'] = 0;
+ if (!$use_title) {
+ $mail['body'] = '[abstract]' . $mail['title'] . "[/abstract]\n" . $mail['body'];
+ $mail['title'] = '';
+ }
+
+ $mail['author-link'] = $mail['owner-link'] = $mail['from-url'];
+ $mail['owner-id'] = $mail['author-id'];
+ $mail['allow_cid'] = '<'.$mail['contact-id'].'>';
+ $mail['allow_gid'] = '';
+ $mail['deny_cid'] = '';
+ $mail['deny_gid'] = '';
+ $mail['private'] = Item::PRIVATE;
+ $mail['deleted'] = false;
+ $mail['edited'] = $mail['created'];
+ $mail['plink'] = DI::baseUrl() . '/message/' . $mail['id'];
+ $mail['parent-uri'] = $reply['uri'];
+ $mail['parent-uri-id'] = $reply['uri-id'];
+ $mail['parent-author-id'] = Contact::getIdForURL($reply['from-url'], 0, false);
+ $mail['gravity'] = ($mail['reply'] ? GRAVITY_COMMENT: GRAVITY_PARENT);
+ $mail['event-type'] = '';
+ $mail['language'] = '';
+ $mail['parent'] = 0;
return $mail;
}
{
$attachments = [];
- // Currently deactivated, since it creates side effects on Mastodon and Pleroma.
- // It will be reactivated, once this cleared.
- /*
- $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'];
+ $uriids = [$item['uri-id']];
+ $shared = BBCode::fetchShareAttributes($item['body']);
+ if (!empty($shared['guid'])) {
+ $shared_item = Post::selectFirst(['uri-id'], ['guid' => $shared['guid']]);
+ if (!empty($shared_item['uri-id'])) {
+ $uriids[] = $shared_item['uri-id'];
}
+ }
- 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']];
+ $urls = [];
+ foreach ($uriids as $uriid) {
+ foreach (Post\Media::getByURIId($uriid, [Post\Media::DOCUMENT, Post\Media::TORRENT]) as $attachment) {
+ if (in_array($attachment['url'], $urls)) {
+ continue;
}
- }
+ $urls[] = $attachment['url'];
- $attachments[] = $attachment;
- }
- */
- foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::DOCUMENT, Post\Media::TORRENT, Post\Media::UNKNOWN]) as $attachment) {
- $attachments[] = ['type' => 'Document',
- 'mediaType' => $attachment['mimetype'],
- 'url' => $attachment['url'],
- 'name' => $attachment['description']];
+ $attachments[] = ['type' => 'Document',
+ 'mediaType' => $attachment['mimetype'],
+ 'url' => $attachment['url'],
+ 'name' => $attachment['description']];
+ }
}
if ($type != 'Note') {
return $attachments;
}
- foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO]) as $attachment) {
- $attachments[] = ['type' => 'Document',
- 'mediaType' => $attachment['mimetype'],
- 'url' => $attachment['url'],
- 'name' => $attachment['description']];
+ foreach ($uriids as $uriid) {
+ foreach (Post\Media::getByURIId($uriid, [Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO]) as $attachment) {
+ if (in_array($attachment['url'], $urls)) {
+ continue;
+ }
+ $urls[] = $attachment['url'];
+
+ $attachments[] = ['type' => 'Document',
+ 'mediaType' => $attachment['mimetype'],
+ 'url' => $attachment['url'],
+ 'name' => $attachment['description']];
+ }
+ // Currently deactivated, since it creates side effects on Mastodon and Pleroma.
+ // It will be activated, once this cleared.
+ /*
+ foreach (Post\Media::getByURIId($uriid, [Post\Media::HTML]) as $attachment) {
+ if (in_array($attachment['url'], $urls)) {
+ continue;
+ }
+ $urls[] = $attachment['url'];
+
+ $attachments[] = ['type' => 'Page',
+ 'mediaType' => $attachment['mimetype'],
+ 'url' => $attachment['url'],
+ 'name' => $attachment['description']];
+ }*/
}
return $attachments;
$richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']);
$richbody = BBCode::removeAttachment($richbody);
- $data['contentMap'][$language] = BBCode::convert($richbody, false);
+ $data['contentMap'][$language] = BBCode::convert($richbody, false, BBCode::EXTERNAL);
}
$data['source'] = ['content' => $item['body'], 'mediaType' => "text/bbcode"];