X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=modules%2Fbackend-rpc.php;h=228d45a78eabbdecbb5ae41f54cd30042793f9cf;hb=6a7817c1ad684ea6eb0b02180e6d2040b3cb0a77;hp=8b125212756c432187a6491764fd2825f034b750;hpb=0a6e5382cfd59f2cbfeefd0bfd7d9af1408236df;p=tt-rss.git diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 8b125212..228d45a7 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -3,11 +3,143 @@ $subop = $_REQUEST["subop"]; - if ($subop == "setpref") { - if (WEB_DEMO_MODE) { + if ($subop == "setprofile") { + $id = db_escape_string($_REQUEST["id"]); + + $_SESSION["profile"] = $id; + $_SESSION["prefs_cache"] = array(); + return; + } + + if ($subop == "remprofiles") { + $ids = split(",", db_escape_string(trim($_REQUEST["ids"]))); + + foreach ($ids as $id) { + if ($_SESSION["profile"] != $id) { + db_query($link, "DELETE FROM ttrss_settings_profiles WHERE id = '$id' AND + owner_uid = " . $_SESSION["uid"]); + } + } + return; + } + + if ($subop == "addprofile") { + $title = db_escape_string(trim($_REQUEST["title"])); + if ($title) { + db_query($link, "BEGIN"); + + $result = db_query($link, "SELECT id FROM ttrss_settings_profiles + WHERE title = '$title' AND owner_uid = " . $_SESSION["uid"]); + + if (db_num_rows($result) == 0) { + + db_query($link, "INSERT INTO ttrss_settings_profiles (title, owner_uid) + VALUES ('$title', ".$_SESSION["uid"] .")"); + + $result = db_query($link, "SELECT id FROM ttrss_settings_profiles WHERE + title = '$title'"); + + if (db_num_rows($result) != 0) { + $profile_id = db_fetch_result($result, 0, "id"); + + if ($profile_id) { + initialize_user_prefs($link, $_SESSION["uid"], $profile_id); + } + } + } + + db_query($link, "COMMIT"); + } + return; + } + + if ($subop == "saveprofile") { + $id = db_escape_string($_REQUEST["id"]); + $title = db_escape_string(trim($_REQUEST["value"])); + + if ($id == 0) { + print __("Default profile"); return; } + if ($title) { + db_query($link, "BEGIN"); + + $result = db_query($link, "SELECT id FROM ttrss_settings_profiles + WHERE title = '$title' AND owner_uid =" . $_SESSION["uid"]); + + if (db_num_rows($result) == 0) { + db_query($link, "UPDATE ttrss_settings_profiles + SET title = '$title' WHERE id = '$id' AND + owner_uid = " . $_SESSION["uid"]); + print $title; + } else { + $result = db_query($link, "SELECT title FROM ttrss_settings_profiles + WHERE id = '$id' AND owner_uid =" . $_SESSION["uid"]); + print db_fetch_result($result, 0, "title"); + } + + db_query($link, "COMMIT"); + } + return; + } + + if ($subop == "remarchive") { + $ids = split(",", db_escape_string($_REQUEST["ids"])); + + print ""; + + 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"]); + + $rc = db_affected_rows($link, $result); + + print ""; + + } + + print ""; + + return; + } + + 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 ""; + print ""; + + return; + + } + + if ($subop == "togglepref") { + 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"]); @@ -24,12 +156,11 @@ if ($subop == "getAllCounters") { print ""; - print ""; + print ""; + print "]]>"; print_runtime_info($link); print ""; @@ -51,14 +182,9 @@ $result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - print ""; - getGlobalCounters($link); - getVirtCounters($link); - getLabelCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; + print ""; return; } @@ -69,13 +195,9 @@ $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - print ""; - getGlobalCounters($link); - getVirtCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; + print ""; return; } @@ -87,13 +209,9 @@ SET feed_id = orig_feed_id, orig_feed_id = NULL WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - print ""; - getGlobalCounters($link); - getVirtCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; + print ""; return; } @@ -105,13 +223,9 @@ archive_article($link, $id, $_SESSION["uid"]); } - print ""; - getGlobalCounters($link); - getVirtCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; + print ""; return; } @@ -142,14 +256,9 @@ print ""; - print ""; - getGlobalCounters($link); - getVirtCounters($link); - getLabelCounters($link); - if (get_pref($link, 'ENABLE_FEED_CATS')) { - getCategoryCounters($link); - } - print ""; + print ""; if ($note != 'undefined') { $note_size = strlen($note); @@ -166,19 +275,12 @@ if ($subop == "updateFeed") { $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; @@ -191,31 +293,14 @@ print ""; - print ""; + print ""; + print "]]>"; print_runtime_info($link); @@ -233,9 +318,10 @@ catchupArticlesById($link, $ids, $cmode); print ""; - print ""; - getAllCounters($link, $_REQUEST["omode"]); - print ""; + print ""; + print_runtime_info($link); print ""; @@ -250,9 +336,9 @@ markArticlesById($link, $ids, $cmode); print ""; - print ""; - getAllCounters($link, $_REQUEST["omode"]); - print ""; + print ""; print_runtime_info($link); print ""; @@ -267,9 +353,9 @@ publishArticlesById($link, $ids, $cmode); print ""; - print ""; - getAllCounters($link, $_REQUEST["omode"]); - print ""; + print ""; print_runtime_info($link); print ""; @@ -320,6 +406,8 @@ if ($subop == "setArticleTags") { + global $memcache; + $id = db_escape_string($_REQUEST["id"]); $tags_str = db_escape_string($_REQUEST["tags_str"]); @@ -360,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 " @@ -373,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); @@ -384,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); @@ -507,9 +610,9 @@ print ""; - print ""; - getAllCounters($link, $omode); - print ""; + print ""; print ""; return; @@ -544,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"]); @@ -650,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)) { @@ -748,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"]." @@ -784,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"; } ?>