summaryrefslogtreecommitdiff
path: root/backend-rpc.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2006-03-29 04:11:48 +0100
committerAndrew Dolgov <[email protected]>2006-03-29 04:11:48 +0100
commit01b3e1919a5c99d21c0db8c13f1883320940c147 (patch)
tree5de4be740ff1b5c10c99a13ccd84f48b2f273002 /backend-rpc.php
parent9d87df8f60f2c049de57faae1c827d457be1e7ea (diff)
split backend rpc, various interface improvements
Diffstat (limited to 'backend-rpc.php')
-rw-r--r--backend-rpc.php202
1 files changed, 202 insertions, 0 deletions
diff --git a/backend-rpc.php b/backend-rpc.php
new file mode 100644
index 000000000..2b2f61279
--- /dev/null
+++ b/backend-rpc.php
@@ -0,0 +1,202 @@
+<?
+ function handle_rpc_request($link) {
+
+ $subop = $_GET["subop"];
+
+ if ($subop == "setpref") {
+ if (WEB_DEMO_MODE) {
+ return;
+ }
+
+ print "<rpc-reply>";
+
+ $key = db_escape_string($_GET["key"]);
+ $value = db_escape_string($_GET["value"]);
+
+ set_pref($link, $key, $value);
+
+ print "<param-set key=\"$key\" value=\"$value\"/>";
+
+ print "</rpc-reply>";
+
+ }
+
+ if ($subop == "getLabelCounters") {
+ $aid = $_GET["aid"];
+ print "<rpc-reply>";
+ getLabelCounters($link);
+ if ($aid) {
+ getFeedCounter($link, $aid);
+ }
+ print "</rpc-reply>";
+ }
+
+ if ($subop == "getFeedCounters") {
+ print "<rpc-reply>";
+ getFeedCounters($link);
+ print "</rpc-reply>";
+ }
+
+ if ($subop == "getAllCounters") {
+ print "<rpc-reply>";
+ getAllCounters($link);
+ print "</rpc-reply>";
+ }
+
+ if ($subop == "mark") {
+ $mark = $_GET["mark"];
+ $id = db_escape_string($_GET["id"]);
+
+ if ($mark == "1") {
+ $mark = "true";
+ } else {
+ $mark = "false";
+ }
+
+ // FIXME this needs collision testing
+
+ $result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ }
+
+ if ($subop == "updateFeed") {
+ $feed_id = db_escape_string($_GET["feed"]);
+
+ $result = db_query($link,
+ "SELECT feed_url FROM ttrss_feeds WHERE id = '$feed_id'
+ AND owner_uid = " . $_SESSION["uid"]);
+
+ if (db_num_rows($result) > 0) {
+ $feed_url = db_fetch_result($result, 0, "feed_url");
+ update_rss_feed($link, $feed_url, $feed_id);
+ }
+
+ print "<rpc-reply>";
+ getFeedCounter($link, $feed_id);
+ print "</rpc-reply>";
+
+ return;
+ }
+
+ if ($subop == "forceUpdateAllFeeds" || $subop == "updateAllFeeds") {
+
+ if (ENABLE_UPDATE_DAEMON) {
+
+ if ($subop == "forceUpdateAllFeeds") {
+
+ $result = db_query($link, "SELECT count(id) AS cid FROM
+ ttrss_scheduled_updates WHERE feed_id IS NULL AND
+ owner_uid = " . $_SESSION["uid"]);
+
+ $cid = db_fetch_result($result, 0, "cid");
+
+ if ($cid == 0) {
+
+ db_query($link, "INSERT INTO ttrss_scheduled_updates
+ (owner_uid, feed_id, entered) VALUES
+ (".$_SESSION["uid"].", NULL, NOW())");
+
+ }
+ }
+
+ } else {
+ update_all_feeds($link, $subop == "forceUpdateAllFeeds");
+ }
+
+ $global_unread_caller = sprintf("%d", $_GET["uctr"]);
+ $global_unread = getGlobalUnread($link);
+
+ print "<rpc-reply>";
+
+ if ($global_unread_caller != $global_unread) {
+
+ $omode = $_GET["omode"];
+
+ if (!$omode) $omode = "tflc";
+
+ if (strchr($omode, "l")) getLabelCounters($link);
+ if (strchr($omode, "f")) getFeedCounters($link);
+ if (strchr($omode, "t")) getTagCounters($link);
+ if (strchr($omode, "c")) {
+ if (get_pref($link, 'ENABLE_FEED_CATS')) {
+ getCategoryCounters($link);
+ }
+ }
+ }
+
+ getGlobalCounters($link, $global_unread);
+
+ print "</rpc-reply>";
+
+ }
+
+ /* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */
+ if ($subop == "catchupSelected") {
+
+ $ids = split(",", db_escape_string($_GET["ids"]));
+
+ $cmode = sprintf("%d", $_GET["cmode"]);
+
+ foreach ($ids as $id) {
+
+ if ($cmode == 0) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ unread = false,last_read = NOW()
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ } else if ($cmode == 1) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ unread = true
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ } else {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ unread = NOT unread,last_read = NOW()
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ }
+ }
+ print "<rpc-reply>";
+ getAllCounters($link);
+ print "</rpc-reply>";
+ }
+
+ if ($subop == "markSelected") {
+
+ $ids = split(",", db_escape_string($_GET["ids"]));
+
+ $cmode = sprintf("%d", $_GET["cmode"]);
+
+ foreach ($ids as $id) {
+
+ if ($cmode == 0) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ marked = false
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ } else if ($cmode == 1) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ marked = true
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ } else {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ marked = NOT marked
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ }
+ }
+ print "<rpc-reply>";
+ getAllCounters($link);
+ print "</rpc-reply>";
+ }
+
+ if ($subop == "sanityCheck") {
+ if (sanity_check($link)) {
+ print "<error error-code=\"0\"/>";
+ }
+ }
+
+ if ($subop == "globalPurge") {
+
+ print "<rpc-reply>";
+ global_purge_old_posts($link, true);
+ print "</rpc-reply>";
+
+ }
+ }
+?>