summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend.php10
-rw-r--r--functions.php57
2 files changed, 56 insertions, 11 deletions
diff --git a/backend.php b/backend.php
index f7318ff47..a2f6a0da7 100644
--- a/backend.php
+++ b/backend.php
@@ -398,6 +398,15 @@
print "<error code='$error_code'/>";
}
+
+ if ($subop == "globalPurge") {
+
+ print "<rpc-reply>";
+ global_purge_old_posts($link, true);
+ print "</rpc-reply>";
+
+ }
+
}
if ($op == "feeds") {
@@ -2023,7 +2032,6 @@
}
-
db_close($link);
?>
diff --git a/functions.php b/functions.php
index 730b1fedd..355226e8d 100644
--- a/functions.php
+++ b/functions.php
@@ -9,6 +9,52 @@
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
+ function purge_feed($link, $feed_id, $purge_interval) {
+
+ if (DB_TYPE == "pgsql") {
+ db_query($link, "DELETE FROM ttrss_entries WHERE
+ marked = false AND feed_id = '$feed_id' AND
+ date_entered < NOW() - INTERVAL '$purge_interval days'");
+ } else {
+ db_query($link, "DELETE FROM ttrss_entries WHERE
+ marked = false AND feed_id = '$feed_id' AND
+ date_entered < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)");
+ }
+ }
+
+ function global_purge_old_posts($link, $do_output = false) {
+
+ $result = db_query($link,
+ "SELECT id,purge_interval,owner_uid FROM ttrss_feeds");
+
+ while ($line = db_fetch_assoc($result)) {
+
+ $feed_id = $line["id"];
+ $purge_interval = $line["purge_interval"];
+ $owner_uid = $line["owner_uid"];
+
+ if ($purge_interval == 0) {
+
+ $tmp_result = db_query($link,
+ "SELECT value FROM ttrss_user_prefs WHERE
+ pref_name = 'PURGE_OLD_DAYS' AND owner_uid = '$owner_uid'");
+
+ if (db_num_rows($tmp_result) != 0) {
+ $purge_interval = db_fetch_result($tmp_result, 0, "value");
+ }
+ }
+
+ if ($do_output) {
+ print "<feed id='$feed_id' p_intl='$purge_interval'/>";
+ }
+
+ if ($purge_interval > 0) {
+ purge_feed($link, $feed_id, $purge_interval);
+ }
+ }
+
+ }
+
function purge_old_posts($link) {
$user_id = $_SESSION["uid"];
@@ -24,16 +70,7 @@
if ($purge_interval == 0) $purge_interval = get_pref($link, 'PURGE_OLD_DAYS');
if ($purge_interval > 0) {
-
- if (DB_TYPE == "pgsql") {
- db_query($link, "DELETE FROM ttrss_entries WHERE
- marked = false AND feed_id = '$feed_id' AND
- date_entered < NOW() - INTERVAL '$purge_interval days'");
- } else {
- db_query($link, "DELETE FROM ttrss_entries WHERE
- marked = false AND feed_id = '$feed_id' AND
- date_entered < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)");
- }
+ purge_feed($link, $feed_id, $purge_interval);
}
}
}