]> git.wh0rd.org Git - tt-rss.git/commitdiff
store previous value of counters and send only diffs
authorAndrew Dolgov <fox@bah.spb.su>
Tue, 29 Nov 2005 13:42:37 +0000 (14:42 +0100)
committerAndrew Dolgov <fox@bah.spb.su>
Tue, 29 Nov 2005 13:42:37 +0000 (14:42 +0100)
backend.php

index 85ab14ec1b40bb4dba151a9331df7a31bab42d5e..5c7fa491b7497649144b19c50fb72965088d8323 100644 (file)
                print "<counter id='global-unread' counter='$c_id'/>";
        }
 
-       function getTagCounters($link) {
-       
+       function getTagCounters($link, $smart_mode = true) {
+
+               if ($smart_mode) {
+                       if (!$_SESSION["tctr_last_value"]) {
+                               $_SESSION["tctr_last_value"] = array();
+                       }
+               }
+
+               $old_counters = $_SESSION["tctr_last_value"];
+
+               $tctrs_modified = false;
+
                $result = db_query($link, "SELECT tag_name,count(ttrss_entries.id) AS count
                        FROM ttrss_tags,ttrss_entries,ttrss_user_entries WHERE
                        ttrss_user_entries.ref_id = ttrss_entries.id AND 
                        $unread = $tags[$tag];                  
 
                        $tag = htmlspecialchars($tag);
-                       print "<tag id=\"$tag\" counter=\"$unread\"/>";
+
+                       if (!$smart_mode || $old_counters[$tag] != $unread) {                   
+                               $old_counters[$tag] = $unread;
+                               $tctrs_modified = true;
+                               print "<tag id=\"$tag\" counter=\"$unread\"/>";
+                       }
+
                } 
+
+               if ($smart_mode && $tctrs_modified) {
+                       $_SESSION["tctr_last_value"] = $old_counters;
+               }
+
        }
 
        function getLabelCounters($link) {
                        print "<feed id=\"$id\" counter=\"$count\"/>";          
        }
 
-       function getFeedCounters($link) {
-       
+       function getFeedCounters($link, $smart_mode = true) {
+
+               if ($smart_mode) {
+                       if (!$_SESSION["fctr_last_value"]) {
+                               $_SESSION["fctr_last_value"] = array();
+                       }
+               }
+
+               $old_counters = $_SESSION["fctr_last_value"];
+
                $result = db_query($link, "SELECT id,
                        (SELECT count(id) 
                                FROM ttrss_entries,ttrss_user_entries 
                                WHERE feed_id = ttrss_feeds.id AND ttrss_user_entries.ref_id = ttrss_entries.id
                                AND unread = true AND owner_uid = ".$_SESSION["uid"].") as count
                        FROM ttrss_feeds WHERE owner_uid = ".$_SESSION["uid"]);
-       
+
+               $fctrs_modified = false;
+
                while ($line = db_fetch_assoc($result)) {
                
                        $id = $line["id"];
                        $count = $line["count"];
 
-                       print "<feed id=\"$id\" counter=\"$count\"/>";
+                       if (!$smart_mode || $old_counters[$id] != $count) {
+                               $old_counters[$id] = $count;
+                               $fctrs_modified = true;
+                               print "<feed id=\"$id\" counter=\"$count\"/>";
+                       }
+               }
+
+               if ($smart_mode && $fctrs_modified) {
+                       $_SESSION["fctr_last_value"] = $old_counters;
                }
        }