[RSS] introducing query param 'limit' to restrict the number of items to display in RSS feeds.

This commit is contained in:
Vincent Malley 2015-01-16 11:42:39 -05:00
parent af5c371e95
commit 7fe8a9adc4
2 changed files with 12 additions and 5 deletions

View file

@ -784,10 +784,11 @@ class Poche
* *
* @param $token * @param $token
* @param $user_id * @param $user_id
* @param $tag_id * @param $tag_id if $type is 'tag', the id of the tag to generate feed for
* @param string $type * @param string $type the type of feed to generate
* @param int $limit the maximum number of items (0 means all)
*/ */
public function generateFeeds($token, $user_id, $tag_id, $type = 'home') public function generateFeeds($token, $user_id, $tag_id, $type = 'home', $limit = 0)
{ {
$allowed_types = array('home', 'fav', 'archive', 'tag'); $allowed_types = array('home', 'fav', 'archive', 'tag');
$config = $this->store->getConfigUser($user_id); $config = $this->store->getConfigUser($user_id);
@ -814,8 +815,13 @@ class Poche
$entries = $this->store->getEntriesByView($type, $user_id); $entries = $this->store->getEntriesByView($type, $user_id);
} }
// if $limit is set to zero, use all entries
if (0 == $limit) {
$limit = count($entries);
}
if (count($entries) > 0) { if (count($entries) > 0) {
foreach ($entries as $entry) { for ($i = 0; $i < min(count($entries), $limit); $i++) {
$entry = $entries[$i];
$newItem = $feed->createNewItem(); $newItem = $feed->createNewItem();
$newItem->setTitle($entry['title']); $newItem->setTitle($entry['title']);
$newItem->setSource(Tools::getPocheUrl() . '?view=view&amp;id=' . $entry['id']); $newItem->setSource(Tools::getPocheUrl() . '?view=view&amp;id=' . $entry['id']);

View file

@ -102,7 +102,8 @@ class Routing
$this->wallabag->login($this->referer); $this->wallabag->login($this->referer);
} elseif (isset($_GET['feed']) && isset($_GET['user_id'])) { } elseif (isset($_GET['feed']) && isset($_GET['user_id'])) {
$tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0); $tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0);
$this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']); $limit = (isset($_GET['limit']) ? intval($_GET['limit']) : 0);
$this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type'], $limit);
} }
//allowed ONLY to logged in user //allowed ONLY to logged in user