aboutsummaryrefslogtreecommitdiff
path: root/app/Models/EntryDAO.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2018-02-08 20:11:05 +0100
committerGravatar GitHub <noreply@github.com> 2018-02-08 20:11:05 +0100
commit79f8b440d1303a0cd377cabe18750a2a552919e3 (patch)
tree73ed45175cf9a5c61286fdaf90c413618c56085c /app/Models/EntryDAO.php
parent81df36ed54d18b33c527b9bfa527f3f9f0faa264 (diff)
API /reader/api/0/stream/items/contents (#1774)
* API /reader/api/0/stream/items/contents For FeedMe * Fix continuation * Continuation in stream/items/ids * Fix multiple continuations * Allow empty POST tokens For FeedMe. This token is not used by e.g. The Old Reader API. There is the Authorization header anyway. TODO: Check security consequences * API compatibility FeedMe: add/remove feed FeedMe uses GET for some parameters typically given by POST * A bit of sanitization * Links to FeedMe * API favicons more robust when base_url is not set * Changelog FeedMe
Diffstat (limited to 'app/Models/EntryDAO.php')
-rw-r--r--app/Models/EntryDAO.php23
1 files changed, 21 insertions, 2 deletions
diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php
index 9e291f4ed..70135e7a0 100644
--- a/app/Models/EntryDAO.php
+++ b/app/Models/EntryDAO.php
@@ -628,10 +628,12 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
$firstId = $order === 'DESC' ? '9000000000'. '000000' : '0';
}*/
if ($firstId !== '') {
- $search .= 'AND ' . $alias . 'id ' . ($order === 'DESC' ? '<=' : '>=') . $firstId . ' ';
+ $search .= 'AND ' . $alias . 'id ' . ($order === 'DESC' ? '<=' : '>=') . ' ? ';
+ $values[] = $firstId;
}
if ($date_min > 0) {
- $search .= 'AND ' . $alias . 'id >= ' . $date_min . '000000 ';
+ $search .= 'AND ' . $alias . 'id >= ? ';
+ $values[] = $date_min . '000000';
}
if ($filter) {
if ($filter->getMinDate()) {
@@ -781,6 +783,23 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
return self::daoToEntries($stm->fetchAll(PDO::FETCH_ASSOC));
}
+ public function listByIds($ids, $order = 'DESC') {
+ if (count($ids) < 1) {
+ return array();
+ }
+
+ $sql = 'SELECT id, guid, title, author, '
+ . ($this->isCompressed() ? 'UNCOMPRESS(content_bin) AS content' : 'content')
+ . ', link, date, is_read, is_favorite, id_feed, tags '
+ . 'FROM `' . $this->prefix . 'entry` '
+ . 'WHERE id IN (' . str_repeat('?,', count($ids) - 1). '?) '
+ . 'ORDER BY id ' . $order;
+
+ $stm = $this->bd->prepare($sql);
+ $stm->execute($ids);
+ return self::daoToEntries($stm->fetchAll(PDO::FETCH_ASSOC));
+ }
+
public function listIdsWhere($type = 'a', $id = '', $state = FreshRSS_Entry::STATE_ALL, $order = 'DESC', $limit = 1, $firstId = '', $filter = '', $date_min = 0) { //For API
list($values, $sql) = $this->sqlListWhere($type, $id, $state, $order, $limit, $firstId, $filter, $date_min);