aboutsummaryrefslogtreecommitdiff
path: root/app/Models/Feed.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2018-06-16 09:59:46 +0200
committerGravatar GitHub <noreply@github.com> 2018-06-16 09:59:46 +0200
commit3306a1679c2570c30d4b662c887b4a71ce147398 (patch)
tree35fb1616c1166723676c789d6127a98db3260148 /app/Models/Feed.php
parentc0122003fe3031926546012b86a38b5187082613 (diff)
parent8fcacc8cf41c14dd7d9712329d75ff4f041f3caf (diff)
Merge pull request #1921 from FreshRSS/dev1.11.1
FreshRSS 1.11.1
Diffstat (limited to 'app/Models/Feed.php')
-rw-r--r--app/Models/Feed.php72
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);