]> git.wh0rd.org - tt-rss.git/commitdiff
move counter stuff to a separate class
authorAndrew Dolgov <noreply@madoka.volgo-balt.ru>
Fri, 5 May 2017 08:54:31 +0000 (11:54 +0300)
committerAndrew Dolgov <noreply@madoka.volgo-balt.ru>
Fri, 5 May 2017 08:54:31 +0000 (11:54 +0300)
classes/api.php
classes/counters.php [new file with mode: 0644]
classes/rpc.php
include/functions.php

index bffa2bf07d7c890fd5c2192b9d147a60944d6778..1fc84884ef6543d35b2036d02b073f8c07f9a133 100644 (file)
@@ -107,7 +107,7 @@ class API extends Handler {
 
        /* Method added for ttrss-reader for Android */
        function getCounters() {
-               $this->wrap(self::STATUS_OK, getAllCounters());
+               $this->wrap(self::STATUS_OK, Counters::getAllCounters());
        }
 
        function getFeeds() {
@@ -537,7 +537,7 @@ class API extends Handler {
                        /* Labels */
 
                        if ($cat_id == -4 || $cat_id == -2) {
-                               $counters = getLabelCounters(true);
+                               $counters = Counters::getLabelCounters(true);
 
                                foreach (array_values($counters) as $cv) {
 
diff --git a/classes/counters.php b/classes/counters.php
new file mode 100644 (file)
index 0000000..c608acf
--- /dev/null
@@ -0,0 +1,203 @@
+<?php
+class Counters {
+
+       static function getAllCounters() {
+               $data = Counters::getGlobalCounters();
+
+               $data = array_merge($data, Counters::getVirtCounters());
+               $data = array_merge($data, Counters::getLabelCounters());
+               $data = array_merge($data, Counters::getFeedCounters());
+               $data = array_merge($data, Counters::getCategoryCounters());
+
+               return $data;
+       }
+
+       static function getCategoryCounters() {
+               $ret_arr = array();
+
+               /* Labels category */
+
+               $cv = array("id" => -2, "kind" => "cat",
+                       "counter" => Feeds::getCategoryUnread(-2));
+
+               array_push($ret_arr, $cv);
+
+               $result = db_query("SELECT id AS cat_id, value AS unread,
+                       (SELECT COUNT(id) FROM ttrss_feed_categories AS c2
+                               WHERE c2.parent_cat = ttrss_feed_categories.id) AS num_children
+                       FROM ttrss_feed_categories, ttrss_cat_counters_cache
+                       WHERE ttrss_cat_counters_cache.feed_id = id AND
+                       ttrss_cat_counters_cache.owner_uid = ttrss_feed_categories.owner_uid AND
+                       ttrss_feed_categories.owner_uid = " . $_SESSION["uid"]);
+
+               while ($line = db_fetch_assoc($result)) {
+                       $line["cat_id"] = (int) $line["cat_id"];
+
+                       if ($line["num_children"] > 0) {
+                               $child_counter = Feeds::getCategoryChildrenUnread($line["cat_id"], $_SESSION["uid"]);
+                       } else {
+                               $child_counter = 0;
+                       }
+
+                       $cv = array("id" => $line["cat_id"], "kind" => "cat",
+                               "counter" => $line["unread"] + $child_counter);
+
+                       array_push($ret_arr, $cv);
+               }
+
+               /* Special case: NULL category doesn't actually exist in the DB */
+
+               $cv = array("id" => 0, "kind" => "cat",
+                       "counter" => (int) CCache::find(0, $_SESSION["uid"], true));
+
+               array_push($ret_arr, $cv);
+
+               return $ret_arr;
+       }
+
+       static function getGlobalCounters($global_unread = -1) {
+               $ret_arr = array();
+
+               if ($global_unread == -1) {
+                       $global_unread = Feeds::getGlobalUnread();
+               }
+
+               $cv = array("id" => "global-unread",
+                       "counter" => (int) $global_unread);
+
+               array_push($ret_arr, $cv);
+
+               $result = db_query("SELECT COUNT(id) AS fn FROM
+                       ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]);
+
+               $subscribed_feeds = db_fetch_result($result, 0, "fn");
+
+               $cv = array("id" => "subscribed-feeds",
+                       "counter" => (int) $subscribed_feeds);
+
+               array_push($ret_arr, $cv);
+
+               return $ret_arr;
+       }
+
+       static function getVirtCounters() {
+
+               $ret_arr = array();
+
+               for ($i = 0; $i >= -4; $i--) {
+
+                       $count = getFeedUnread($i);
+
+                       if ($i == 0 || $i == -1 || $i == -2)
+                               $auxctr = Feeds::getFeedArticles($i, false);
+                       else
+                               $auxctr = 0;
+
+                       $cv = array("id" => $i,
+                               "counter" => (int) $count,
+                               "auxcounter" => (int) $auxctr);
+
+//                     if (get_pref('EXTENDED_FEEDLIST'))
+//                             $cv["xmsg"] = getFeedArticles($i)." ".__("total");
+
+                       array_push($ret_arr, $cv);
+               }
+
+               $feeds = PluginHost::getInstance()->get_feeds(-1);
+
+               if (is_array($feeds)) {
+                       foreach ($feeds as $feed) {
+                               $cv = array("id" => PluginHost::pfeed_to_feed_id($feed['id']),
+                                       "counter" => $feed['sender']->get_unread($feed['id']));
+
+                               if (method_exists($feed['sender'], 'get_total'))
+                                       $cv["auxcounter"] = $feed['sender']->get_total($feed['id']);
+
+                               array_push($ret_arr, $cv);
+                       }
+               }
+
+               return $ret_arr;
+       }
+
+       static function getLabelCounters($descriptions = false) {
+
+               $ret_arr = array();
+
+               $owner_uid = $_SESSION["uid"];
+
+               $result = db_query("SELECT id,caption,SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS unread, COUNT(u1.unread) AS total
+                       FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON
+                               (ttrss_labels2.id = label_id)
+                               LEFT JOIN ttrss_user_entries AS u1 ON u1.ref_id = article_id
+                               WHERE ttrss_labels2.owner_uid = $owner_uid AND u1.owner_uid = $owner_uid
+                               GROUP BY ttrss_labels2.id,
+                                       ttrss_labels2.caption");
+
+               while ($line = db_fetch_assoc($result)) {
+
+                       $id = Labels::label_to_feed_id($line["id"]);
+
+                       $cv = array("id" => $id,
+                               "counter" => (int) $line["unread"],
+                               "auxcounter" => (int) $line["total"]);
+
+                       if ($descriptions)
+                               $cv["description"] = $line["caption"];
+
+                       array_push($ret_arr, $cv);
+               }
+
+               return $ret_arr;
+       }
+
+       static function getFeedCounters($active_feed = false) {
+
+               $ret_arr = array();
+
+               $query = "SELECT ttrss_feeds.id,
+                               ttrss_feeds.title,
+                               ".SUBSTRING_FOR_DATE."(ttrss_feeds.last_updated,1,19) AS last_updated,
+                               last_error, value AS count
+                       FROM ttrss_feeds, ttrss_counters_cache
+                       WHERE ttrss_feeds.owner_uid = ".$_SESSION["uid"]."
+                               AND ttrss_counters_cache.owner_uid = ttrss_feeds.owner_uid
+                               AND ttrss_counters_cache.feed_id = id";
+
+               $result = db_query($query);
+
+               while ($line = db_fetch_assoc($result)) {
+
+                       $id = $line["id"];
+                       $count = $line["count"];
+                       $last_error = htmlspecialchars($line["last_error"]);
+
+                       $last_updated = make_local_datetime($line['last_updated'], false);
+
+                       $has_img = feed_has_icon($id);
+
+                       if (date('Y') - date('Y', strtotime($line['last_updated'])) > 2)
+                               $last_updated = '';
+
+                       $cv = array("id" => $id,
+                               "updated" => $last_updated,
+                               "counter" => (int) $count,
+                               "has_img" => (int) $has_img);
+
+                       if ($last_error)
+                               $cv["error"] = $last_error;
+
+//                     if (get_pref('EXTENDED_FEEDLIST'))
+//                             $cv["xmsg"] = getFeedArticles($id)." ".__("total");
+
+                       if ($active_feed && $id == $active_feed)
+                               $cv["title"] = truncate_string($line["title"], 30);
+
+                       array_push($ret_arr, $cv);
+
+               }
+
+               return $ret_arr;
+       }
+
+}
\ No newline at end of file
index 4c4e52b7addf414a5749c952bce745ca1ee5e0c0..a31452beaa0ca2559d9c282b2980448ef8b8122c 100755 (executable)
@@ -298,7 +298,7 @@ class RPC extends Handler_Protected {
                if (!empty($_REQUEST['seq'])) $reply['seq'] = (int) $_REQUEST['seq'];
 
                if ($last_article_id != Article::getLastArticleId()) {
-                       $reply['counters'] = getAllCounters();
+                       $reply['counters'] = Counters::getAllCounters();
                }
 
                $reply['runtime-info'] = make_runtime_info();
index 58989d131b6062a88d2c33fd1c468eb4b966477f..b448c5a9d1757f83d565f8e30480f7fdaa9dd62b 100644 (file)
                }
        }
 
-       function getAllCounters() {
-               $data = getGlobalCounters();
-
-               $data = array_merge($data, getVirtCounters());
-               $data = array_merge($data, getLabelCounters());
-               $data = array_merge($data, getFeedCounters());
-               $data = array_merge($data, getCategoryCounters());
-
-               return $data;
-       }
-
-       function getCategoryCounters() {
-               $ret_arr = array();
-
-               /* Labels category */
-
-               $cv = array("id" => -2, "kind" => "cat",
-                       "counter" => Feeds::getCategoryUnread(-2));
-
-               array_push($ret_arr, $cv);
-
-               $result = db_query("SELECT id AS cat_id, value AS unread,
-                       (SELECT COUNT(id) FROM ttrss_feed_categories AS c2
-                               WHERE c2.parent_cat = ttrss_feed_categories.id) AS num_children
-                       FROM ttrss_feed_categories, ttrss_cat_counters_cache
-                       WHERE ttrss_cat_counters_cache.feed_id = id AND
-                       ttrss_cat_counters_cache.owner_uid = ttrss_feed_categories.owner_uid AND
-                       ttrss_feed_categories.owner_uid = " . $_SESSION["uid"]);
-
-               while ($line = db_fetch_assoc($result)) {
-                       $line["cat_id"] = (int) $line["cat_id"];
-
-                       if ($line["num_children"] > 0) {
-                               $child_counter = Feeds::getCategoryChildrenUnread($line["cat_id"], $_SESSION["uid"]);
-                       } else {
-                               $child_counter = 0;
-                       }
-
-                       $cv = array("id" => $line["cat_id"], "kind" => "cat",
-                               "counter" => $line["unread"] + $child_counter);
-
-                       array_push($ret_arr, $cv);
-               }
-
-               /* Special case: NULL category doesn't actually exist in the DB */
-
-               $cv = array("id" => 0, "kind" => "cat",
-                       "counter" => (int) CCache::find(0, $_SESSION["uid"], true));
-
-               array_push($ret_arr, $cv);
-
-               return $ret_arr;
-       }
-
        function getFeedUnread($feed, $is_cat = false) {
                return Feeds::getFeedArticles($feed, $is_cat, true, $_SESSION["uid"]);
        }
 
-       function getGlobalCounters($global_unread = -1) {
-               $ret_arr = array();
-
-               if ($global_unread == -1) {
-                       $global_unread = Feeds::getGlobalUnread();
-               }
-
-               $cv = array("id" => "global-unread",
-                       "counter" => (int) $global_unread);
-
-               array_push($ret_arr, $cv);
-
-               $result = db_query("SELECT COUNT(id) AS fn FROM
-                       ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]);
-
-               $subscribed_feeds = db_fetch_result($result, 0, "fn");
-
-               $cv = array("id" => "subscribed-feeds",
-                       "counter" => (int) $subscribed_feeds);
-
-               array_push($ret_arr, $cv);
-
-               return $ret_arr;
-       }
-
-       function getVirtCounters() {
-
-               $ret_arr = array();
-
-               for ($i = 0; $i >= -4; $i--) {
-
-                       $count = getFeedUnread($i);
-
-                       if ($i == 0 || $i == -1 || $i == -2)
-                               $auxctr = Feeds::getFeedArticles($i, false);
-                       else
-                               $auxctr = 0;
-
-                       $cv = array("id" => $i,
-                               "counter" => (int) $count,
-                               "auxcounter" => (int) $auxctr);
-
-//                     if (get_pref('EXTENDED_FEEDLIST'))
-//                             $cv["xmsg"] = getFeedArticles($i)." ".__("total");
-
-                       array_push($ret_arr, $cv);
-               }
-
-               $feeds = PluginHost::getInstance()->get_feeds(-1);
-
-               if (is_array($feeds)) {
-                       foreach ($feeds as $feed) {
-                               $cv = array("id" => PluginHost::pfeed_to_feed_id($feed['id']),
-                                       "counter" => $feed['sender']->get_unread($feed['id']));
-
-                               if (method_exists($feed['sender'], 'get_total'))
-                                       $cv["auxcounter"] = $feed['sender']->get_total($feed['id']);
-
-                               array_push($ret_arr, $cv);
-                       }
-               }
-
-               return $ret_arr;
-       }
-
-       function getLabelCounters($descriptions = false) {
-
-               $ret_arr = array();
-
-               $owner_uid = $_SESSION["uid"];
-
-               $result = db_query("SELECT id,caption,SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS unread, COUNT(u1.unread) AS total
-                       FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON
-                               (ttrss_labels2.id = label_id)
-                               LEFT JOIN ttrss_user_entries AS u1 ON u1.ref_id = article_id
-                               WHERE ttrss_labels2.owner_uid = $owner_uid AND u1.owner_uid = $owner_uid
-                               GROUP BY ttrss_labels2.id,
-                                       ttrss_labels2.caption");
-
-               while ($line = db_fetch_assoc($result)) {
-
-                       $id = Labels::label_to_feed_id($line["id"]);
-
-                       $cv = array("id" => $id,
-                               "counter" => (int) $line["unread"],
-                               "auxcounter" => (int) $line["total"]);
-
-                       if ($descriptions)
-                               $cv["description"] = $line["caption"];
-
-                       array_push($ret_arr, $cv);
-               }
-
-               return $ret_arr;
-       }
-
-       function getFeedCounters($active_feed = false) {
-
-               $ret_arr = array();
-
-               $query = "SELECT ttrss_feeds.id,
-                               ttrss_feeds.title,
-                               ".SUBSTRING_FOR_DATE."(ttrss_feeds.last_updated,1,19) AS last_updated,
-                               last_error, value AS count
-                       FROM ttrss_feeds, ttrss_counters_cache
-                       WHERE ttrss_feeds.owner_uid = ".$_SESSION["uid"]."
-                               AND ttrss_counters_cache.owner_uid = ttrss_feeds.owner_uid
-                               AND ttrss_counters_cache.feed_id = id";
-
-               $result = db_query($query);
-
-               while ($line = db_fetch_assoc($result)) {
-
-                       $id = $line["id"];
-                       $count = $line["count"];
-                       $last_error = htmlspecialchars($line["last_error"]);
-
-                       $last_updated = make_local_datetime($line['last_updated'], false);
-
-                       $has_img = feed_has_icon($id);
-
-                       if (date('Y') - date('Y', strtotime($line['last_updated'])) > 2)
-                               $last_updated = '';
-
-                       $cv = array("id" => $id,
-                               "updated" => $last_updated,
-                               "counter" => (int) $count,
-                               "has_img" => (int) $has_img);
-
-                       if ($last_error)
-                               $cv["error"] = $last_error;
-
-//                     if (get_pref('EXTENDED_FEEDLIST'))
-//                             $cv["xmsg"] = getFeedArticles($id)." ".__("total");
-
-                       if ($active_feed && $id == $active_feed)
-                               $cv["title"] = truncate_string($line["title"], 30);
-
-                       array_push($ret_arr, $cv);
-
-               }
-
-               return $ret_arr;
-       }
 
        /*function get_pgsql_version() {
                $result = db_query("SELECT version() AS version");