summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/api.php23
-rw-r--r--classes/rpc.php17
-rw-r--r--include/functions.php8
-rw-r--r--include/rssfuncs.php9
-rw-r--r--schema/ttrss_schema_mysql.sql4
-rw-r--r--schema/ttrss_schema_pgsql.sql4
-rw-r--r--schema/versions/mysql/105.sql11
-rw-r--r--schema/versions/pgsql/105.sql11
8 files changed, 65 insertions, 22 deletions
diff --git a/classes/api.php b/classes/api.php
index a23f20ae2..1ee620863 100644
--- a/classes/api.php
+++ b/classes/api.php
@@ -219,12 +219,15 @@ class API extends Handler {
switch ($field_raw) {
case 0:
$field = "marked";
+ $additional_fields = ",last_marked = NOW()";
break;
case 1:
$field = "published";
+ $additional_fields = ",last_published = NOW()";
break;
case 2:
$field = "unread";
+ $additional_fields = ",last_read = NOW()";
break;
case 3:
$field = "note";
@@ -248,14 +251,7 @@ class API extends Handler {
$article_ids = join(", ", $article_ids);
- if ($field == "unread") {
- $result = db_query($this->link, "UPDATE ttrss_user_entries SET $field = $set_to,
- last_read = NOW()
- WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]);
- } else {
- $result = db_query($this->link, "UPDATE ttrss_user_entries SET $field = $set_to
- WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]);
- }
+ $result = db_query($this->link, "UPDATE ttrss_user_entries SET $field = $set_to $additional_fields WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]);
$num_updated = db_affected_rows($this->link, $result);
@@ -268,6 +264,17 @@ class API extends Handler {
}
}
+ if ($num_updated > 0 && $field == "published") {
+ if (PUBSUBHUBBUB_HUB) {
+ $rss_link = get_self_url_prefix() .
+ "/public.php?op=rss&id=-2&key=" .
+ get_feed_access_key($this->link, -2, false);
+
+ $p = new Publisher(PUBSUBHUBBUB_HUB);
+ $pubsub_result = $p->publish_update($rss_link);
+ }
+ }
+
print $this->wrap(self::STATUS_OK, array("status" => "OK",
"updated" => $num_updated));
diff --git a/classes/rpc.php b/classes/rpc.php
index 46c8b0d85..5d77b1ae8 100644
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -140,7 +140,8 @@ class RPC extends Handler_Protected {
$mark = "false";
}
- $result = db_query($this->link, "UPDATE ttrss_user_entries SET marked = $mark
+ $result = db_query($this->link, "UPDATE ttrss_user_entries SET marked = $mark,
+ last_marked = NOW()
WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
print json_encode(array("message" => "UPDATE_COUNTERS"));
@@ -219,7 +220,7 @@ class RPC extends Handler_Protected {
}
$result = db_query($this->link, "UPDATE ttrss_user_entries SET
- published = $pub, last_read = NOW()
+ published = $pub, last_published = NOW()
WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
$pubsub_result = false;
@@ -779,15 +780,15 @@ class RPC extends Handler_Protected {
if ($cmode == 0) {
db_query($link, "UPDATE ttrss_user_entries SET
- marked = false,last_read = NOW()
+ marked = false, last_marked = NOW()
WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
} else if ($cmode == 1) {
db_query($link, "UPDATE ttrss_user_entries SET
- marked = true
+ marked = true, last_marked = NOW()
WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
} else {
db_query($link, "UPDATE ttrss_user_entries SET
- marked = NOT marked,last_read = NOW()
+ marked = NOT marked,last_marked = NOW()
WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
}
}
@@ -804,15 +805,15 @@ class RPC extends Handler_Protected {
if ($cmode == 0) {
db_query($link, "UPDATE ttrss_user_entries SET
- published = false,last_read = NOW()
+ published = false,last_published = NOW()
WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
} else if ($cmode == 1) {
db_query($link, "UPDATE ttrss_user_entries SET
- published = true,last_read = NOW()
+ published = true,last_published = NOW()
WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
} else {
db_query($link, "UPDATE ttrss_user_entries SET
- published = NOT published,last_read = NOW()
+ published = NOT published,last_published = NOW()
WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
}
diff --git a/include/functions.php b/include/functions.php
index f17828d1d..bc8d48217 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1,6 +1,6 @@
<?php
define('EXPECTED_CONFIG_VERSION', 26);
- define('SCHEMA_VERSION', 104);
+ define('SCHEMA_VERSION', 105);
$fetch_last_error = false;
$pluginhost = false;
@@ -2310,6 +2310,8 @@
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
$allow_archived = true;
+ if (!$override_order) $override_order = "last_marked DESC, updated DESC";
+
} else if ($feed == -2) { // published virtual feed OR labels category
if (!$cat_view) {
@@ -2317,7 +2319,7 @@
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
$allow_archived = true;
- if (!$override_order) $override_order = "last_read DESC, updated DESC";
+ if (!$override_order) $override_order = "last_published DESC, updated DESC";
} else {
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
@@ -2450,6 +2452,7 @@
comments,
int_id,
unread,feed_id,marked,published,link,last_read,orig_feed_id,
+ last_marked, last_published,
".SUBSTRING_FOR_DATE."(last_read,1,19) as last_read_noms,
$vfeed_query_part
$content_query_part
@@ -2492,6 +2495,7 @@
"label_cache," .
"link," .
"last_read," .
+ "last_marked, last_published, " .
SUBSTRING_FOR_DATE . "(last_read,1,19) as last_read_noms," .
$since_id_part .
$vfeed_query_part .
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index 5c49008c5..a95280a31 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -766,12 +766,17 @@
}
}
+ $last_marked = ($marked == 'true') ? 'NOW()' : 'NULL';
+ $last_published = ($published == 'true') ? 'NOW()' : 'NULL';
+
$result = db_query($link,
"INSERT INTO ttrss_user_entries
(ref_id, owner_uid, feed_id, unread, last_read, marked,
- published, score, tag_cache, label_cache, uuid)
+ published, score, tag_cache, label_cache, uuid,
+ last_marked, last_published)
VALUES ('$ref_id', '$owner_uid', '$feed', $unread,
- $last_read_qpart, $marked, $published, '$score', '', '', '')");
+ $last_read_qpart, $marked, $published, '$score', '', '',
+ '', $last_marked, $last_published)");
if (PUBSUBHUBBUB_HUB && $published == 'true') {
$rss_link = get_self_url_prefix() .
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index bf02e7b1e..d4873ecb0 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -179,6 +179,8 @@ create table ttrss_user_entries (
last_read datetime,
score int not null default 0,
note longtext,
+ last_marked datetime,
+ last_published datetime,
unread bool not null default 1,
index (ref_id),
foreign key (ref_id) references ttrss_entries(id) ON DELETE CASCADE,
@@ -310,7 +312,7 @@ create table ttrss_tags (id integer primary key auto_increment,
create table ttrss_version (schema_version int not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
-insert into ttrss_version values (104);
+insert into ttrss_version values (105);
create table ttrss_enclosures (id integer primary key auto_increment,
content_url text not null,
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index e19b8cbc6..5063c4dd8 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -159,6 +159,8 @@ create table ttrss_user_entries (
label_cache text not null,
last_read timestamp,
score int not null default 0,
+ last_marked timestamp,
+ last_published timestamp,
note text,
unread boolean not null default true);
@@ -258,7 +260,7 @@ create index ttrss_tags_post_int_id_idx on ttrss_tags(post_int_id);
create table ttrss_version (schema_version int not null);
-insert into ttrss_version values (104);
+insert into ttrss_version values (105);
create table ttrss_enclosures (id serial not null primary key,
content_url text not null,
diff --git a/schema/versions/mysql/105.sql b/schema/versions/mysql/105.sql
new file mode 100644
index 000000000..a96101784
--- /dev/null
+++ b/schema/versions/mysql/105.sql
@@ -0,0 +1,11 @@
+begin;
+
+alter table ttrss_user_entries add column last_marked datetime;
+alter table ttrss_user_entries add column last_published datetime;
+
+update ttrss_user_entries set last_published = last_read where published = true;
+update ttrss_user_entries set last_marked = last_read where marked = true;
+
+update ttrss_version set schema_version = 105;
+
+commit;
diff --git a/schema/versions/pgsql/105.sql b/schema/versions/pgsql/105.sql
new file mode 100644
index 000000000..11ef679f1
--- /dev/null
+++ b/schema/versions/pgsql/105.sql
@@ -0,0 +1,11 @@
+begin;
+
+alter table ttrss_user_entries add column last_marked timestamp;
+alter table ttrss_user_entries add column last_published timestamp;
+
+update ttrss_user_entries set last_published = last_read where published = true;
+update ttrss_user_entries set last_marked = last_read where marked = true;
+
+update ttrss_version set schema_version = 105;
+
+commit;