X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FFeed.php;h=048e9974ce4f10bf2969951dc361185a14be4d31;hb=314bf92eadca7edef72cdc94669c5f961a802666;hp=cdecbcf1b07436db6cbe49a59b4862abc75c9b25;hpb=d20aa5f5576949ff858fee5914104ce83c432886;p=friendica.git diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index cdecbcf1b0..048e9974ce 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1,6 +1,6 @@ Post\Media::DOCUMENT, 'url' => $href, 'mimetype' => $type, 'size' => $length]; + $attachment = ['type' => Post\Media::UNKNOWN, 'url' => $href, 'mimetype' => $type, 'size' => $length]; + + $attachment = Post\Media::fetchAdditionalData($attachment); + + // By now we separate the visible media types (audio, video, image) from the rest + // In the future we should try to avoid the DOCUMENT type and only use the real one - but not in the RC phase. + if (!in_array($attachment['type'], [Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO])) { + $attachment['type'] = Post\Media::DOCUMENT; + } + $attachments[] = $attachment; } } @@ -525,6 +534,29 @@ class Feed $taglist = $contact["fetch_further_information"] == 2 ? PageInfo::getTagsFromUrl($item["plink"], $preview, $contact["ffi_keyword_denylist"] ?? '') : []; $item["object-type"] = Activity\ObjectType::BOOKMARK; $attachments = []; + + foreach (['audio', 'video'] as $elementname) { + if (!empty($data[$elementname])) { + foreach ($data[$elementname] as $element) { + if (!empty($element['src'])) { + $src = $element['src']; + } elseif (!empty($element['content'])) { + $src = $element['content']; + } else { + continue; + } + + $attachments[] = [ + 'type' => ($elementname == 'audio') ? Post\Media::AUDIO : Post\Media::VIDEO, + 'url' => $src, + 'preview' => $element['image'] ?? null, + 'mimetype' => $element['contenttype'] ?? null, + 'name' => $element['name'] ?? null, + 'description' => $element['description'] ?? null, + ]; + } + } + } } } else { if (!empty($summary)) { @@ -541,7 +573,7 @@ class Feed } // Add the link to the original feed entry if not present in feed - if (($item['plink'] != '') && !strstr($item["body"], $item['plink'])) { + if (($item['plink'] != '') && !strstr($item["body"], $item['plink']) && !in_array($item['plink'], array_column($attachments, 'url'))) { $item["body"] .= "[hr][url]" . $item['plink'] . "[/url]"; } } @@ -866,6 +898,11 @@ class Feed $cachekey = "feed:feed:" . $owner_nick . ":" . $filter . ":" . $last_update; + // Display events in the users's timezone + if (strlen($owner['timezone'])) { + DI::app()->setTimeZone($owner['timezone']); + } + $previous_created = $last_update; // Don't cache when the last item was posted less then 15 minutes ago (Cache duration)