From 673067a52d44cbfc14327d226f4f1c4ce66f737a Mon Sep 17 00:00:00 2001 From: Federico Scodelaro Date: Fri, 10 Oct 2025 19:43:38 -0300 Subject: Last user modified (#7886) * feat: Add user modified functionality Closes https://github.com/FreshRSS/FreshRSS/issues/7862 Changes proposed in this pull request: This is an implementation of the proposed feature. It allows entries to have a new field that will be updated whenever an item is marked as read/unread or bookmark/removed from bookmarks. And a new sort criteria to sort by it. How to test the feature manually: 1. Mark items from a feed as read/unread 2. Mark items from a feed as bookmark / remove bookmark 3. Sort by the new criteria * feat: Add sort functionality * feat: Add sort nav button * fix: Use correct migrations * fix: Add internationalization * fix: Linter errors * chore: PR comments * Update app/i18n/fr/index.php Co-authored-by: Alexandre Alapetite * Update app/i18n/pl/index.php Co-authored-by: Inverle * Update app/i18n/nl/index.php Co-authored-by: Frans de Jonge * make fix-all * Fixes * More fixes sort * Fix wrong index * Fix unneeded column * Fix auto-create indexes * Some copilot suggestions * One more fix Co-authored-by: Alexandre Alapetite --------- Co-authored-by: Alexandre Alapetite Co-authored-by: Inverle Co-authored-by: Frans de Jonge --- app/SQL/install.sql.pgsql.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app/SQL/install.sql.pgsql.php') diff --git a/app/SQL/install.sql.pgsql.php b/app/SQL/install.sql.pgsql.php index 5ea59b828..557a42a34 100644 --- a/app/SQL/install.sql.pgsql.php +++ b/app/SQL/install.sql.pgsql.php @@ -44,6 +44,7 @@ CREATE TABLE IF NOT EXISTS `_entry` ( "link" VARCHAR(16383) NOT NULL, "date" BIGINT, "lastSeen" BIGINT DEFAULT 0, + "lastUserModified" BIGINT DEFAULT 0, "hash" BYTEA, "is_read" SMALLINT NOT NULL DEFAULT 0, "is_favorite" SMALLINT NOT NULL DEFAULT 0, @@ -57,6 +58,7 @@ CREATE INDEX IF NOT EXISTS `_is_favorite_index` ON `_entry` ("is_favorite"); CREATE INDEX IF NOT EXISTS `_is_read_index` ON `_entry` ("is_read"); CREATE INDEX IF NOT EXISTS `_entry_lastSeen_index` ON `_entry` ("lastSeen"); CREATE INDEX IF NOT EXISTS `_entry_feed_read_index` ON `_entry` ("id_feed","is_read"); -- v1.7 +CREATE INDEX IF NOT EXISTS `_entry_last_user_modified_index` ON `_entry` ("lastUserModified"); -- v1.28.0 INSERT INTO `_category` (id, name) SELECT 1, 'Uncategorized' @@ -98,6 +100,11 @@ CREATE TABLE IF NOT EXISTS `_entrytag` ( CREATE INDEX IF NOT EXISTS `_entrytag_id_entry_index` ON `_entrytag` ("id_entry"); SQL; +$GLOBALS['ALTER_TABLE_ENTRY_LAST_USER_MODIFIED'] = <<<'SQL' +ALTER TABLE `_entry` ADD `lastUserModified` BIGINT DEFAULT 0; -- 1.28.0 +CREATE INDEX IF NOT EXISTS `_entry_last_user_modified_index` ON `_entry` (`lastUserModified`); +SQL; + $GLOBALS['SQL_DROP_TABLES'] = <<<'SQL' DROP TABLE IF EXISTS `_entrytag`, `_tag`, `_entrytmp`, `_entry`, `_feed`, `_category`; SQL; -- cgit v1.2.3