From cc0db9af4f980829faa4bf0960617807b32fb4fa Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Wed, 23 Oct 2019 00:52:15 +0200 Subject: Feature/new archiving (#2335) * Change archiving config page layout I've changed some wording and moved actions into a maintenance section. * Update purge action Now we have more control on the purge action. The configuration allows us to choose what to keep and what to discard in a more precise way. At the moment, the configuration applies for all feeds. * Add purge configuration on feed level Now the extend purge configuration is available on feed level. It is stored as attributes and will be used in the purge action. * Update purge action Now the purge action uses the feed configuration if it exists and defaults on user configuration if not. * Add empty option in period list * Fix configuration warnings * Add archiving configuration on categories See #2369 * Add user info back * Add explanations in UI * Fixes for SQLite + error + misc. * Fix invalid feed reference * Short array syntax Only for new code, so far * Fix prefix error * Query performance, default values Work in progress * Fix default values and confirm before leaving Form cancel and confirm changes before leaving were broken. And start taking advantage of the short echo syntax `` as we have moved to PHP 5.4+ * More work * Tuning SQL * Fix MariaDB + performance issue * SQL performance * Fix SQLite bug * Fix some attributes JSON encoding bugs Especially for SQLite export/import * More uniform, fix bugs More uniform between global, category, feed settings * Drop special cases for old articles during refresh Instead will use lastSeen date with the new archiving logic. This was generating problems anyway https://github.com/FreshRSS/FreshRSS/issues/2154 * Draft drop index keep_history Not needed anymore * MySQL typo Now properly tested with MySQL, PostgreSQL, SQLite * More work for legacy values Important to avoid overriding user's preference and risking deleting data erroneously * Fix PHP 7.3 / 7.4 warnings @aledeg "Trying to use values of type null, bool, int, float or resource as an array (such as $null["key"]) will now generate a notice. " https://php.net/migration74.incompatible * Reintroduce min articles and take care of legacy parameters * A few changes forgotten * Draft of migration + DROP of feed.keep_history * Fix several errors And give up using const for SQL to allow multiple database types (and we cannot redefine a const) * Add keep_min to categories + factorise archiving logic * Legacy fix * Fix bug yield from * Minor: Use JSON_UNESCAPED_SLASHE for attributes And make more uniform * Fix sign and missing variable * Fine tune the logic --- app/Models/Context.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'app/Models/Context.php') diff --git a/app/Models/Context.php b/app/Models/Context.php index 95dc47c8c..878b72c69 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -51,6 +51,25 @@ class FreshRSS_Context { // Init configuration. self::$system_conf = Minz_Configuration::get('system'); self::$user_conf = Minz_Configuration::get('user'); + + //Legacy + $oldEntries = (int)FreshRSS_Context::$user_conf->param('old_entries', 0); + if ($oldEntries > 0) { //Freshrss < 1.15 + $archiving['keep_period'] = 'P' . $oldEntries . 'M'; + } + + $keepMin = (int)FreshRSS_Context::$user_conf->param('keep_history_default', -5); + if ($keepMin != 0 && $keepMin > -5) { //Freshrss < 1.15 + $archiving = FreshRSS_Context::$user_conf->archiving; + if ($keepMin > 0) { + $archiving['keep_min'] = $keepMin; + } elseif ($keepMin == -1) { //Infinite + $archiving['keep_period'] = false; + $archiving['keep_max'] = false; + $archiving['keep_min'] = false; + } + FreshRSS_Context::$user_conf->archiving = $archiving; + } } /** -- cgit v1.2.3 From b546d2d77d00af3d6cabb01f6d74535a0390f257 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sat, 26 Oct 2019 17:51:23 +0200 Subject: keep_max disabled by default for existing installations (#2602) https://github.com/FreshRSS/FreshRSS/issues/2600 --- app/Models/Context.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/Models/Context.php') diff --git a/app/Models/Context.php b/app/Models/Context.php index 878b72c69..bfc4299c9 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -59,13 +59,13 @@ class FreshRSS_Context { } $keepMin = (int)FreshRSS_Context::$user_conf->param('keep_history_default', -5); - if ($keepMin != 0 && $keepMin > -5) { //Freshrss < 1.15 + if ($keepMin > -5) { //Freshrss < 1.15 $archiving = FreshRSS_Context::$user_conf->archiving; + $archiving['keep_max'] = false; if ($keepMin > 0) { $archiving['keep_min'] = $keepMin; } elseif ($keepMin == -1) { //Infinite $archiving['keep_period'] = false; - $archiving['keep_max'] = false; $archiving['keep_min'] = false; } FreshRSS_Context::$user_conf->archiving = $archiving; -- cgit v1.2.3 From e4511c3d342c1cc5a9f9bfe8f726ae9aaa451a26 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sun, 27 Oct 2019 18:04:59 +0100 Subject: keep_max disabled by default for existing installations (#2607) Fix https://github.com/FreshRSS/FreshRSS/issues/2600 Second attempt https://github.com/FreshRSS/FreshRSS/pull/2602 --- app/Models/Context.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'app/Models/Context.php') diff --git a/app/Models/Context.php b/app/Models/Context.php index bfc4299c9..e27330665 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -54,14 +54,13 @@ class FreshRSS_Context { //Legacy $oldEntries = (int)FreshRSS_Context::$user_conf->param('old_entries', 0); - if ($oldEntries > 0) { //Freshrss < 1.15 - $archiving['keep_period'] = 'P' . $oldEntries . 'M'; - } - $keepMin = (int)FreshRSS_Context::$user_conf->param('keep_history_default', -5); - if ($keepMin > -5) { //Freshrss < 1.15 + if ($oldEntries > 0 || $keepMin > -5) { //Freshrss < 1.15 $archiving = FreshRSS_Context::$user_conf->archiving; $archiving['keep_max'] = false; + if ($oldEntries > 0) { + $archiving['keep_period'] = 'P' . $oldEntries . 'M'; + } if ($keepMin > 0) { $archiving['keep_min'] = $keepMin; } elseif ($keepMin == -1) { //Infinite -- cgit v1.2.3