aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-25 20:58:38 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-25 20:58:38 +0100
commit7b4451912e2a9008a49854a2496cf9bb99b7ed10 (patch)
tree99b6c2173bb0b8a528050aac6fab4e633f6be355 /app/Controllers
parent318954dfbd64f7a29203cdb25a95400dea0cec0d (diff)
parent7eda2793bbc3210ae37aa66511fd7ad7661c2149 (diff)
Merge remote-tracking branch 'origin/dev' into beta
Diffstat (limited to 'app/Controllers')
-rwxr-xr-xapp/Controllers/configureController.php10
-rwxr-xr-xapp/Controllers/entryController.php41
-rwxr-xr-xapp/Controllers/feedController.php27
-rwxr-xr-xapp/Controllers/indexController.php5
4 files changed, 62 insertions, 21 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index 8d3e02d3e..762134dd0 100755
--- a/app/Controllers/configureController.php
+++ b/app/Controllers/configureController.php
@@ -97,18 +97,13 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
$description = sanitizeHTML(Minz_Request::param('description', '', true));
$website = Minz_Request::param('website', '');
$url = Minz_Request::param('url', '');
- $hist = Minz_Request::param ('keep_history', 'no');
+ $keep_history = intval(Minz_Request::param ('keep_history', -2));
$cat = Minz_Request::param ('category', 0);
$path = Minz_Request::param ('path_entries', '');
$priority = Minz_Request::param ('priority', 0);
$user = Minz_Request::param ('http_user', '');
$pass = Minz_Request::param ('http_pass', '');
- $keep_history = false;
- if ($hist == 'yes') {
- $keep_history = true;
- }
-
$httpAuth = '';
if ($user != '' || $pass != '') {
$httpAuth = $user . ':' . $pass;
@@ -165,6 +160,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
$lazyload = Minz_Request::param ('lazyload', 'no');
$sort = Minz_Request::param ('sort_order', 'DESC');
$old = Minz_Request::param ('old_entries', 3);
+ $keepHistoryDefault = Minz_Request::param('keep_history_default', 0);
$mail = Minz_Request::param ('mail_login', false);
$anon = Minz_Request::param ('anon_access', 'no');
$token = Minz_Request::param ('token', $current_token);
@@ -194,6 +190,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
$this->view->conf->_lazyload ($lazyload);
$this->view->conf->_sortOrder ($sort);
$this->view->conf->_oldEntries ($old);
+ $this->view->conf->_keepHistoryDefault($keepHistoryDefault);
$this->view->conf->_mailLogin ($mail);
$this->view->conf->_anonAccess ($anon);
$this->view->conf->_token ($token);
@@ -226,6 +223,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
'lazyload' => $this->view->conf->lazyload (),
'sort_order' => $this->view->conf->sortOrder (),
'old_entries' => $this->view->conf->oldEntries (),
+ 'keep_history_default' => $this->view->conf->keepHistoryDefault(),
'mail_login' => $this->view->conf->mailLogin (),
'anon_access' => $this->view->conf->anonAccess (),
'token' => $this->view->conf->token (),
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 27b76dd42..04d0aa98b 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -102,14 +102,11 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$feedDAO->beginTransaction ();
// on ajoute les articles en masse sans vérification
foreach ($entries as $entry) {
- if ($entry->date (true) >= $date_min ||
- $feed->keepHistory ()) {
- $values = $entry->toArray ();
- $values['id_feed'] = $feed->id ();
- $values['id'] = min(time(), $entry->date (true)) . uSecString();
- $values['is_read'] = $is_read;
- $entryDAO->addEntry ($values);
- }
+ $values = $entry->toArray ();
+ $values['id_feed'] = $feed->id ();
+ $values['id'] = min(time(), $entry->date (true)) . uSecString();
+ $values['is_read'] = $is_read;
+ $entryDAO->addEntry ($values);
}
$feedDAO->updateLastUpdate ($feed->id ());
$feedDAO->commit ();
@@ -195,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;
@@ -217,8 +214,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$feedDAO->beginTransaction ();
foreach ($entries as $entry) {
if ((!isset ($existingGuids[$entry->guid ()])) &&
- ($entry->date (true) >= $date_min ||
- $feed->keepHistory ())) {
+ ($entry->date (true) >= $date_min)) {
$values = $entry->toArray ();
//Use declared date at first import, otherwise use discovery date
$values['id'] = empty($existingGuids) ? min(time(), $entry->date (true)) . uSecString() : uTimeString();
@@ -227,8 +223,13 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
}
}
- if ((!$feed->keepHistory()) && (rand(0, 30) === 1)) {
- $nb = $feedDAO->cleanOldEntries ($feed->id (), $date_min, count($entries) + 10);
+ $feedHistory = $feed->keepHistory();
+ if ($feedHistory == -2) { //default
+ $feedHistory = $this->view->conf->keepHistoryDefault();
+ }
+
+ if (($feedHistory >= 0) && (rand(0, 30) === 1)) {
+ $nb = $feedDAO->cleanOldEntries ($feed->id (), $date_min, max($feedHistory, count($entries) + 10));
if ($nb > 0) {
Minz_Log::record ($nb . ' old entries cleaned in feed ' . $feed->id (), Minz_Log::DEBUG);
}
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php
index e3c253518..6c0ba9058 100755
--- a/app/Controllers/indexController.php
+++ b/app/Controllers/indexController.php
@@ -130,16 +130,17 @@ class FreshRSS_index_Controller extends Minz_ActionController {
// on calcule la date des articles les plus anciens qu'on affiche
$nb_month_old = $this->view->conf->oldEntries ();
$date_min = $today - (3600 * 24 * 30 * $nb_month_old); //Do not use a fast changing value such as time() to allow SQL caching
+ $keepHistoryDefault = $this->view->conf->keepHistoryDefault();
try {
- $entries = $this->entryDAO->listWhere($getType, $getId, $state, $order, $nb + 1, $first, $filter, $date_min);
+ $entries = $this->entryDAO->listWhere($getType, $getId, $state, $order, $nb + 1, $first, $filter, $date_min, $keepHistoryDefault);
// Si on a récupéré aucun article "non lus"
// on essaye de récupérer tous les articles
if ($state === 'not_read' && empty($entries)) { //TODO: Remove in v0.8
Minz_Log::record ('Conflicting information about nbNotRead!', Minz_Log::DEBUG);
$this->view->state = 'all';
- $entries = $this->entryDAO->listWhere($getType, $getId, 'all', $order, $nb, $first, $filter, $date_min);
+ $entries = $this->entryDAO->listWhere($getType, $getId, 'all', $order, $nb, $first, $filter, $date_min, $keepHistoryDefault);
}
if (count($entries) <= $nb) {