diff options
Diffstat (limited to 'classes/feeds.php')
-rwxr-xr-x | classes/feeds.php | 113 |
1 files changed, 62 insertions, 51 deletions
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; } |