Browse Source

move counter stuff to a separate class

Andrew Dolgov 2 years ago
parent
commit
65af3b2cbb
4 changed files with 206 additions and 201 deletions
  1. 2 2
      classes/api.php
  2. 203 0
      classes/counters.php
  3. 1 1
      classes/rpc.php
  4. 0 198
      include/functions.php

+ 2 - 2
classes/api.php

@@ -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) {
 

+ 203 - 0
classes/counters.php

@@ -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;
+	}
+
+}

+ 1 - 1
classes/rpc.php

@@ -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();

+ 0 - 198
include/functions.php

@@ -1029,208 +1029,10 @@
 		}
 	}
 
-	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");