123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?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;
- }
- }
|