summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend.php2
-rwxr-xr-xclasses/feeds.php113
-rwxr-xr-xclasses/pref/feeds.php14
3 files changed, 75 insertions, 54 deletions
diff --git a/backend.php b/backend.php
index 4c93f9b6d..4ee4b7862 100644
--- a/backend.php
+++ b/backend.php
@@ -56,7 +56,7 @@
$purge_intervals = array(
0 => __("Use default"),
-1 => __("Never purge"),
- 5 => __("1 week old"),
+ 7 => __("1 week old"),
14 => __("2 weeks old"),
31 => __("1 month old"),
60 => __("2 months old"),
diff --git a/classes/feeds.php b/classes/feeds.php
index b8c5227aa..71ff9a8f4 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -791,8 +791,10 @@ class Feeds extends Handler_Protected {
function update_debugger() {
header("Content-type: text/html");
+ $xdebug = isset($_REQUEST["xdebug"]) ? (int)$_REQUEST["xdebug"] : 1;
+
Debug::set_enabled(true);
- Debug::set_loglevel($_REQUEST["xdebug"]);
+ Debug::set_loglevel($xdebug);
$feed_id = (int)$_REQUEST["feed_id"];
@$do_update = $_REQUEST["action"] == "do_update";
@@ -833,7 +835,7 @@ class Feeds extends Handler_Protected {
</head>
<body class="flat ttrss_utility feed_debugger css_loading">
<script type="text/javascript">
- require(['dojo/parser', "dojo/ready", 'dijit/form/Button','dijit/form/CheckBox', 'dijit/form/Form',
+ require(['dojo/parser', "dojo/ready", 'dijit/form/Button','dijit/form/CheckBox', 'dijit/form/Select', 'dijit/form/Form',
'dijit/form/Select','dijit/form/TextBox','dijit/form/ValidationTextBox'],function(parser, ready){
ready(function() {
parser.parse();
@@ -847,12 +849,19 @@ class Feeds extends Handler_Protected {
<form method="post" action="">
<input type="hidden" name="op" value="feeds">
<input type="hidden" name="method" value="update_debugger">
- <input type="hidden" name="xdebug" value="1">
<input type="hidden" name="csrf_token" value="<?php echo $csrf_token ?>">
<input type="hidden" name="action" value="do_update">
<input type="hidden" name="feed_id" value="<?php echo $feed_id ?>">
- <fieldset class="narrow">
+ <fieldset>
+ <label>
+ <?php print_select_hash("xdebug", $xdebug,
+ [Debug::$LOG_VERBOSE => "LOG_VERBOSE", Debug::$LOG_EXTENDED => "LOG_EXTENDED"],
+ 'dojoType="dijit.form.Select"');
+ ?></label>
+ </fieldset>
+
+ <fieldset>
<label class="checkbox"><input dojoType="dijit.form.CheckBox" type="checkbox" name="force_refetch" value="1" <?php echo $refetch_checked ?>> Force refetch</label>
</fieldset>
@@ -2095,12 +2104,10 @@ class Feeds extends Handler_Protected {
/**
* Purge a feed old posts.
*
- * @param mixed $link A database connection.
* @param mixed $feed_id The id of the purged feed.
* @param mixed $purge_interval Olderness of purged posts.
- * @param boolean $debug Set to True to enable the debug. False by default.
* @access public
- * @return void
+ * @return mixed
*/
static function purge_feed($feed_id, $purge_interval) {
@@ -2108,63 +2115,68 @@ class Feeds extends Handler_Protected {
$pdo = Db::pdo();
+ $owner_uid = false;
+ $rows_deleted = 0;
+
$sth = $pdo->prepare("SELECT owner_uid FROM ttrss_feeds WHERE id = ?");
$sth->execute([$feed_id]);
- $owner_uid = false;
-
if ($row = $sth->fetch()) {
$owner_uid = $row["owner_uid"];
- }
- if ($purge_interval == -1 || !$purge_interval) {
- return;
- }
+ if (FORCE_ARTICLE_PURGE != 0) {
+ Debug::log("purge_feed: FORCE_ARTICLE_PURGE is set, overriding interval to " . FORCE_ARTICLE_PURGE);
+ $purge_unread = true;
+ $purge_interval = FORCE_ARTICLE_PURGE;
+ } else {
+ $purge_unread = get_pref("PURGE_UNREAD_ARTICLES", $owner_uid, false);
+ }
- if (!$owner_uid) return;
+ $purge_interval = (int) $purge_interval;
- if (FORCE_ARTICLE_PURGE == 0) {
- $purge_unread = get_pref("PURGE_UNREAD_ARTICLES",
- $owner_uid, false);
- } else {
- $purge_unread = true;
- $purge_interval = FORCE_ARTICLE_PURGE;
- }
+ Debug::log("purge_feed: interval $purge_interval days for feed $feed_id, owner: $owner_uid, purge unread: $purge_unread");
- if (!$purge_unread)
- $query_limit = " unread = false AND ";
- else
- $query_limit = "";
+ if ($purge_interval <= 0) {
+ Debug::log("purge_feed: purging disabled for this feed, nothing to do.");
+ return;
+ }
- $purge_interval = (int) $purge_interval;
+ if (!$purge_unread)
+ $query_limit = " unread = false AND ";
+ else
+ $query_limit = "";
- if (DB_TYPE == "pgsql") {
- $sth = $pdo->prepare("DELETE FROM ttrss_user_entries
- USING ttrss_entries
- WHERE ttrss_entries.id = ref_id AND
- marked = false AND
- feed_id = ? AND
- $query_limit
- ttrss_entries.date_updated < NOW() - INTERVAL '$purge_interval days'");
- $sth->execute([$feed_id]);
+ if (DB_TYPE == "pgsql") {
+ $sth = $pdo->prepare("DELETE FROM ttrss_user_entries
+ USING ttrss_entries
+ WHERE ttrss_entries.id = ref_id AND
+ marked = false AND
+ feed_id = ? AND
+ $query_limit
+ ttrss_entries.date_updated < NOW() - INTERVAL '$purge_interval days'");
+ $sth->execute([$feed_id]);
- } else {
- $sth = $pdo->prepare("DELETE FROM ttrss_user_entries
- USING ttrss_user_entries, ttrss_entries
- WHERE ttrss_entries.id = ref_id AND
- marked = false AND
- feed_id = ? AND
- $query_limit
- ttrss_entries.date_updated < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)");
- $sth->execute([$feed_id]);
+ } else {
+ $sth = $pdo->prepare("DELETE FROM ttrss_user_entries
+ USING ttrss_user_entries, ttrss_entries
+ WHERE ttrss_entries.id = ref_id AND
+ marked = false AND
+ feed_id = ? AND
+ $query_limit
+ ttrss_entries.date_updated < DATE_SUB(NOW(), INTERVAL $purge_interval DAY)");
+ $sth->execute([$feed_id]);
- }
+ }
+
+ $rows_deleted = $sth->rowCount();
- $rows = $sth->rowCount();
+ Debug::log("purge_feed: deleted $rows_deleted articles.");
- Debug::log("Purged feed $feed_id ($purge_interval): deleted $rows articles");
+ } else {
+ Debug::log("purge_feed: owner of $feed_id not found");
+ }
- return $rows;
+ return $rows_deleted;
}
static function feed_purge_interval($feed_id) {
@@ -2179,11 +2191,10 @@ class Feeds extends Handler_Protected {
$purge_interval = $row["purge_interval"];
$owner_uid = $row["owner_uid"];
- if ($purge_interval == 0) $purge_interval = get_pref(
- 'PURGE_OLD_DAYS', $owner_uid);
+ if ($purge_interval == 0)
+ $purge_interval = get_pref('PURGE_OLD_DAYS', $owner_uid, false);
return $purge_interval;
-
} else {
return -1;
}
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index b19d161fd..fb9925956 100755
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -637,7 +637,12 @@ class Pref_Feeds extends Handler_Protected {
print "<label>" . __('Article purging:') . "</label> ";
$local_purge_intervals = $purge_intervals;
- $local_purge_intervals[0] .= " " . T_sprintf("(%d days)", get_pref("PURGE_OLD_DAYS"));
+ $default_purge_interval = get_pref("PURGE_OLD_DAYS");
+
+ if ($default_purge_interval > 0)
+ $local_purge_intervals[0] .= " " . T_sprintf("(%d days)", $default_purge_interval);
+ else
+ $local_purge_intervals[0] .= " " . sprintf("(%s)", __("Disabled"));
print_select_hash("purge_interval", $purge_interval, $local_purge_intervals,
'dojoType="fox.form.Select" ' .
@@ -884,7 +889,12 @@ class Pref_Feeds extends Handler_Protected {
print "<label>" . __('Article purging:') . "</label> ";
$local_purge_intervals = $purge_intervals;
- $local_purge_intervals[0] .= " " . T_sprintf("(%d days)", get_pref("PURGE_OLD_DAYS"));
+ $default_purge_interval = get_pref("PURGE_OLD_DAYS");
+
+ if ($default_purge_interval > 0)
+ $local_purge_intervals[0] .= " " . T_sprintf("(%d days)", $default_purge_interval);
+ else
+ $local_purge_intervals[0] .= " " . sprintf("(%s)", __("Disabled"));
print_select_hash("purge_interval", "", $local_purge_intervals,
'disabled="1" dojoType="fox.form.Select"');