aboutsummaryrefslogtreecommitdiff
path: root/app/views/index
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2022-02-28 20:22:43 +0100
committerGravatar GitHub <noreply@github.com> 2022-02-28 20:22:43 +0100
commit1fe66ad020ca8f0560bb9c6e311852ed77228f78 (patch)
treedf78da3f33a9f13a9d6ba3f2744c369bd6e313a6 /app/views/index
parentfa23ae76ea46b329fb65329081df95e864b03b23 (diff)
Implement Web scraping "HTML + XPath" (#4220)
* More PHP type hints for Fever Follow-up of https://github.com/FreshRSS/FreshRSS/pull/4201 Related to https://github.com/FreshRSS/FreshRSS/issues/4200 * Detail * Draft * Progress * More draft * Fix thumbnail PHP type hint https://github.com/FreshRSS/FreshRSS/issues/4215 * More types * A bit more * Refactor FreshRSS_Entry::fromArray * Progress * Starts to work * Categories * Fonctional * Layout update * Fix relative URLs * Cache system * Forgotten files * Remove a debug line * Automatic form validation of XPath expressions * data-leave-validation * Fix reload action * Simpler examples * Fix column type for PostgreSQL * Enforce HTTP encoding * Readme * Fix get full content * target="_blank" * gitignore * htmlspecialchars_utf8 * Implement HTML <base> And fix/revert `xml:base` support in SimplePie https://github.com/simplepie/simplepie/commit/e49c578817aa504d8d05cd7f33857aeda9d41908 * SimplePie upstream PR merged https://github.com/simplepie/simplepie/pull/723
Diffstat (limited to 'app/views/index')
-rw-r--r--app/views/index/normal.phtml7
-rw-r--r--app/views/index/reader.phtml2
-rwxr-xr-xapp/views/index/rss.phtml30
3 files changed, 33 insertions, 6 deletions
diff --git a/app/views/index/normal.phtml b/app/views/index/normal.phtml
index 5dde2a171..06323dcb0 100644
--- a/app/views/index/normal.phtml
+++ b/app/views/index/normal.phtml
@@ -21,14 +21,17 @@ $today = @strtotime('today');
</div><?php
$lastEntry = null;
$nbEntries = 0;
+ /** @var FreshRSS_Entry */
foreach ($this->entries as $item):
$lastEntry = $item;
$nbEntries++;
ob_flush();
- $this->entry = Minz_ExtensionManager::callHook('entry_before_display', $item);
- if ($this->entry == null) {
+ /** @var FreshRSS_Entry */
+ $item = Minz_ExtensionManager::callHook('entry_before_display', $item);
+ if ($item == null) {
continue;
}
+ $this->entry = $item;
// We most likely already have the feed object in cache
$this->feed = FreshRSS_CategoryDAO::findFeed($this->categories, $this->entry->feed());
diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml
index e4fb74708..b408e3480 100644
--- a/app/views/index/reader.phtml
+++ b/app/views/index/reader.phtml
@@ -15,10 +15,12 @@ $content_width = FreshRSS_Context::$user_conf->content_width;
</div><?php
$lastEntry = null;
$nbEntries = 0;
+ /** @var FreshRSS_Entry */
foreach ($this->entries as $item):
$lastEntry = $item;
$nbEntries++;
ob_flush();
+ /** @var FreshRSS_Entry */
$item = Minz_ExtensionManager::callHook('entry_before_display', $item);
if ($item == null) {
continue;
diff --git a/app/views/index/rss.phtml b/app/views/index/rss.phtml
index eedb31fa4..0b07a02f3 100755
--- a/app/views/index/rss.phtml
+++ b/app/views/index/rss.phtml
@@ -1,15 +1,26 @@
<?php /** @var FreshRSS_View $this */ ?>
<?= '<?xml version="1.0" encoding="UTF-8" ?>'; ?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"
+ <?= $this->rss_base == '' ? '' : ' xml:base="' . $this->rss_base . '"' ?>
+>
<channel>
<title><?= $this->rss_title ?></title>
- <link><?= Minz_Url::display('', 'html', true) ?></link>
+ <link><?= $this->internal_rendering ? $this->rss_url : Minz_Url::display('', 'html', true) ?></link>
<description><?= _t('index.feed.rss_of', $this->rss_title) ?></description>
<pubDate><?= date('D, d M Y H:i:s O') ?></pubDate>
<lastBuildDate><?= gmdate('D, d M Y H:i:s') ?> GMT</lastBuildDate>
- <atom:link href="<?= Minz_Url::display($this->url, 'html', true) ?>" rel="self" type="application/rss+xml" />
+ <atom:link href="<?= $this->internal_rendering ? $this->rss_url :
+ Minz_Url::display($this->rss_url, 'html', true) ?>" rel="self" type="application/rss+xml" />
<?php
+/** @var FreshRSS_Entry */
foreach ($this->entries as $item) {
+ if (!$this->internal_rendering) {
+ /** @var FreshRSS_Entry */
+ $item = Minz_ExtensionManager::callHook('entry_before_display', $item);
+ if ($item == null) {
+ continue;
+ }
+ }
?>
<item>
<title><?= $item->title() ?></title>
@@ -27,12 +38,23 @@ foreach ($this->entries as $item) {
echo "\t\t\t" , '<category>', $category, '</category>', "\n";
}
}
+ $enclosures = $item->enclosures(false);
+ if (is_array($enclosures)) {
+ foreach ($enclosures as $enclosure) {
+ // https://www.rssboard.org/media-rss
+ echo "\t\t\t" , '<media:content url="' . $enclosure['url']
+ . (empty($enclosure['medium']) ? '' : '" medium="' . $enclosure['medium'])
+ . (empty($enclosure['type']) ? '' : '" type="' . $enclosure['type'])
+ . (empty($enclosure['length']) ? '' : '" length="' . $enclosure['length'])
+ . '"></media:content>', "\n";
+ }
+ }
?>
<description><![CDATA[<?php
echo $item->content();
?>]]></description>
<pubDate><?= date('D, d M Y H:i:s O', $item->date(true)) ?></pubDate>
- <guid isPermaLink="false"><?= $item->id() ?></guid>
+ <guid isPermaLink="false"><?= $item->id() > 0 ? $item->id() : $item->guid() ?></guid>
</item>
<?php } ?>