aboutsummaryrefslogtreecommitdiff
path: root/bridges/FeedMergeBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/FeedMergeBridge.php')
-rw-r--r--bridges/FeedMergeBridge.php106
1 files changed, 55 insertions, 51 deletions
diff --git a/bridges/FeedMergeBridge.php b/bridges/FeedMergeBridge.php
index b90055e5..df3d39c4 100644
--- a/bridges/FeedMergeBridge.php
+++ b/bridges/FeedMergeBridge.php
@@ -1,61 +1,65 @@
<?php
-class FeedMergeBridge extends FeedExpander {
- const MAINTAINER = 'dvikan';
- const NAME = 'FeedMerge';
- const URI = 'https://github.com/RSS-Bridge/rss-bridge';
- const DESCRIPTION = <<<'TEXT'
+class FeedMergeBridge extends FeedExpander
+{
+ const MAINTAINER = 'dvikan';
+ const NAME = 'FeedMerge';
+ const URI = 'https://github.com/RSS-Bridge/rss-bridge';
+ const DESCRIPTION = <<<'TEXT'
This bridge merges two or more feeds into a single feed. Max 10 items are fetched from each feed.
TEXT;
- const PARAMETERS = [
- [
- 'feed_name' => [
- 'name' => 'Feed name',
- 'type' => 'text',
- 'exampleValue' => 'rss-bridge/FeedMerger',
- ],
- 'feed_1' => [
- 'name' => 'Feed url',
- 'type' => 'text',
- 'required' => true,
- 'exampleValue' => 'https://lorem-rss.herokuapp.com/feed?unit=day'
- ],
- 'feed_2' => ['name' => 'Feed url', 'type' => 'text'],
- 'feed_3' => ['name' => 'Feed url', 'type' => 'text'],
- 'feed_4' => ['name' => 'Feed url', 'type' => 'text'],
- 'feed_5' => ['name' => 'Feed url', 'type' => 'text'],
+ const PARAMETERS = [
+ [
+ 'feed_name' => [
+ 'name' => 'Feed name',
+ 'type' => 'text',
+ 'exampleValue' => 'rss-bridge/FeedMerger',
+ ],
+ 'feed_1' => [
+ 'name' => 'Feed url',
+ 'type' => 'text',
+ 'required' => true,
+ 'exampleValue' => 'https://lorem-rss.herokuapp.com/feed?unit=day'
+ ],
+ 'feed_2' => ['name' => 'Feed url', 'type' => 'text'],
+ 'feed_3' => ['name' => 'Feed url', 'type' => 'text'],
+ 'feed_4' => ['name' => 'Feed url', 'type' => 'text'],
+ 'feed_5' => ['name' => 'Feed url', 'type' => 'text'],
- 'limit' => self::LIMIT,
- ]
- ];
+ 'limit' => self::LIMIT,
+ ]
+ ];
- public function collectData() {
- $limit = (int)($this->getInput('limit') ?: 10);
- $feeds = [
- $this->getInput('feed_1'),
- $this->getInput('feed_2'),
- $this->getInput('feed_3'),
- $this->getInput('feed_4'),
- $this->getInput('feed_5'),
- ];
- // Remove empty values
- $feeds = array_filter($feeds);
- foreach ($feeds as $feed) {
- // Fetch all items from the feed
- $this->collectExpandableDatas($feed);
- }
- // Sort by timestamp descending
- usort($this->items, fn($a, $b) => $b['timestamp'] <=> $a['timestamp']);
- // Grab the first $limit items
- $this->items = array_slice($this->items, 0, $limit);
- }
+ public function collectData()
+ {
+ $limit = (int)($this->getInput('limit') ?: 10);
+ $feeds = [
+ $this->getInput('feed_1'),
+ $this->getInput('feed_2'),
+ $this->getInput('feed_3'),
+ $this->getInput('feed_4'),
+ $this->getInput('feed_5'),
+ ];
+ // Remove empty values
+ $feeds = array_filter($feeds);
+ foreach ($feeds as $feed) {
+ // Fetch all items from the feed
+ $this->collectExpandableDatas($feed);
+ }
+ // Sort by timestamp descending
+ usort($this->items, fn($a, $b) => $b['timestamp'] <=> $a['timestamp']);
+ // Grab the first $limit items
+ $this->items = array_slice($this->items, 0, $limit);
+ }
- public function getIcon() {
- return 'https://cdn.jsdelivr.net/npm/famfamfam-silk@1.0.0/dist/png/folder_feed.png';
- }
+ public function getIcon()
+ {
+ return 'https://cdn.jsdelivr.net/npm/famfamfam-silk@1.0.0/dist/png/folder_feed.png';
+ }
- public function getName() {
- return $this->getInput('feed_name') ?: 'rss-bridge/FeedMerger';
- }
+ public function getName()
+ {
+ return $this->getInput('feed_name') ?: 'rss-bridge/FeedMerger';
+ }
}