]> git.wh0rd.org - tt-rss.git/commitdiff
Add new API method: `getFeedStats'
authorPedro Silva <psilva+git@pedrosilva.pt>
Thu, 11 Apr 2013 15:25:37 +0000 (16:25 +0100)
committerPedro Silva <psilva+git@pedrosilva.pt>
Thu, 11 Apr 2013 15:25:37 +0000 (16:25 +0100)
`getFeedStats' calls the new static function `api_get_feed_stats' to
return an array of real feeds of the following form:

    [{
       "first" : 1127,
       "unread" : 873,
       "last" : 15460,
       "title" : "Some feed",
       "id" : 31,
       "total" : 1513
    }]

where "first", "last", "total" are the first, last and total number of
articles in the feed.

This adds the ability to nntp-oriented clients to efficiently retrieve
an "active file" without having to resort to `getHeadlines(limit=-1)'

classes/api.php

index 4427834eb4f9d1253543af60941bdd5e2d77f1d2..6f95db0bed0479db683e68e69bc4000141c78d16 100644 (file)
@@ -110,6 +110,11 @@ class API extends Handler {
                print $this->wrap(self::STATUS_OK, getAllCounters($this->link));
        }
 
+       function getFeedStats() {
+               $feeds = $this->api_get_feed_stats($this->link);
+               print $this->wrap(self::STATUS_OK, $feeds);
+       }
+
        function getFeeds() {
                $cat_id = db_escape_string($this->link, $_REQUEST["cat_id"]);
                $unread_only = sql_bool_to_bool($_REQUEST["unread_only"]);
@@ -480,6 +485,38 @@ class API extends Handler {
                }
        }
 
+       static function api_get_feed_stats($link) {
+
+        $feeds = array();
+
+        $result = db_query($link, "SELECT ttrss_feeds.id, ttrss_feeds.title,".
+                           " MIN(ttrss_entries.id) AS first, MAX(ttrss_entries.id) AS last,".
+                           " COUNT(ttrss_entries.id) AS total".
+                           " FROM ttrss_entries, ttrss_user_entries, ttrss_feeds".
+                           " WHERE ttrss_user_entries.feed_id = ttrss_feeds.id".
+                           " AND ttrss_user_entries.ref_id = ttrss_entries.id".
+                           " AND ttrss_user_entries.owner_uid = ".$_SESSION["uid"].
+                           " GROUP BY ttrss_feeds.title");
+
+        while ($line = db_fetch_assoc($result)) {
+
+            $unread = getFeedUnread($link, $line["id"]);
+
+            $row = array(
+                "id" => (int)$line["id"],
+                "title" => $line["title"],
+                "first" => (int)$line["first"],
+                "last" => (int)$line["last"],
+                "total" => (int)$line["total"],
+                "unread" => (int)$unread
+            );
+
+            array_push($feeds, $row);
+        }
+
+        return $feeds;
+}
+
        static function api_get_feeds($link, $cat_id, $unread_only, $limit, $offset, $include_nested = false) {
 
                        $feeds = array();