diff --git a/backend.php b/backend.php index da317cc41..b4b1c6f58 100644 --- a/backend.php +++ b/backend.php @@ -16,7 +16,7 @@ $op = $_REQUEST["op"]; - define('SCHEMA_VERSION', 8); + define('SCHEMA_VERSION', 9); require_once "sanity_check.php"; require_once "config.php"; diff --git a/functions.php b/functions.php index ea1cb7110..885505c92 100644 --- a/functions.php +++ b/functions.php @@ -676,8 +676,13 @@ num_comments = '$num_comments' WHERE id = '$ref_id'"); - db_query($link, "UPDATE ttrss_user_entries - SET last_read = null WHERE ref_id = '$ref_id' AND unread = false"); + if (get_pref($link, "MARK_UNREAD_ON_UPDATE")) { + db_query($link, "UPDATE ttrss_user_entries + SET last_read = null, unread = true WHERE ref_id = '$ref_id'"); + } else { + db_query($link, "UPDATE ttrss_user_entries + SET last_read = null WHERE ref_id = '$ref_id' AND unread = false"); + } } } @@ -1413,7 +1418,7 @@ $result = db_query($link, "SELECT COUNT(int_id) AS unread FROM ttrss_user_entries - WHERE unread = true AND $match_part AND owner_uid = " . $_SESSION["uid"]); + WHERE unread = true AND ($match_part) AND owner_uid = " . $_SESSION["uid"]); $unread = 0; @@ -1433,11 +1438,13 @@ return getCategoryUnread($link, $n_feed); } else if ($n_feed == -1) { $match_part = "marked = true"; - } else if ($feed > 0) { + } else if ($n_feed > 0) { - $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE parent_feed = '$n_feed'"); + $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE parent_feed = '$n_feed' + AND owner_uid = " . $_SESSION["uid"]); if (db_num_rows($result) > 0) { + $linked_feeds = array(); while ($line = db_fetch_assoc($result)) { array_push($linked_feeds, "feed_id = " . $line["id"]); @@ -1445,6 +1452,19 @@ $match_part = implode(" OR ", $linked_feeds); + $result = db_query($link, "SELECT COUNT(int_id) AS unread + FROM ttrss_user_entries + WHERE unread = true AND ($match_part) AND owner_uid = " . $_SESSION["uid"]); + + $unread = 0; + + # this needs to be rewritten + while ($line = db_fetch_assoc($result)) { + $unread += $line["unread"]; + } + + return $unread; + } else { $match_part = "feed_id = '$n_feed'"; } diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index 69a96d0b7..4020dd738 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -179,7 +179,7 @@ create table ttrss_tags (id integer primary key auto_increment, create table ttrss_version (schema_version int not null) TYPE=InnoDB; -insert into ttrss_version values (8); +insert into ttrss_version values (9); create table ttrss_prefs_types (id integer not null primary key, type_name varchar(100) not null) TYPE=InnoDB; @@ -251,6 +251,8 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) valu insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('EXTENDED_FEEDLIST', 1, 'false', 'Show additional information in feedlist',2); +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('MARK_UNREAD_ON_UPDATE', 1, 'false', 'Set articles as unread on update',3); + 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 99120f7d5..8ef76bd3b 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -163,7 +163,7 @@ create index ttrss_tags_owner_uid_index on ttrss_tags(owner_uid); create table ttrss_version (schema_version int not null); -insert into ttrss_version values (8); +insert into ttrss_version values (9); create table ttrss_prefs_types (id integer not null primary key, type_name varchar(100) not null); @@ -231,6 +231,8 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) valu insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('EXTENDED_FEEDLIST', 1, 'false', 'Show additional information in feedlist',2); +insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('MARK_UNREAD_ON_UPDATE', 1, 'false', 'Set articles as unread on update',3); + 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) ON DELETE CASCADE,