From 472782e8bff08df698a3c3f87ee3fc9f7e16b06f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 19 Sep 2006 05:14:27 +0100 Subject: [PATCH] optimize catchup selected, add CatchupSelected subop in viewfeed --- backend-rpc.php | 19 ++----------------- backend.php | 7 +++++++ db.php | 2 +- functions.php | 26 ++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/backend-rpc.php b/backend-rpc.php index e7b42244a..6de87aa84 100644 --- a/backend-rpc.php +++ b/backend-rpc.php @@ -144,30 +144,15 @@ print ""; } - + /* 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) { + catchupArticlesById($link, $ids, $cmode); - 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 ""; print ""; getAllCounters($link); diff --git a/backend.php b/backend.php index 7d13184b8..4e0dfccb7 100644 --- a/backend.php +++ b/backend.php @@ -696,6 +696,13 @@ type=\"text/css\" href=\"tt-rss_compact.css\"/>"; } + if ($subop == "CatchupSelected") { + $ids = split(",", db_escape_string($_GET["ids"])); + $cmode = sprintf("%d", $_GET["cmode"]); + + catchupArticlesById($link, $ids, $cmode); + } + if ($subop == "ForceUpdate" && sprintf("%d", $feed) > 0) { update_generic_feed($link, $feed, $cat_view); } diff --git a/db.php b/db.php index 6d998bd6f..d8187fc3b 100644 --- a/db.php +++ b/db.php @@ -61,7 +61,7 @@ function db_query($link, $query, $die_on_error = true) { if (!$result) { $query = htmlspecialchars($query); // just in case if ($die_on_error) { - die("Query $query failed: " . pg_last_error($link)); + die("Query $query failed [$result]: " . pg_last_error($link)); } } return $result; diff --git a/functions.php b/functions.php index 03e511d9f..bb80cac57 100644 --- a/functions.php +++ b/functions.php @@ -2586,4 +2586,30 @@ } } } + + function catchupArticlesById($link, $ids, $cmode) { + + $tmp_ids = array(); + + foreach ($ids as $id) { + array_push($tmp_ids, "ref_id = '$id'"); + } + + $ids_qpart = join(" OR ", $tmp_ids); + + if ($cmode == 0) { + db_query($link, "UPDATE ttrss_user_entries SET + unread = false,last_read = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } else if ($cmode == 1) { + db_query($link, "UPDATE ttrss_user_entries SET + unread = true + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } else { + db_query($link, "UPDATE ttrss_user_entries SET + unread = NOT unread,last_read = NOW() + WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); + } + } + ?>