summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions.php31
-rw-r--r--modules/backend-rpc.php8
2 files changed, 35 insertions, 4 deletions
diff --git a/functions.php b/functions.php
index 8650ceb9c..e8682ca37 100644
--- a/functions.php
+++ b/functions.php
@@ -6407,4 +6407,35 @@
ccache_remove($link, $id, $owner_uid, true);
}
+ function archive_article($link, $id, $owner_uid) {
+ db_query($link, "BEGIN");
+
+ $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries
+ WHERE ref_id = '$id' AND owner_uid = $owner_uid");
+
+ if (db_num_rows($result) != 0) {
+
+ /* prepare the archived table */
+
+ $feed_id = (int) db_fetch_result($result, 0, "feed_id");
+
+ if ($feed_id) {
+ $result = db_query($link, "SELECT id FROM ttrss_archived_feeds
+ WHERE id = '$feed_id'");
+
+ if (db_num_rows($result) == 0) {
+ db_query($link, "INSERT INTO ttrss_archived_feeds
+ (id, owner_uid, title, feed_url, site_url)
+ SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds
+ WHERE id = '$feed_id'");
+ }
+
+ db_query($link, "UPDATE ttrss_user_entries
+ SET orig_feed_id = feed_id, feed_id = NULL
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ }
+ }
+
+ db_query($link, "COMMIT");
+ }
?>
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index 326c669fb..7374241ca 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -120,11 +120,11 @@
}
if ($subop == "archive") {
- $ids = db_escape_string($_GET["ids"]);
+ $ids = split(",", db_escape_string($_GET["ids"]));
- $result = db_query($link, "UPDATE ttrss_user_entries
- SET orig_feed_id = feed_id, feed_id = NULL, marked = true
- WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
+ foreach ($ids as $id) {
+ archive_article($link, $id, $_SESSION["uid"]);
+ }
print "<rpc-reply><counters>";
getGlobalCounters($link);