aboutsummaryrefslogtreecommitdiff
path: root/classes/Feeds.php
diff options
context:
space:
mode:
authorwn_ <invalid@email.com>2025-06-22 16:31:50 +0000
committerwn_ <invalid@email.com>2025-07-06 02:33:18 +0000
commit0cd788220d9e261d5bb540dab05cf58b55d94109 (patch)
tree87c3df624b1f3e71500b6109645d491faf310d6e /classes/Feeds.php
parent46e05583a991f2d3355cbd062d9932ccee1ea25a (diff)
Separate feed type detection from init, don't subscribe on failures.
Also some FeedParser tweaks.
Diffstat (limited to 'classes/Feeds.php')
-rw-r--r--classes/Feeds.php7
1 files changed, 6 insertions, 1 deletions
diff --git a/classes/Feeds.php b/classes/Feeds.php
index 1900b40f1..e76044060 100644
--- a/classes/Feeds.php
+++ b/classes/Feeds.php
@@ -999,7 +999,7 @@ class Feeds extends Handler_Protected {
* Here you should call extractfeedurls in rpc-backend
* to get all possible feeds.
* 5 - Couldn't download the URL content.
- * 6 - currently unused
+ * 6 - Feed parsing failure (invalid content)
* 7 - Error while creating feed database entry.
* 8 - Permission denied (ACCESS_LEVEL_READONLY).
*/
@@ -1059,6 +1059,11 @@ class Feeds extends Handler_Protected {
$url = key($feedUrls);
}
+ // Don't allow subscribing if the content is invalid
+ $fp = new FeedParser($contents);
+ if ($fp->error() || $fp->get_type() === FeedParser::FEED_UNKNOWN)
+ return ['code' => 6, 'message' => truncate_string(clean($contents), 250, '…')];
+
$feed = ORM::for_table('ttrss_feeds')
->where('feed_url', $url)
->where('owner_uid', $_SESSION['uid'])