diff options
Diffstat (limited to 'app/Models/Feed.php')
| -rw-r--r-- | app/Models/Feed.php | 72 |
1 files changed, 52 insertions, 20 deletions
diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 7eb079f15..89eb0a53c 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -286,6 +286,7 @@ class FreshRSS_Feed extends Minz_Model { if (!$loadDetails) { //Only activates auto-discovery when adding a new feed $feed->set_autodiscovery_level(SIMPLEPIE_LOCATOR_NONE); } + Minz_ExtensionManager::callHook('simplepie_before_init', $feed, $this); $mtime = $feed->init(); if ((!$mtime) || $feed->error()) { @@ -355,24 +356,52 @@ class FreshRSS_Feed extends Minz_Model { $content = html_only_entity_decode($item->get_content()); - $elinks = array(); - foreach ($item->get_enclosures() as $enclosure) { - $elink = $enclosure->get_link(); - if ($elink != '' && empty($elinks[$elink])) { - $elinks[$elink] = '1'; - $mime = strtolower($enclosure->get_type()); - if (strpos($mime, 'image/') === 0) { - $content .= '<p class="enclosure"><img src="' . $elink . '" alt="" /></p>'; - } elseif (strpos($mime, 'audio/') === 0) { - $content .= '<p class="enclosure"><audio preload="none" src="' . $elink - . '" controls="controls"></audio> <a download="" href="' . $elink . '">💾</a></p>'; - } elseif (strpos($mime, 'video/') === 0) { - $content .= '<p class="enclosure"><video preload="none" src="' . $elink - . '" controls="controls"></video> <a download="" href="' . $elink . '">💾</a></p>'; - } elseif (strpos($mime, 'application/') === 0 || strpos($mime, 'text/') === 0) { - $content .= '<p class="enclosure"><a download="" href="' . $elink . '">💾</a></p>'; - } else { - unset($elinks[$elink]); + if ($item->get_enclosures() != null) { + $elinks = array(); + foreach ($item->get_enclosures() as $enclosure) { + $elink = $enclosure->get_link(); + if ($elink != '' && empty($elinks[$elink])) { + $content .= '<div class="enclosure">'; + + if ($enclosure->get_title() != '') { + $content .= '<p class="enclosure-title">' . $enclosure->get_title() . '</p>'; + } + + $enclosureContent = ''; + $elinks[$elink] = true; + $mime = strtolower($enclosure->get_type()); + $medium = strtolower($enclosure->get_medium()); + if ($medium === 'image' || strpos($mime, 'image/') === 0) { + $enclosureContent .= '<p class="enclosure-content"><img src="' . $elink . '" alt="" /></p>'; + } elseif ($medium === 'audio' || strpos($mime, 'audio/') === 0) { + $enclosureContent .= '<p class="enclosure-content"><audio preload="none" src="' . $elink + . '" controls="controls"></audio> <a download="" href="' . $elink . '">💾</a></p>'; + } elseif ($medium === 'video' || strpos($mime, 'video/') === 0) { + $enclosureContent .= '<p class="enclosure-content"><video preload="none" src="' . $elink + . '" controls="controls"></video> <a download="" href="' . $elink . '">💾</a></p>'; + } elseif ($medium != '' || strpos($mime, 'application/') === 0 || strpos($mime, 'text/') === 0) { + $enclosureContent .= '<p class="enclosure-content"><a download="" href="' . $elink . '">💾</a></p>'; + } else { + unset($elinks[$elink]); + } + + $thumbnailContent = ''; + if ($enclosure->get_thumbnails() != null) { + foreach ($enclosure->get_thumbnails() as $thumbnail) { + if (empty($elinks[$thumbnail])) { + $elinks[$thumbnail] = true; + $thumbnailContent .= '<p><img class="enclosure-thumbnail" src="' . $thumbnail . '" alt="" /></p>'; + } + } + } + + $content .= $thumbnailContent; + $content .= $enclosureContent; + + if ($enclosure->get_description() != '') { + $content .= '<pre class="enclosure-description">' . $enclosure->get_description() . '</pre>'; + } + $content .= "</div>\n"; } } } @@ -391,8 +420,11 @@ class FreshRSS_Feed extends Minz_Model { $date ? $date : time() ); $entry->_tags($tags); - // permet de récupérer le contenu des flux tronqués - $entry->loadCompleteContent($this->pathEntries()); + $entry->_feed($this); + if ($this->pathEntries != '') { + // Optionally load full content for truncated feeds + $entry->loadCompleteContent(); + } $entries[] = $entry; unset($item); |
