summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend.php20
-rw-r--r--functions.js20
-rw-r--r--functions.php155
-rw-r--r--modules/backend-rpc.php121
4 files changed, 137 insertions, 179 deletions
diff --git a/backend.php b/backend.php
index 0182b2436..e13019d45 100644
--- a/backend.php
+++ b/backend.php
@@ -258,9 +258,9 @@
// if (get_pref($link, "SYNC_COUNTERS") || ($mode == "prefetch" && $csync)) {
if (time() - $_SESSION["view:counters_stamp"] > 5 && $mode == "prefetch") {
- print "<counters>";
- getAllCounters($link, $omode);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $omode));
+ print "]]></counters>";
$_SESSION["view:counters_stamp"] = time();
}
@@ -389,20 +389,12 @@
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("20", $timing_info);
-
-// if (get_pref($link, "SYNC_COUNTERS") ||
-// time() - $_SESSION["get_all_counters_stamp"] > $viewfeed_ctr_interval) {
-// print "<counters>";
-// getAllCounters($link, $omode, $feed);
-// print "</counters>";
-// }
-
if (get_pref($link, 'COMBINED_DISPLAY_MODE') || $subop ||
time() - $_SESSION["viewfeed:counters_stamp"] > 5) {
if (!$offset) {
- print "<counters>";
- getAllCounters($link, $omode, $feed);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $omode, $feed));
+ print "]]></counters>";
$_SESSION["viewfeed:counters_stamp"] = time();
}
}
diff --git a/functions.js b/functions.js
index 553c52bf7..9a1652ce7 100644
--- a/functions.js
+++ b/functions.js
@@ -383,18 +383,18 @@ function parse_counters(reply, scheduled_call) {
var feeds_found = 0;
- var elems = reply.getElementsByTagName("counter");
+ var elems = JSON.parse(reply.firstChild.nodeValue);
for (var l = 0; l < elems.length; l++) {
- var id = elems[l].getAttribute("id");
- var t = elems[l].getAttribute("type");
- var ctr = elems[l].getAttribute("counter");
- var error = elems[l].getAttribute("error");
- var has_img = elems[l].getAttribute("hi");
- var updated = elems[l].getAttribute("updated");
- var title = elems[l].getAttribute("title");
- var xmsg = elems[l].getAttribute("xmsg");
+ var id = elems[l].id
+ var is_cat = elems[l].cat;
+ var ctr = parseInt(elems[l].counter)
+ var error = elems[l].error;
+ var has_img = elems[l].has_img;
+ var updated = elems[l].updated;
+ var title = elems[l].title;
+ var xmsg = elems[l].xmsg;
if (id == "global-unread") {
@@ -412,7 +412,7 @@ function parse_counters(reply, scheduled_call) {
continue;
}
- if (t == "category") {
+ if (is_cat) {
var catctr = $("FCATCTR-" + id);
if (catctr) {
catctr.innerHTML = "(" + ctr + ")";
diff --git a/functions.php b/functions.php
index bed8f23f1..da999fe2d 100644
--- a/functions.php
+++ b/functions.php
@@ -2454,30 +2454,32 @@
function getAllCounters($link, $omode = "flc", $active_feed = false) {
if (!$omode) $omode = "flc";
-
- getGlobalCounters($link);
- getVirtCounters($link);
- if (strchr($omode, "l")) getLabelCounters($link);
- if (strchr($omode, "f")) getFeedCounters($link, $active_feed);
- if (strchr($omode, "t")) getTagCounters($link);
+ $data = getGlobalCounters($link);
+
+ $data = array_merge($data, getVirtCounters($link));
+
+ if (strchr($omode, "l")) $data = array_merge($data, getLabelCounters($link));
+ if (strchr($omode, "f")) $data = array_merge($data, getFeedCounters($link, $active_feed));
+ if (strchr($omode, "t")) $data = array_merge($data, getTagCounters($link));
if (strchr($omode, "c")) {
if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
+ $data = array_merge($data, getCategoryCounters($link));
}
}
+
+ return $data;
}
function getCategoryCounters($link) {
- # two special categories are -1 and -2 (all virtuals; all labels)
-
-/* $ctr = getCategoryUnread($link, -1);
+ $ret_arr = array();
- print "<counter type=\"category\" id=\"-1\" counter=\"$ctr\"/>"; */
+ /* Labels category */
- $ctr = getCategoryUnread($link, -2);
+ $cv = array("id" => -2, "cat" => true,
+ "counter" => getCategoryUnread($link, -2));
- print "<counter type=\"category\" id=\"-2\" counter=\"$ctr\"/>";
+ array_push($ret_arr, $cv);
$age_qpart = getMaxAgeSubquery();
@@ -2489,15 +2491,20 @@
while ($line = db_fetch_assoc($result)) {
$line["cat_id"] = (int) $line["cat_id"];
- print "<counter type=\"category\" id=\"".$line["cat_id"]."\" counter=\"".
- $line["unread"]."\"/>";
+ $cv = array("id" => $line["cat_id"], "cat" => true,
+ "counter" => $line["unread"]);
+
+ array_push($ret_arr, $cv);
}
/* Special case: NULL category doesn't actually exist in the DB */
- print "<counter type=\"category\" id=\"0\" counter=\"".
- ccache_find($link, 0, $_SESSION["uid"], true)."\"/>";
+ $cv = array("id" => 0, "cat" => true,
+ "counter" => ccache_find($link, 0, $_SESSION["uid"], true));
+ array_push($ret_arr, $cv);
+
+ return $ret_arr;
}
function getCategoryUnread($link, $cat, $owner_uid = false) {
@@ -2730,20 +2737,28 @@
}
function getGlobalCounters($link, $global_unread = -1) {
+ $ret_arr = array();
+
if ($global_unread == -1) {
$global_unread = getGlobalUnread($link);
}
- print "<counter type=\"global\" id='global-unread'
- counter='$global_unread'/>";
+
+ $cv = array("id" => "global-unread",
+ "counter" => $global_unread);
+
+ array_push($ret_arr, $cv);
$result = db_query($link, "SELECT COUNT(id) AS fn FROM
ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]);
$subscribed_feeds = db_fetch_result($result, 0, "fn");
- print "<counter type=\"global\" id='subscribed-feeds'
- counter='$subscribed_feeds'/>";
+ $cv = array("id" => "subscribed-feeds",
+ "counter" => $subscribed_feeds);
+ array_push($ret_arr, $cv);
+
+ return $ret_arr;
}
function getSubscribedFeeds($link) {
@@ -2754,6 +2769,8 @@
}
function getTagCounters($link) {
+
+ $ret_arr = array();
$age_qpart = getMaxAgeSubquery();
@@ -2773,37 +2790,41 @@
foreach (array_keys($tags) as $tag) {
$unread = $tags[$tag];
$tag = htmlspecialchars($tag);
- print "<counter type=\"tag\" id=\"$tag\" counter=\"$unread\"/>";
- }
+
+ $cv = array("id" => $tag,
+ "tag" => true,
+ "counter" => $unread);
+
+ array_push($ret_arr, $cv);
+ }
+
+ return $ret_arr;
}
- function getVirtCounters($link, $ret_mode = false) {
+ function getVirtCounters($link) {
$ret_arr = array();
for ($i = 0; $i >= -4; $i--) {
$count = getFeedUnread($link, $i);
+
+ $cv = array("id" => $i,
+ "counter" => $count,
+ "description" => getFeedTitle($link, $i));
- if (!$ret_mode) {
-
- if (get_pref($link, 'EXTENDED_FEEDLIST')) {
- $xmsg_part = "xmsg=\"(" . getFeedArticles($link, $i) . " total)\"";
- } else {
- $xmsg_part = "";
- }
+ if (get_pref($link, 'EXTENDED_FEEDLIST'))
+ $cv["xmsg"] = getFeedArticles($link, $i)." ".__("total");
- print "<counter type=\"label\" id=\"$i\" counter=\"$count\" $xmsg_part/>";
- } else {
- $ret_arr[$i]["counter"] = $count;
- $ret_arr[$i]["description"] = getFeedTitle($link, $i);
- }
+ array_push($ret_arr, $cv);
}
return $ret_arr;
}
- function getLabelCounters($link, $ret_mode = false) {
+ function getLabelCounters($link) {
+
+ $ret_arr = array();
$age_qpart = getMaxAgeSubquery();
@@ -2818,21 +2839,15 @@
$label_name = $line["caption"];
$count = getFeedUnread($link, $id);
-
- if (!$ret_mode) {
- if (get_pref($link, 'EXTENDED_FEEDLIST')) {
- $xmsg_part = "xmsg=\"(" . getFeedArticles($link, $id) . " total)\"";
- } else {
- $xmsg_part = "";
- }
+ $cv = array("id" => $id,
+ "counter" => $count,
+ "description" => $label_name);
- print "<counter type=\"label\" id=\"$id\" counter=\"$count\" $xmsg_part/>";
+ if (get_pref($link, 'EXTENDED_FEEDLIST'))
+ $cv["xmsg"] = getFeedArticles($link, $id)." ".__("total");
- } else {
- $ret_arr[$id]["counter"] = $count;
- $ret_arr[$id]["description"] = $label_name;
- }
+ array_push($ret_arr, $cv);
}
return $ret_arr;
@@ -2840,6 +2855,8 @@
function getFeedCounters($link, $active_feed = false) {
+ $ret_arr = array();
+
$age_qpart = getMaxAgeSubquery();
$query = "SELECT ttrss_feeds.id,
@@ -2868,8 +2885,6 @@
$last_updated = date($short_date, strtotime($line["last_updated"]));
}
- $last_updated = htmlspecialchars($last_updated);
-
$has_img = feed_has_icon($id);
$tmp_result = db_query($link,
@@ -2878,38 +2893,28 @@
$count += db_fetch_result($tmp_result, 0, "unread");
- if ($last_error) {
- $error_part = "error=\"$last_error\"";
- } else {
- $error_part = "";
- }
+ $cv = array("id" => $id,
+ "last_updated" => $last_updated,
+ "counter" => $count,
+ "has_img" => (int) $has_img);
- if ($has_img) {
- $has_img_part = "hi=\"$has_img\"";
- } else {
- $has_img_part = "";
- }
+ if ($last_error)
+ $cv["error"] = $last_error;
- if ($active_feed && $id == $active_feed) {
- $has_title_part = "title=\"" . htmlspecialchars($line["title"]) . "\"";
- } else {
- $has_title_part = "";
- }
+ if (get_pref($link, 'EXTENDED_FEEDLIST'))
+ $cv["xmsg"] = getFeedArticles($link, $id)." ".__("total");
- if (get_pref($link, 'EXTENDED_FEEDLIST')) {
- $xmsg_part = "xmsg=\"(" . getFeedArticles($link, $id) . " total)\"";
- }
+ if ($active_feed && $id == $active_feed)
+ $cv["title"] = $line["title"];
+
+ array_push($ret_arr, $cv);
- print "<counter type=\"feed\" id=\"$id\" counter=\"$count\" $has_img_part $error_part updated=\"$last_updated\" $xmsg_part $has_title_part/>";
}
+
+ return $ret_arr;
}
function get_script_dt_add() {
-/* if (strpos(VERSION, ".99") === false) {
- return VERSION;
- } else {
- return time();
- } */
return time();
}
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index aa05e8e8e..228d45a78 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -156,12 +156,11 @@
if ($subop == "getAllCounters") {
print "<rpc-reply>";
- print "<counters>";
+ print "<counters><![CDATA[";
- $omode = $_REQUEST["omode"];
+ print json_encode(getAllCounters($link, $_REQUEST['omode']));
- getAllCounters($link, $omode);
- print "</counters>";
+ print "]]></counters>";
print_runtime_info($link);
print "</rpc-reply>";
@@ -183,14 +182,9 @@
$result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark
WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
- print "<rpc-reply><counters>";
- getGlobalCounters($link);
- getVirtCounters($link);
- getLabelCounters($link);
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
- }
- print "</counters></rpc-reply>";
+ print "<rpc-reply><counters><![CDATA[";
+ print json_encode(getAllCounters($link));
+ print "]]></counters></rpc-reply>";
return;
}
@@ -201,13 +195,9 @@
$result = db_query($link, "DELETE FROM ttrss_user_entries
WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
- print "<rpc-reply><counters>";
- getGlobalCounters($link);
- getVirtCounters($link);
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
- }
- print "</counters></rpc-reply>";
+ print "<rpc-reply><counters><![CDATA[";
+ print json_encode(getAllCounters($link));
+ print "]]></counters></rpc-reply>";
return;
}
@@ -219,13 +209,9 @@
SET feed_id = orig_feed_id, orig_feed_id = NULL
WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
- print "<rpc-reply><counters>";
- getGlobalCounters($link);
- getVirtCounters($link);
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
- }
- print "</counters></rpc-reply>";
+ print "<rpc-reply><counters><![CDATA[";
+ print json_encode(getAllCounters($link));
+ print "]]></counters></rpc-reply>";
return;
}
@@ -237,13 +223,9 @@
archive_article($link, $id, $_SESSION["uid"]);
}
- print "<rpc-reply><counters>";
- getGlobalCounters($link);
- getVirtCounters($link);
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
- }
- print "</counters></rpc-reply>";
+ print "<rpc-reply><counters><![CDATA[";
+ print json_encode(getAllCounters($link));
+ print "]]></counters></rpc-reply>";
return;
}
@@ -274,14 +256,9 @@
print "<rpc-reply>";
- print "<counters>";
- getGlobalCounters($link);
- getVirtCounters($link);
- getLabelCounters($link);
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
- }
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link));
+ print "]]></counters>";
if ($note != 'undefined') {
$note_size = strlen($note);
@@ -301,9 +278,9 @@
update_rss_feed($link, $feed_id);
print "<rpc-reply>";
- print "<counters>";
- getFeedCounter($link, $feed_id);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getFeedCounters($link, $feed_id));
+ print "]]></counters>";
print "</rpc-reply>";
return;
@@ -316,31 +293,14 @@
print "<rpc-reply>";
- print "<counters>";
+ print "<counters><![CDATA[";
if ($global_unread_caller != $global_unread) {
-
- $omode = $_REQUEST["omode"];
-
- if (!$omode) $omode = "tflc";
-
- getVirtCounters($link);
-
- if (strchr($omode, "l")) getLabelCounters($link);
-
- if (strchr($omode, "c")) {
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- getCategoryCounters($link);
- }
- }
-
- if (strchr($omode, "f")) getFeedCounters($link);
- if (strchr($omode, "t")) getTagCounters($link);
-
- getGlobalCounters($link, $global_unread);
+ $omode = $_REQUEST["omode"];
+ print json_encode(getAllCounters($link, $omode));
}
- print "</counters>";
+ print "]]></counters>";
print_runtime_info($link);
@@ -358,9 +318,10 @@
catchupArticlesById($link, $ids, $cmode);
print "<rpc-reply>";
- print "<counters>";
- getAllCounters($link, $_REQUEST["omode"]);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $_REQUEST['omode']));
+ print "]]></counters>";
+
print_runtime_info($link);
print "</rpc-reply>";
@@ -375,9 +336,9 @@
markArticlesById($link, $ids, $cmode);
print "<rpc-reply>";
- print "<counters>";
- getAllCounters($link, $_REQUEST["omode"]);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $_REQUEST['omode']));
+ print "]]></counters>";
print_runtime_info($link);
print "</rpc-reply>";
@@ -392,9 +353,9 @@
publishArticlesById($link, $ids, $cmode);
print "<rpc-reply>";
- print "<counters>";
- getAllCounters($link, $_REQUEST["omode"]);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $_REQUEST['omode']));
+ print "]]></counters>";
print_runtime_info($link);
print "</rpc-reply>";
@@ -649,9 +610,9 @@
print "</info-for-headlines>";
- print "<counters>";
- getAllCounters($link, $omode);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $_REQUEST['omode']));
+ print "]]></counters>";
print "</rpc-reply>";
return;
@@ -686,9 +647,9 @@
print "</info-for-headlines>";
- print "<counters>";
- getAllCounters($link, $omode);
- print "</counters>";
+ print "<counters><![CDATA[";
+ print json_encode(getAllCounters($link, $_REQUEST['omode']));
+ print "]]></counters>";
print "</rpc-reply>";
return;