summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions.php40
-rw-r--r--modules/backend-rpc.php6
-rw-r--r--sanity_check.php2
-rw-r--r--schema/ttrss_schema_mysql.sql3
-rw-r--r--schema/ttrss_schema_pgsql.sql3
-rw-r--r--schema/versions/mysql/72.sql5
-rw-r--r--schema/versions/pgsql/72.sql5
7 files changed, 55 insertions, 9 deletions
diff --git a/functions.php b/functions.php
index 5e7b7c20f..c4d033bc2 100644
--- a/functions.php
+++ b/functions.php
@@ -1199,9 +1199,9 @@
$result = db_query($link,
"INSERT INTO ttrss_user_entries
(ref_id, owner_uid, feed_id, unread, last_read, marked,
- published, score)
+ published, score, tag_cache)
VALUES ('$ref_id', '$owner_uid', '$feed', $unread,
- $last_read_qpart, $marked, $published, '$score')");
+ $last_read_qpart, $marked, $published, '$score', '')");
$result = db_query($link,
"SELECT int_id FROM ttrss_user_entries WHERE
@@ -1433,6 +1433,14 @@
(owner_uid,tag_name,post_int_id)
VALUES ('$owner_uid','$tag', '$entry_int_id')");
}
+
+ /* update the cache */
+
+ $tags_str = db_escape_string(join(",", $filtered_tags));
+
+ db_query($link, "UPDATE ttrss_user_entries
+ SET tag_cache = '$tags_str' WHERE ref_id = '$entry_ref_id'
+ AND owner_uid = $owner_uid");
}
db_query($link, "COMMIT");
@@ -4660,10 +4668,32 @@
if ($memcache && $obj = $memcache->get($obj_id)) {
$tags = $obj;
} else {
- $tmp_result = db_query($link, $query);
+ /* check cache first */
+
+ $result = db_query($link, "SELECT tag_cache FROM ttrss_user_entries
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+
+ $tag_cache = db_fetch_result($result, 0, "tag_cache");
+
+ if ($tag_cache) {
+ $tags = explode(",", $tag_cache);
+ } else {
- while ($tmp_line = db_fetch_assoc($tmp_result)) {
- array_push($tags, $tmp_line["tag_name"]);
+ /* do it the hard way */
+
+ $tmp_result = db_query($link, $query);
+
+ while ($tmp_line = db_fetch_assoc($tmp_result)) {
+ array_push($tags, $tmp_line["tag_name"]);
+ }
+
+ /* update the cache */
+
+ $tags_str = db_escape_string(join(",", $tags));
+
+ db_query($link, "UPDATE ttrss_user_entries
+ SET tag_cache = '$tags_str' WHERE ref_id = '$id'
+ AND owner_uid = " . $_SESSION["uid"]);
}
if ($memcache) $memcache->add($obj_id, $tags, 0, 3600);
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index 8f31cd748..a825242c6 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -423,8 +423,8 @@
$id = db_escape_string($_REQUEST["id"]);
$tags_str = db_escape_string($_REQUEST["tags_str"]);
-
$tags = array_unique(trim_array(split(",", $tags_str)));
+ $tags_str = db_escape_string(join(",", $tags));
db_query($link, "BEGIN");
@@ -458,6 +458,10 @@
}
}
+ db_query($link, "UPDATE ttrss_user_entries
+ SET tag_cache = '$tags_str' WHERE ref_id = '$id'
+ AND owner_uid = " . $_SESSION["uid"]);
+
db_query($link, "COMMIT");
if ($memcache) {
diff --git a/sanity_check.php b/sanity_check.php
index b5432199e..20ef276c0 100644
--- a/sanity_check.php
+++ b/sanity_check.php
@@ -2,7 +2,7 @@
require_once "functions.php";
define('EXPECTED_CONFIG_VERSION', 19);
- define('SCHEMA_VERSION', 71);
+ define('SCHEMA_VERSION', 72);
if (!file_exists("config.php")) {
print "<b>Fatal Error</b>: You forgot to copy
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index da73cedd4..527957038 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -151,6 +151,7 @@ create table ttrss_user_entries (
owner_uid integer not null,
marked bool not null default 0,
published bool not null default 0,
+ tag_cache text not null,
last_read datetime,
score int not null default 0,
note longtext,
@@ -244,7 +245,7 @@ create table ttrss_tags (id integer primary key auto_increment,
create table ttrss_version (schema_version int not null) TYPE=InnoDB DEFAULT CHARSET=UTF8;
-insert into ttrss_version values (71);
+insert into ttrss_version values (72);
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 3583639c6..29c82c0d2 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -137,6 +137,7 @@ create table ttrss_user_entries (
owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
marked boolean not null default false,
published boolean not null default false,
+ tag_cache text not null,
last_read timestamp,
score int not null default 0,
note text,
@@ -216,7 +217,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 (71);
+insert into ttrss_version values (72);
create table ttrss_enclosures (id serial not null primary key,
content_url text not null,
diff --git a/schema/versions/mysql/72.sql b/schema/versions/mysql/72.sql
new file mode 100644
index 000000000..c9b74bae2
--- /dev/null
+++ b/schema/versions/mysql/72.sql
@@ -0,0 +1,5 @@
+alter table ttrss_user_entries add column tag_cache text;
+update ttrss_user_entries set tag_cache = '';
+alter table ttrss_user_entries change tag_cache tag_cache text not null;
+
+update ttrss_version set schema_version = 72;
diff --git a/schema/versions/pgsql/72.sql b/schema/versions/pgsql/72.sql
new file mode 100644
index 000000000..7b260b3d1
--- /dev/null
+++ b/schema/versions/pgsql/72.sql
@@ -0,0 +1,5 @@
+alter table ttrss_user_entries add column tag_cache text;
+update ttrss_user_entries set tag_cache = '';
+alter table ttrss_user_entries alter column tag_cache set not null;
+
+update ttrss_version set schema_version = 72;