]> git.wh0rd.org - tt-rss.git/commitdiff
editTagsSave: invalidate article cache
authorAndrew Dolgov <fox@bah.org.ru>
Mon, 18 Jan 2010 10:55:28 +0000 (13:55 +0300)
committerAndrew Dolgov <fox@bah.org.ru>
Mon, 18 Jan 2010 10:55:28 +0000 (13:55 +0300)
functions.php
modules/backend-rpc.php
viewfeed.js

index 7350ef28f749f081fdc340a9fd12d7bb7fefad08..9a9aab71c73ea61d01f85bf9fecfdc5a4510f045 100644 (file)
 
        function get_article_tags($link, $id, $owner_uid = 0) {
 
+               global $memcache;
+
                $a_id = db_escape_string($id);
 
                if (!$owner_uid) $owner_uid = $_SESSION["uid"];
 
-               $tmp_result = db_query($link, "SELECT DISTINCT tag_name, 
+               $query = "SELECT DISTINCT tag_name, 
                        owner_uid as owner FROM
                        ttrss_tags WHERE post_int_id = (SELECT int_id FROM ttrss_user_entries WHERE
-                               ref_id = '$a_id' AND owner_uid = '$owner_uid' LIMIT 1) ORDER BY tag_name");
+                       ref_id = '$a_id' AND owner_uid = '$owner_uid' LIMIT 1) ORDER BY tag_name";
 
+               $obj_id = md5("TAGS:$owner_uid:$id");
                $tags = array();        
-       
-               while ($tmp_line = db_fetch_assoc($tmp_result)) {
-                       array_push($tags, $tmp_line["tag_name"]);                               
+
+               if ($memcache && $obj = $memcache->get($obj_id)) {
+                       $tags = $obj;
+               } else {
+                       $tmp_result = db_query($link, $query);
+
+                       while ($tmp_line = db_fetch_assoc($tmp_result)) {
+                               array_push($tags, $tmp_line["tag_name"]);                               
+                       }
+
+                       if ($memcache) $memcache->add($obj_id, $tags, 0, 3600);
                }
 
                return $tags;
                $query = "SELECT * FROM ttrss_enclosures 
                        WHERE post_id = '$id' AND content_url != ''";
 
-               $cache_id = md5($query);
+               $obj_id = md5("ENCLOSURES:$id");
 
                $rv = array();
 
-               if ($memcache && $obj = $memcache->get($cache_id)) {
+               if ($memcache && $obj = $memcache->get($obj_id)) {
                        $rv = $obj;
                } else {
                        $result = db_query($link, $query);
                                while ($line = db_fetch_assoc($result)) {
                                        array_push($rv, $line);
                                }
-                               if ($memcache) $memcache->add($cache_id, $rv, 0, 3600);
+                               if ($memcache) $memcache->add($obj_id, $rv, 0, 3600);
                        }
                }
 
index adefbd5a5f21e8ae673c6dc9220c2567b113483c..f994c3e8f63f8c1e466268dc6941a701fd5c4eea 100644 (file)
 
                if ($subop == "setArticleTags") {
 
+                       global $memcache;
+
                        $id = db_escape_string($_REQUEST["id"]);
 
                        $tags_str = db_escape_string($_REQUEST["tags_str"]);
 
                        db_query($link, "COMMIT");
 
+                       if ($memcache) {
+                               $obj_id = md5("TAGS:".$_SESSION["uid"].":$id");
+                               $memcache->delete($obj_id);
+                       }
+
                        $tags_str = format_tags_string(get_article_tags($link, $id), $id);
 
                        print "<rpc-reply>
index b4a9228f757e9b332deb822ce8229fbce95ff8b6..0ec443c6f678e09556735ca230738866bd8a11b0 100644 (file)
@@ -1500,6 +1500,8 @@ function editTagsSave() {
                                                                if (tags) {
                                                                        tags.innerHTML = tags_str.firstChild.nodeValue;
                                                                }
+
+                                                               cache_invalidate(id);
                                                        }
                                                }
                                        }