summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-25 19:53:09 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-25 19:53:09 +0100
commit7eda2793bbc3210ae37aa66511fd7ad7661c2149 (patch)
tree99b6c2173bb0b8a528050aac6fab4e633f6be355
parent0b3d79745d7b8db5dc684f91e0bbad6c1a03d0ee (diff)
Nouveau bouton pour lancer manuellement la purge des vieux articles
Attention, si on supprime des articles qui sont encore dans les flux RSS, ils risquent de réapparaitre en cas de date manquante ou erronée, ou si l'utilisateur augmente la date d'expiration. Ce bouton est plus strict que la purge automatique qui conserve toujours au moins le même nombre d'articles que dans le flux RSS en cours + 10.
-rwxr-xr-xapp/Controllers/entryController.php41
-rwxr-xr-xapp/Controllers/feedController.php2
-rw-r--r--app/Models/FeedDAO.php27
-rw-r--r--app/i18n/en.php2
-rw-r--r--app/i18n/fr.php2
-rw-r--r--app/views/configure/display.phtml1
6 files changed, 62 insertions, 13 deletions
diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php
index a332ca8a9..1c3c56c4d 100755
--- a/app/Controllers/entryController.php
+++ b/app/Controllers/entryController.php
@@ -109,4 +109,45 @@ class FreshRSS_entry_Controller extends Minz_ActionController {
'a' => 'display'
), true);
}
+
+ public function purgeAction() {
+ @set_time_limit(300);
+
+ $nb_month_old = max($this->view->conf->oldEntries(), 1);
+ $date_min = time() - (3600 * 24 * 30 * $nb_month_old);
+
+ $feedDAO = new FreshRSS_FeedDAO();
+ $feeds = $feedDAO->listFeedsOrderUpdate();
+ $nbTotal = 0;
+
+ invalidateHttpCache();
+
+ foreach ($feeds as $feed) {
+ $feedHistory = $feed->keepHistory();
+ if ($feedHistory == -2) { //default
+ $feedHistory = $this->view->conf->keepHistoryDefault();
+ }
+ if ($feedHistory >= 0) {
+ $nb = $feedDAO->cleanOldEntries($feed->id(), $date_min, $feedHistory);
+ if ($nb > 0) {
+ $nbTotal += $nb;
+ Minz_Log::record($nb . ' old entries cleaned in feed ' . $feed->id(), Minz_Log::DEBUG);
+ $feedDAO->updateLastUpdate($feed->id());
+ }
+ }
+ }
+
+ invalidateHttpCache();
+
+ $notif = array(
+ 'type' => 'good',
+ 'content' => Minz_Translate::t('purge_completed', $nbTotal)
+ );
+ Minz_Session::_param('notification', $notif);
+
+ Minz_Request::forward(array(
+ 'c' => 'configure',
+ 'a' => 'display'
+ ), true);
+ }
}
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 836044da6..04d0aa98b 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -192,7 +192,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
}
// on calcule la date des articles les plus anciens qu'on accepte
- $nb_month_old = $this->view->conf->oldEntries ();
+ $nb_month_old = max($this->view->conf->oldEntries(), 1);
$date_min = time () - (3600 * 24 * 30 * $nb_month_old);
$i = 0;
diff --git a/app/Models/FeedDAO.php b/app/Models/FeedDAO.php
index c1d1f24e8..d517f9580 100644
--- a/app/Models/FeedDAO.php
+++ b/app/Models/FeedDAO.php
@@ -315,20 +315,23 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo {
if (isset ($dao['id'])) {
$key = $dao['id'];
}
+ if ($catID === null) {
+ $catID = isset($dao['category']) ? $dao['category'] : 0;
+ }
- $myFeed = new FreshRSS_Feed (isset($dao['url']) ? $dao['url'] : '', false);
- $myFeed->_category ($catID === null ? $dao['category'] : $catID);
- $myFeed->_name ($dao['name']);
- $myFeed->_website ($dao['website'], false);
- $myFeed->_description (isset($dao['description']) ? $dao['description'] : '');
- $myFeed->_lastUpdate (isset($dao['lastUpdate']) ? $dao['lastUpdate'] : 0);
- $myFeed->_priority ($dao['priority']);
- $myFeed->_pathEntries (isset($dao['pathEntries']) ? $dao['pathEntries'] : '');
- $myFeed->_httpAuth (isset($dao['httpAuth']) ? base64_decode ($dao['httpAuth']) : '');
- $myFeed->_error ($dao['error']);
+ $myFeed = new FreshRSS_Feed(isset($dao['url']) ? $dao['url'] : '', false);
+ $myFeed->_category(intval($catID));
+ $myFeed->_name($dao['name']);
+ $myFeed->_website(isset($dao['website']) ? $dao['website'] : '', false);
+ $myFeed->_description(isset($dao['description']) ? $dao['description'] : '');
+ $myFeed->_lastUpdate(isset($dao['lastUpdate']) ? $dao['lastUpdate'] : 0);
+ $myFeed->_priority(isset($dao['priority']) ? $dao['priority'] : 10);
+ $myFeed->_pathEntries(isset($dao['pathEntries']) ? $dao['pathEntries'] : '');
+ $myFeed->_httpAuth(isset($dao['httpAuth']) ? base64_decode ($dao['httpAuth']) : '');
+ $myFeed->_error(isset($dao['error']) ? $dao['error'] : 0);
$myFeed->_keepHistory(isset($dao['keep_history']) ? $dao['keep_history'] : -2);
- $myFeed->_nbNotRead ($dao['cache_nbUnreads']);
- $myFeed->_nbEntries ($dao['cache_nbEntries']);
+ $myFeed->_nbNotRead(isset($dao['cache_nbUnreads']) ? $dao['cache_nbUnreads'] : 0);
+ $myFeed->_nbEntries(isset($dao['cache_nbEntries']) ? $dao['cache_nbEntries'] : 0);
if (isset ($dao['id'])) {
$myFeed->_id ($dao['id']);
}
diff --git a/app/i18n/en.php b/app/i18n/en.php
index ca72d885c..498fccd14 100644
--- a/app/i18n/en.php
+++ b/app/i18n/en.php
@@ -168,6 +168,8 @@ return array (
'login_configuration' => 'Login',
'archiving_configuration' => 'Archiving',
'delete_articles_every' => 'Remove articles after',
+ 'purge_now' => 'Purge now',
+ 'purge_completed' => 'Purge completed (%d articles deleted)',
'archiving_configuration_help' => 'More options are available in the individual stream settings',
'reading_configuration' => 'Reading',
'articles_per_page' => 'Number of articles per page',
diff --git a/app/i18n/fr.php b/app/i18n/fr.php
index 053a97c8a..c918daa44 100644
--- a/app/i18n/fr.php
+++ b/app/i18n/fr.php
@@ -169,6 +169,8 @@ return array (
'login_configuration' => 'Identification',
'archiving_configuration' => 'Archivage',
'delete_articles_every' => 'Supprimer les articles après',
+ 'purge_now' => 'Purger maintenant',
+ 'purge_completed' => 'Purge effectuée (%d articles supprimés)',
'archiving_configuration_help' => 'D’autres options sont disponibles dans la configuration individuelle des flux',
'reading_configuration' => 'Lecture',
'articles_per_page' => 'Nombre d’articles par page',
diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml
index 3280f657f..fca533752 100644
--- a/app/views/configure/display.phtml
+++ b/app/views/configure/display.phtml
@@ -76,6 +76,7 @@
<label class="group-name" for="old_entries"><?php echo Minz_Translate::t ('delete_articles_every'); ?></label>
<div class="group-controls">
<input type="number" id="old_entries" name="old_entries" min="1" max="1200" value="<?php echo $this->conf->oldEntries (); ?>" /> <?php echo Minz_Translate::t ('month'); ?>
+   <a class="btn confirm" href="<?php echo _url('entry', 'purge'); ?>"><?php echo Minz_Translate::t('purge_now'); ?></a>
</div>
</div>
<div class="form-group">