return $s;
}
- $as = '';
- $vhead = false;
+ $s = self::addMediaAttachments($item, $s);
+
+ // Map.
+ if (strpos($s, '<div class="map">') !== false && !empty($item['coord'])) {
+ $x = Map::byCoordinates(trim($item['coord']));
+ if ($x) {
+ $s = preg_replace('/\<div class\=\"map\"\>/', '$0' . $x, $s);
+ }
+ }
+
+ // Replace friendica image url size with theme preference.
+ if (!empty($a->theme_info['item_image_size'])) {
+ $ps = $a->theme_info['item_image_size'];
+ $s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
+ }
+
+ $s = HTML::applyContentFilter($s, $filter_reasons);
+
+ $hook_data = ['item' => $item, 'html' => $s];
+ Hook::callAll('prepare_body_final', $hook_data);
+
+ return $hook_data['html'];
+ }
+
+ /**
+ * Add media attachments to the content
+ *
+ * @param array $item
+ * @param string $content
+ * @return modified content
+ */
+ private static function addMediaAttachments(array $item, string $content)
+ {
+ $attached = '';
foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::DOCUMENT, Post\Media::TORRENT, Post\Media::UNKNOWN]) as $attachment) {
$mime = $attachment['mimetype'];
'network' => $item['author-network'], 'url' => $item['author-link']];
$the_url = Contact::magicLinkByContact($author, $attachment['url']);
- if (strpos($mime, 'video') !== false) {
- if (!$vhead) {
- $vhead = true;
- DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('videos_head.tpl'));
- }
-
- $as .= Renderer::replaceMacros(Renderer::getMarkupTemplate('video_top.tpl'), [
- '$video' => [
- 'id' => $item['author-id'],
- 'title' => DI::l10n()->t('View Video'),
- 'src' => $the_url,
- 'mime' => $mime,
- ],
- ]);
- }
-
$filetype = strtolower(substr($mime, 0, strpos($mime, '/')));
if ($filetype) {
$filesubtype = strtolower(substr($mime, strpos($mime, '/') + 1));
$filesubtype = 'unkn';
}
- $title = Strings::escapeHtml(trim(($attachment['description'] ?? '') ?: $attachment['url']));
- $title .= ' ' . ($attachment['size'] ?? 0) . ' ' . DI::l10n()->t('bytes');
-
- $icon = '<div class="attachtype icon s22 type-' . $filetype . ' subtype-' . $filesubtype . '"></div>';
- $as .= '<a href="' . strip_tags($the_url) . '" title="' . $title . '" class="attachlink" target="_blank" rel="noopener noreferrer" >' . $icon . '</a>';
- }
+ if (($filetype == 'video')) {
+ $attached .= Renderer::replaceMacros(Renderer::getMarkupTemplate('video_top.tpl'), [
+ '$video' => [
+ 'id' => $item['author-id'],
+ 'src' => $the_url,
+ 'mime' => $mime,
+ ],
+ ]);
+ } elseif ($filetype == 'audio') {
+ $attached .= Renderer::replaceMacros(Renderer::getMarkupTemplate('audio.tpl'), [
+ '$audio' => [
+ 'id' => $item['author-id'],
+ 'src' => $the_url,
+ 'mime' => $mime,
+ ],
+ ]);
+ } else {
+ $title = Strings::escapeHtml(trim(($attachment['description'] ?? '') ?: $attachment['url']));
- if ($as != '') {
- $s .= '<div class="body-attach">'.$as.'<div class="clear"></div></div>';
- }
+ if (!empty($attachment['size'])) {
+ $title .= ' ' . $attachment['size'] . ' ' . DI::l10n()->t('bytes');
+ }
- // Map.
- if (strpos($s, '<div class="map">') !== false && !empty($item['coord'])) {
- $x = Map::byCoordinates(trim($item['coord']));
- if ($x) {
- $s = preg_replace('/\<div class\=\"map\"\>/', '$0' . $x, $s);
+ /// @todo Use a template
+ $icon = '<div class="attachtype icon s22 type-' . $filetype . ' subtype-' . $filesubtype . '"></div>';
+ $attached .= '<a href="' . strip_tags($the_url) . '" title="' . $title . '" class="attachlink" target="_blank" rel="noopener noreferrer" >' . $icon . '</a>';
}
}
- // Replace friendica image url size with theme preference.
- if (!empty($a->theme_info['item_image_size'])) {
- $ps = $a->theme_info['item_image_size'];
- $s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
+ if ($attached != '') {
+ $content .= '<div class="body-attach">' . $attached . '<div class="clear"></div></div>';
}
- $s = HTML::applyContentFilter($s, $filter_reasons);
-
- $hook_data = ['item' => $item, 'html' => $s];
- Hook::callAll('prepare_body_final', $hook_data);
-
- return $hook_data['html'];
+ return $content;
}
/**