From 71604ca4e9a25a0c65674a92e00e396c92c2c848 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 19 Nov 2005 11:32:59 +0100 Subject: [PATCH] new option - ALLOW_DUPLICATE_POSTS --- functions.php | 22 +++++++++++++++++----- schema/ttrss_schema_mysql.sql | 4 ++++ schema/ttrss_schema_pgsql.sql | 4 ++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/functions.php b/functions.php index 7e2eb90a2..78bc8979e 100644 --- a/functions.php +++ b/functions.php @@ -52,6 +52,10 @@ } } + // purge orphaned posts in main content table + db_query($link, "DELETE FROM ttrss_entries WHERE + (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); + } function purge_old_posts($link) { @@ -72,6 +76,10 @@ purge_feed($link, $feed_id, $purge_interval); } } + + // purge orphaned posts in main content table + db_query($link, "DELETE FROM ttrss_entries WHERE + (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); } function update_all_feeds($link, $fetch) { @@ -315,20 +323,24 @@ // check for user post link to main table + // do we allow duplicate posts with same GUID in different feeds? + if (get_pref($link, "ALLOW_DUPLICATE_POSTS")) { + $dupcheck_qpart = "AND feed_id = '$feed'"; + } else { + $dupcheck_qpart = ""; + } + $result = db_query($link, "SELECT ref_id FROM ttrss_user_entries WHERE - ref_id = '$ref_id' AND owner_uid = '$owner_uid' AND - feed_id = '$feed'"); + ref_id = '$ref_id' AND owner_uid = '$owner_uid' + $dupcheck_qpart"); // okay it doesn't exist - create user entry - if (db_num_rows($result) == 0) { - $result = db_query($link, "INSERT INTO ttrss_user_entries (ref_id, owner_uid, feed_id) VALUES ('$ref_id', '$owner_uid', '$feed')"); - } } diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index 6851d6170..587890527 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -169,6 +169,10 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_SPLASH', 1, 'false', 'Enable loading splashscreen',2); +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ALLOW_DUPLICATE_POSTS', 1, 'true', 'Allow duplicate posts',1, + 'This option is useful when you are reading several planet-type aggregators with partially colliding userbase. + When disabled, it forces same posts from different sources to appear only once'); + create table ttrss_user_prefs ( owner_uid integer not null, pref_name varchar(250), diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql index 0abb81304..012ed3366 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -160,6 +160,10 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_SPLASH', 1, 'false', 'Enable loading splashscreen',2); +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ALLOW_DUPLICATE_POSTS', 1, 'true', 'Allow duplicate posts',1, + 'This option is useful when you are reading several planet-type aggregators with partially colliding userbase. + When disabled, it forces same posts from different sources to appear only once'); + create table ttrss_user_prefs ( owner_uid integer not null references ttrss_users(id) on delete cascade, pref_name varchar(250) not null references ttrss_prefs(pref_name),