From 779560b7a388408d032ca42f8828cb5242244b53 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 10 Nov 2010 11:08:33 +0300 Subject: fix tag caching issues --- functions.php | 39 +++++++++++++++++++++++---------------- modules/backend-rpc.php | 17 ++++++++++++----- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/functions.php b/functions.php index 3e8cb8205..09efbd332 100644 --- a/functions.php +++ b/functions.php @@ -1396,6 +1396,7 @@ 'BLACKLISTED_TAGS', $owner_uid, ''), 'utf-8'))); $filtered_tags = array(); + $tags_to_cache = array(); if ($entry_tags && is_array($entry_tags)) { foreach ($entry_tags as $tag) { @@ -1405,6 +1406,8 @@ } } + $filtered_tags = array_unique($filtered_tags); + if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { _debug("update_rss_feed: filtered article tags:"); print_r($filtered_tags); @@ -1416,32 +1419,36 @@ db_query($link, "BEGIN"); - foreach ($filtered_tags as $tag) { + foreach ($filtered_tags as $tag) { - $tag = sanitize_tag($tag); - $tag = db_escape_string($tag); + $tag = sanitize_tag($tag); + $tag = db_escape_string($tag); + + if (!tag_is_valid($tag)) continue; + + $result = db_query($link, "SELECT id FROM ttrss_tags + WHERE tag_name = '$tag' AND post_int_id = '$entry_int_id' AND + owner_uid = '$owner_uid' LIMIT 1"); - if (!tag_is_valid($tag)) continue; - - $result = db_query($link, "SELECT id FROM ttrss_tags - WHERE tag_name = '$tag' AND post_int_id = '$entry_int_id' AND - owner_uid = '$owner_uid' LIMIT 1"); - if ($result && db_num_rows($result) == 0) { db_query($link, "INSERT INTO ttrss_tags (owner_uid,tag_name,post_int_id) VALUES ('$owner_uid','$tag', '$entry_int_id')"); - } + } - /* update the cache */ + array_push($tags_to_cache, $tag); + } - $tags_str = db_escape_string(join(",", $filtered_tags)); + /* update the cache */ + + $tags_to_cache = array_unique($tags_to_cache); + + $tags_str = db_escape_string(join(",", $tags_to_cache)); - 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, "UPDATE ttrss_user_entries + SET tag_cache = '$tags_str' WHERE ref_id = '$entry_ref_id' + AND owner_uid = $owner_uid"); db_query($link, "COMMIT"); } diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index a825242c6..047558fc2 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -424,7 +424,6 @@ $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"); @@ -433,6 +432,8 @@ if (db_num_rows($result) == 1) { + $tags_to_cache = array(); + $int_id = db_fetch_result($result, 0, "int_id"); db_query($link, "DELETE FROM ttrss_tags WHERE @@ -455,12 +456,18 @@ db_query($link, "INSERT INTO ttrss_tags (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')"); } + + array_push($tags_to_cache, $tag); } - } - db_query($link, "UPDATE ttrss_user_entries - SET tag_cache = '$tags_str' WHERE ref_id = '$id' - AND owner_uid = " . $_SESSION["uid"]); + /* update tag cache */ + + $tags_str = join(",", $tags_to_cache); + + 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"); -- cgit v1.2.3