X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=modules%2Fbackend-rpc.php;h=228d45a78eabbdecbb5ae41f54cd30042793f9cf;hb=6a7817c1ad684ea6eb0b02180e6d2040b3cb0a77;hp=1a65efc025f06277db552e6e10ec3c3d03fd1ce3;hpb=7a13338b4c9ee0f421a9e182e83cb2d8f458774e;p=tt-rss.git diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 1a65efc0..228d45a7 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -1,46 +1,154 @@ "; - $key = db_escape_string($_GET["key"]); - $value = db_escape_string($_GET["value"]); + foreach ($ids as $id) { + $result = db_query($link, "DELETE FROM ttrss_archived_feeds WHERE + (SELECT COUNT(*) FROM ttrss_user_entries + WHERE orig_feed_id = '$id') = 0 AND + id = '$id' AND owner_uid = ".$_SESSION["uid"]); - set_pref($link, $key, $value); + $rc = db_affected_rows($link, $result); - print ""; + print ""; + + } print ""; return; } - if ($subop == "getLabelCounters") { - $aid = $_GET["aid"]; + if ($subop == "addfeed") { + + $feed = db_escape_string($_REQUEST['feed']); + $cat = db_escape_string($_REQUEST['cat']); + $login = db_escape_string($_REQUEST['login']); + $pass = db_escape_string($_REQUEST['pass']); + + $rc = subscribe_to_feed($link, $feed, $cat, $login, $pass); + print ""; - print ""; - getLabelCounters($link); - if ($aid) { - getFeedCounter($link, $aid); - } - print ""; + print ""; print ""; return; + } - if ($subop == "getFeedCounters") { + if ($subop == "togglepref") { print ""; - print ""; - getFeedCounters($link); - print ""; + + $key = db_escape_string($_REQUEST["key"]); + + set_pref($link, $key, !get_pref($link, $key)); + + $value = get_pref($link, $key); + + print ""; + + print ""; + + return; + } + + if ($subop == "setpref") { + print ""; + + $key = db_escape_string($_REQUEST["key"]); + $value = db_escape_string($_REQUEST["value"]); + + set_pref($link, $key, $value); + + print ""; + print ""; return; @@ -48,12 +156,11 @@ if ($subop == "getAllCounters") { print ""; - print ""; + print ""; + print "]]>"; print_runtime_info($link); print ""; @@ -61,8 +168,8 @@ } if ($subop == "mark") { - $mark = $_GET["mark"]; - $id = db_escape_string($_GET["id"]); + $mark = $_REQUEST["mark"]; + $id = db_escape_string($_REQUEST["id"]); if ($mark == "1") { $mark = "true"; @@ -75,17 +182,55 @@ $result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - print ""; - getGlobalCounters($link); - getLabelCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); + print ""; + + return; + } + + if ($subop == "delete") { + $ids = db_escape_string($_REQUEST["ids"]); + + $result = db_query($link, "DELETE FROM ttrss_user_entries + WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); + + print ""; + + return; + } + + if ($subop == "unarchive") { + $ids = db_escape_string($_REQUEST["ids"]); + + $result = db_query($link, "UPDATE ttrss_user_entries + SET feed_id = orig_feed_id, orig_feed_id = NULL + WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); + + print ""; + + return; + } + + if ($subop == "archive") { + $ids = split(",", db_escape_string($_REQUEST["ids"])); + + foreach ($ids as $id) { + archive_article($link, $id, $_SESSION["uid"]); } - print ""; + + print ""; return; } + if ($subop == "publ") { $pub = $_REQUEST["pub"]; $id = db_escape_string($_REQUEST["id"]); @@ -111,13 +256,9 @@ print ""; - print ""; - getGlobalCounters($link); - getLabelCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; + print ""; if ($note != 'undefined') { $note_size = strlen($note); @@ -132,21 +273,14 @@ } if ($subop == "updateFeed") { - $feed_id = db_escape_string($_GET["feed"]); + $feed_id = db_escape_string($_REQUEST["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); - } + update_rss_feed($link, $feed_id); print ""; - print ""; - getFeedCounter($link, $feed_id); - print ""; + print ""; print ""; return; @@ -154,34 +288,19 @@ if ($subop == "forceUpdateAllFeeds" || $subop == "updateAllFeeds") { - $global_unread_caller = sprintf("%d", $_GET["uctr"]); + $global_unread_caller = sprintf("%d", $_REQUEST["uctr"]); $global_unread = getGlobalUnread($link); print ""; - print ""; + print ""; + print "]]>"; print_runtime_info($link); @@ -199,9 +318,10 @@ catchupArticlesById($link, $ids, $cmode); print ""; - print ""; - getAllCounters($link, $_GET["omode"]); - print ""; + print ""; + print_runtime_info($link); print ""; @@ -210,15 +330,15 @@ if ($subop == "markSelected") { - $ids = split(",", db_escape_string($_GET["ids"])); - $cmode = sprintf("%d", $_GET["cmode"]); + $ids = split(",", db_escape_string($_REQUEST["ids"])); + $cmode = sprintf("%d", $_REQUEST["cmode"]); markArticlesById($link, $ids, $cmode); print ""; - print ""; - getAllCounters($link, $_GET["omode"]); - print ""; + print ""; print_runtime_info($link); print ""; @@ -227,15 +347,15 @@ if ($subop == "publishSelected") { - $ids = split(",", db_escape_string($_GET["ids"])); - $cmode = sprintf("%d", $_GET["cmode"]); + $ids = split(",", db_escape_string($_REQUEST["ids"])); + $cmode = sprintf("%d", $_REQUEST["cmode"]); publishArticlesById($link, $ids, $cmode); print ""; - print ""; - getAllCounters($link, $_GET["omode"]); - print ""; + print ""; print_runtime_info($link); print ""; @@ -250,7 +370,7 @@ print_runtime_info($link); # assign client-passed params to session - $_SESSION["client.userAgent"] = $_GET["ua"]; + $_SESSION["client.userAgent"] = $_REQUEST["ua"]; } print ""; @@ -269,7 +389,7 @@ if ($subop == "getArticleLink") { - $id = db_escape_string($_GET["id"]); + $id = db_escape_string($_REQUEST["id"]); $result = db_query($link, "SELECT link FROM ttrss_entries, ttrss_user_entries WHERE id = '$id' AND id = ref_id AND owner_uid = '".$_SESSION['uid']."'"); @@ -286,9 +406,11 @@ if ($subop == "setArticleTags") { - $id = db_escape_string($_GET["id"]); + global $memcache; - $tags_str = db_escape_string($_GET["tags_str"]); + $id = db_escape_string($_REQUEST["id"]); + + $tags_str = db_escape_string($_REQUEST["tags_str"]); $tags = array_unique(trim_array(split(",", $tags_str))); @@ -326,6 +448,11 @@ db_query($link, "COMMIT"); + if ($memcache) { + $obj_id = md5("TAGS:".$_SESSION["uid"].":$id"); + $memcache->delete($obj_id); + } + $tags_str = format_tags_string(get_article_tags($link, $id), $id); print " @@ -339,7 +466,7 @@ print ""; - set_pref($link, "_PREFS_PUBLISH_KEY", generate_publish_key()); + set_pref($link, "_PREFS_PUBLISH_KEY", generate_publish_key(), $_SESSION["uid"]); $new_link = article_publish_url($link); @@ -350,6 +477,16 @@ return; } + if ($subop == "regenOPMLKey") { + + print ""; + set_pref($link, " _PREFS_OPML_PUBLISH_KEY", generate_publish_key(), $_SESSION["uid"]); + $new_link = opml_publish_url($link); + print ""; + print ""; + return; + } + if ($subop == "logout") { logout_user(); print_error_xml(6); @@ -375,8 +512,8 @@ } if ($subop == "purge") { - $ids = split(",", db_escape_string($_GET["ids"])); - $days = sprintf("%d", $_GET["days"]); + $ids = split(",", db_escape_string($_REQUEST["ids"])); + $days = sprintf("%d", $_REQUEST["days"]); print ""; @@ -473,9 +610,9 @@ print ""; - print ""; - getAllCounters($link, $omode); - print ""; + print ""; print ""; return; @@ -510,31 +647,84 @@ print ""; - print ""; - getAllCounters($link, $omode); - print ""; + print ""; print ""; return; } - if ($subop == "feedBrowser") { + if ($subop == "updateFeedBrowser") { $search = db_escape_string($_REQUEST["search"]); $limit = db_escape_string($_REQUEST["limit"]); + $mode = db_escape_string($_REQUEST["mode"]); print ""; print ""; print ""; print ""; print ""; + print ""; print ""; return; } + + if ($subop == "massSubscribe") { + + $ids = split(",", db_escape_string($_REQUEST["ids"])); + $mode = $_REQUEST["mode"]; + + $subscribed = array(); + + foreach ($ids as $id) { + + if ($mode == 1) { + $result = db_query($link, "SELECT feed_url,title FROM ttrss_feeds + WHERE id = '$id'"); + } else if ($mode == 2) { + $result = db_query($link, "SELECT * FROM ttrss_archived_feeds + WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]); + $orig_id = db_escape_string(db_fetch_result($result, 0, "id")); + $site_url = db_escape_string(db_fetch_result($result, 0, "site_url")); + } + + $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url")); + $title = db_escape_string(db_fetch_result($result, 0, "title")); + + $title_orig = db_fetch_result($result, 0, "title"); + + $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE + feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) == 0) { + if ($mode == 1) { + $result = db_query($link, + "INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id) + VALUES ('".$_SESSION["uid"]."', '$feed_url', '$title', NULL)"); + } else if ($mode == 2) { + $result = db_query($link, + "INSERT INTO ttrss_feeds (id,owner_uid,feed_url,title,cat_id,site_url) + VALUES ('$orig_id','".$_SESSION["uid"]."', '$feed_url', '$title', NULL, '$site_url')"); + } + array_push($subscribed, $title_orig); + } + } + + $num_feeds = count($subscribed); + + print ""; + print ""; + print ""; + + return; + } + if ($subop == "download") { $stage = (int) $_REQUEST["stage"]; $cidt = (int)db_escape_string($_REQUEST["cidt"]); @@ -544,6 +734,9 @@ //$unread_only = db_escape_string($_REQUEST["unread_only"]); //if (!$amount) $amount = 50; + /* Amount is not used by the frontend offline.js anymore, it goes by + * date_qpart below + cidb/cidt IDs */ + $amount = 2000; $unread_only = true; @@ -613,7 +806,7 @@ print ""; $result = db_query($link, "SELECT id, title, cat_id FROM - ttrss_feeds WHERE hidden = false AND owner_uid = ".$_SESSION["uid"]); + ttrss_feeds WHERE owner_uid = ".$_SESSION["uid"]); while ($line = db_fetch_assoc($result)) { @@ -633,17 +826,17 @@ ttrss_feed_categories WHERE owner_uid = ".$_SESSION["uid"]); print ""; print ""; print ""; @@ -680,7 +873,7 @@ if ($stage > 0) { print ""; - $limit = 200; + $limit = 10; $skip = $limit*($stage-1); print ""; @@ -700,9 +893,9 @@ } if (DB_TYPE == "pgsql") { - $date_qpart = "updated >= NOW() - INTERVAL '1 month' AND"; + $date_qpart = "updated >= NOW() - INTERVAL '1 week' AND"; } else { - $date_qpart = "updated >= DATE_SUB(NOW(), INTERVAL 1 MONTH) AND"; + $date_qpart = "updated >= DATE_SUB(NOW(), INTERVAL 1 WEEK) AND"; } $result = db_query($link, @@ -711,7 +904,6 @@ feed_id,content,updated,unread,marked FROM ttrss_user_entries,ttrss_entries,ttrss_feeds WHERE $unread_qpart $cid_qpart $date_qpart - hidden = false AND ttrss_feeds.id = feed_id AND ref_id = ttrss_entries.id AND ttrss_user_entries.owner_uid = ".$_SESSION["uid"]." @@ -747,6 +939,84 @@ return; } + if ($subop == "digest-get-contents") { + $article_id = db_escape_string($_REQUEST['article_id']); + + $result = db_query($link, "SELECT content + FROM ttrss_entries, ttrss_user_entries + WHERE id = '$article_id' AND ref_id = id AND owner_uid = ".$_SESSION['uid']); + + print ""; + + print "
"; + + print "
"; + + return; + } + + if ($subop == "digest-update") { + $feed_id = db_escape_string($_REQUEST['feed_id']); + $offset = db_escape_string($_REQUEST['offset']); + $seq = db_escape_string($_REQUEST['seq']); + + if (!$feed_id) $feed_id = -4; + if (!$offset) $offset = 0; + print ""; + + print "$seq"; + + $headlines = api_get_headlines($link, $feed_id, 10, $offset, + '', ($feed_id == -4), true, false, "unread", "updated DESC"); + + //function api_get_headlines($link, $feed_id, $limit, $offset, + // $filter, $is_cat, $show_excerpt, $show_content, $view_mode) { + + print ""; + + print ""; + + print ""; + return; + } + + if ($subop == "digest-init") { + print ""; + + $tmp_feeds = api_get_feeds($link, false, true, false, 0); + $feeds = array(); + + foreach ($tmp_feeds as $f) { + if ($f['id'] > 0 || $f['id'] == -4) array_push($feeds, $f); + } + + print ""; + + print ""; + return; + } + + if ($subop == "catchupFeed") { + + $feed_id = db_escape_string($_REQUEST['feed_id']); + $is_cat = db_escape_string($_REQUEST['is_cat']); + + print ""; + + catchup_feed($link, $feed_id, $is_cat); + + print ""; + + return; + } + print "Unknown method: $subop"; } ?>