From 283341e75e6ef4fbb3c522635b8a7805d3ab3a20 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 8 Apr 2024 11:10:10 +0200 Subject: Allow multiple authors on enclosures (#6272) fix https://github.com/FreshRSS/FreshRSS/issues/5066 --- app/Models/Entry.php | 13 +++++++++---- app/Models/Feed.php | 9 ++++++--- app/views/index/rss.phtml | 12 +++++++++++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/Models/Entry.php b/app/Models/Entry.php index e5e859a1d..c5a9ddc7e 100644 --- a/app/Models/Entry.php +++ b/app/Models/Entry.php @@ -201,7 +201,7 @@ HTML; if (!$allowDuplicateEnclosures && self::containsLink($content, $elink)) { continue; } - $credit = $enclosure['credit'] ?? ''; + $credits = $enclosure['credit'] ?? ''; $description = nl2br($enclosure['description'] ?? '', true); $length = $enclosure['length'] ?? 0; $medium = $enclosure['medium'] ?? ''; @@ -238,8 +238,13 @@ HTML; . '" title="' . $etitle . '">💾

'; } - if ($credit != '') { - $content .= '

© ' . $credit . '

'; + if ($credits != '') { + if (!is_array($credits)) { + $credits = [$credits]; + } + foreach ($credits as $credit) { + $content .= '

© ' . $credit . '

'; + } } if ($description != '') { $content .= '
' . $description . '
'; @@ -250,7 +255,7 @@ HTML; return $content; } - /** @return Traversable}> */ + /** @return Traversable,'height'?:int,'width'?:int,'thumbnails'?:array}> */ public function enclosures(bool $searchBodyImages = false): Traversable { $attributeEnclosures = $this->attributeArray('enclosures'); if (is_iterable($attributeEnclosures)) { diff --git a/app/Models/Feed.php b/app/Models/Feed.php index a957c8d10..cde0a91b8 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -520,7 +520,7 @@ class FreshRSS_Feed extends Minz_Model { $elink = $enclosure->get_link(); if ($elink != '') { $etitle = $enclosure->get_title() ?? ''; - $credit = $enclosure->get_credit() ?? null; + $credits = $enclosure->get_credits() ?? null; $description = $enclosure->get_description() ?? ''; $mime = strtolower($enclosure->get_type() ?? ''); $medium = strtolower($enclosure->get_medium() ?? ''); @@ -534,8 +534,11 @@ class FreshRSS_Feed extends Minz_Model { if ($etitle != '') { $attributeEnclosure['title'] = $etitle; } - if ($credit != null) { - $attributeEnclosure['credit'] = $credit->get_name(); + if (is_array($credits)) { + $attributeEnclosure['credit'] = []; + foreach ($credits as $credit) { + $attributeEnclosure['credit'][] = $credit->get_name(); + } } if ($description != '') { $attributeEnclosure['description'] = $description; diff --git a/app/views/index/rss.phtml b/app/views/index/rss.phtml index 80768c5b7..c811a0354 100644 --- a/app/views/index/rss.phtml +++ b/app/views/index/rss.phtml @@ -60,6 +60,16 @@ foreach ($this->entries as $item) { continue; } $urls[$enclosure['url']] = true; + + $credits = $enclosure['credit'] ?? []; + if (!is_array($credits)) { // For entries < FreshRSS 1.24 + $credits = [$credits]; + } + $mediaCredits = ''; + foreach ($credits as $credit) { + $mediaCredits = '' . $credit . ''; + } + // https://www.rssboard.org/media-rss echo "\t\t\t", '' . (empty($enclosure['title']) ? '' : '' . $enclosure['title'] . '') - . (empty($enclosure['credit']) ? '' : '' . $enclosure['credit'] . '') + . $mediaCredits . '', "\n"; } ?> -- cgit v1.2.3