From 97e5dbb2e79ecb59d33f65b5d56076b79b6136c7 Mon Sep 17 00:00:00 2001
From: Andrew Dolgov <fox@madoka.volgo-balt.ru>
Date: Fri, 9 Sep 2011 12:11:56 +0400
Subject: [PATCH] api: add getHeadlines since_id

---
 api/index.php           |  3 ++-
 functions.php           | 14 +++++++++++---
 modules/backend-rpc.php |  2 +-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/api/index.php b/api/index.php
index 55e60db29..737ce8abf 100644
--- a/api/index.php
+++ b/api/index.php
@@ -196,10 +196,11 @@
 			/* all_articles, unread, adaptive, marked, updated */
 			$view_mode = db_escape_string($_REQUEST["view_mode"]);
 			$include_attachments = (bool)db_escape_string($_REQUEST["include_attachments"]);
+			$since_id = (int)db_escape_string($_REQUEST["since_id"]);
 
 			$headlines = api_get_headlines($link, $feed_id, $limit, $offset,
 				$filter, $is_cat, $show_excerpt, $show_content, $view_mode, false,
-				$include_attachments);
+				$include_attachments, $since_id);
 
 			print api_wrap_reply(API_STATUS_OK, $seq, $headlines);
 
diff --git a/functions.php b/functions.php
index f0691f209..48ab664c8 100644
--- a/functions.php
+++ b/functions.php
@@ -3432,7 +3432,7 @@
 	}
 
 
-	function queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false) {
+	function queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0) {
 
 		if (!$owner_uid) $owner_uid = $_SESSION["uid"];
 
@@ -3463,6 +3463,12 @@
 				$filter_query_part = "";
 			}
 
+			if ($since_id) {
+				$since_id_part = "ttrss_entries.id > $since_id AND ";
+			} else {
+				$since_id_part = "";
+			}
+
 			$view_query_part = "";
 
 			if ($view_mode == "adaptive" || $view_query_part == "noscores") {
@@ -3694,6 +3700,7 @@
 					$search_query_part
 					$filter_query_part
 					$view_query_part
+					$since_id_part
 					$query_strategy_part ORDER BY $order_by
 					$limit_query_part $offset_query_part";
 
@@ -3718,6 +3725,7 @@
 								"link," .
 								"last_read," .
 								SUBSTRING_FOR_DATE . "(last_read,1,19) as last_read_noms," .
+								$since_id_part .
 								$vfeed_query_part .
 								$content_query_part .
 								SUBSTRING_FOR_DATE . "(updated,1,19) as updated_noms," .
@@ -6835,7 +6843,7 @@
 
 	function api_get_headlines($link, $feed_id, $limit, $offset,
 				$filter, $is_cat, $show_excerpt, $show_content, $view_mode, $order,
-				$include_attachments) {
+				$include_attachments, $since_id) {
 
 			/* do not rely on params below */
 
@@ -6845,7 +6853,7 @@
 
 			$qfh_ret = queryFeedHeadlines($link, $feed_id, $limit,
 				$view_mode, $is_cat, $search, $search_mode, $match_on,
-				$order, $offset);
+				$order, $offset, 0, false, $since_id);
 
 			$result = $qfh_ret[0];
 			$feed_title = $qfh_ret[1];
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index 6eea33df9..6cd9cd2d9 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -636,7 +636,7 @@
 			$reply['seq'] = $seq;
 
 			$headlines = api_get_headlines($link, $feed_id, 30, $offset,
-				'', ($feed_id == -4), true, false, "unread", "updated DESC");
+				'', ($feed_id == -4), true, false, "unread", "updated DESC", 0, 0);
 
 			//function api_get_headlines($link, $feed_id, $limit, $offset,
 			//		$filter, $is_cat, $show_excerpt, $show_content, $view_mode) {
-- 
GitLab