]> git.wh0rd.org - tt-rss.git/blobdiff - functions.php
move out common subops from viewfeed handler
[tt-rss.git] / functions.php
index 68c8eac76e353eb8d62e32cbb5d9e1496a478fc3..77414b13c4989c503e328405d622945273b4c68a 100644 (file)
                }
        }
 
+       function catchup_feed($link, $feed, $cat_view) {
+                       if (preg_match("/^[0-9][0-9]*$/", $feed) != false && $feed >= 0) {
+                       
+                               if ($cat_view) {
+
+                                       if ($feed > 0) {
+                                               $cat_qpart = "cat_id = '$feed'";
+                                       } else {
+                                               $cat_qpart = "cat_id IS NULL";
+                                       }
+                                       
+                                       $tmp_result = db_query($link, "SELECT id 
+                                               FROM ttrss_feeds WHERE $cat_qpart AND owner_uid = " . 
+                                               $_SESSION["uid"]);
+
+                                       while ($tmp_line = db_fetch_assoc($tmp_result)) {
+
+                                               $tmp_feed = $tmp_line["id"];
+
+                                               db_query($link, "UPDATE ttrss_user_entries 
+                                                       SET unread = false,last_read = NOW() 
+                                                       WHERE feed_id = '$tmp_feed' AND owner_uid = " . $_SESSION["uid"]);
+                                       }
+
+                               } else if ($feed > 0) {
+
+                                       $tmp_result = db_query($link, "SELECT id 
+                                               FROM ttrss_feeds WHERE parent_feed = '$feed'
+                                               ORDER BY cat_id,title");
+
+                                       $parent_ids = array();
+
+                                       if (db_num_rows($tmp_result) > 0) {
+                                               while ($p = db_fetch_assoc($tmp_result)) {
+                                                       array_push($parent_ids, "feed_id = " . $p["id"]);
+                                               }
+
+                                               $children_qpart = implode(" OR ", $parent_ids);
+                                               
+                                               db_query($link, "UPDATE ttrss_user_entries 
+                                                       SET unread = false,last_read = NOW() 
+                                                       WHERE (feed_id = '$feed' OR $children_qpart) 
+                                                       AND owner_uid = " . $_SESSION["uid"]);
+
+                                       } else {                                                
+                                               db_query($link, "UPDATE ttrss_user_entries 
+                                                       SET unread = false,last_read = NOW() 
+                                                       WHERE feed_id = '$feed' AND owner_uid = " . $_SESSION["uid"]);
+                                       }
+                                               
+                               } else if ($feed < 0 && $feed > -10) { // special, like starred
+
+                                       if ($feed == -1) {
+                                               db_query($link, "UPDATE ttrss_user_entries 
+                                                       SET unread = false,last_read = NOW()
+                                                       WHERE marked = true AND owner_uid = ".$_SESSION["uid"]);
+                                       }
+                       
+                               } else if ($feed < -10) { // label
+
+                                       // TODO make this more efficient
+
+                                       $label_id = -$feed - 11;
+
+                                       $tmp_result = db_query($link, "SELECT sql_exp FROM ttrss_labels
+                                               WHERE id = '$label_id'");                                       
+
+                                       if ($tmp_result) {
+                                               $sql_exp = db_fetch_result($tmp_result, 0, "sql_exp");
+
+                                               db_query($link, "BEGIN");
+
+                                               $tmp2_result = db_query($link,
+                                                       "SELECT 
+                                                               int_id 
+                                                       FROM 
+                                                               ttrss_user_entries,ttrss_entries 
+                                                       WHERE
+                                                               ref_id = id AND 
+                                                               $sql_exp AND
+                                                               owner_uid = " . $_SESSION["uid"]);
+
+                                               while ($tmp_line = db_fetch_assoc($tmp2_result)) {
+                                                       db_query($link, "UPDATE 
+                                                               ttrss_user_entries 
+                                                       SET 
+                                                               unread = false, last_read = NOW()
+                                                       WHERE
+                                                               int_id = " . $tmp_line["int_id"]);
+                                               }
+                                                               
+                                               db_query($link, "COMMIT");
+
+/*                                             db_query($link, "UPDATE ttrss_user_entries,ttrss_entries 
+                                                       SET unread = false,last_read = NOW()
+                                                       WHERE $sql_exp
+                                                       AND ref_id = id
+                                                       AND owner_uid = ".$_SESSION["uid"]); */
+                                       }
+                               }
+                       } else { // tag
+                               db_query($link, "BEGIN");
+
+                               $tag_name = db_escape_string($feed);
+
+                               $result = db_query($link, "SELECT post_int_id FROM ttrss_tags
+                                       WHERE tag_name = '$tag_name' AND owner_uid = " . $_SESSION["uid"]);
+
+                               while ($line = db_fetch_assoc($result)) {
+                                       db_query($link, "UPDATE ttrss_user_entries SET
+                                               unread = false, last_read = NOW() 
+                                               WHERE int_id = " . $line["post_int_id"]);
+                               }
+                               db_query($link, "COMMIT");
+                       }
+       }
+
+       function update_generic_feed($link, $feed, $cat_view) {
+                       if ($cat_view) {
+
+                               if ($feed > 0) {
+                                       $cat_qpart = "cat_id = '$feed'";
+                               } else {
+                                       $cat_qpart = "cat_id IS NULL";
+                               }
+                               
+                               $tmp_result = db_query($link, "SELECT feed_url FROM ttrss_feeds
+                                       WHERE $cat_qpart AND owner_uid = " . $_SESSION["uid"]);
+
+                               while ($tmp_line = db_fetch_assoc($tmp_result)) {                                       
+                                       $feed_url = $tmp_line["feed_url"];
+                                       update_rss_feed($link, $feed_url, $feed, ENABLE_UPDATE_DAEMON);
+                               }
+
+                       } else {
+                               $tmp_result = db_query($link, "SELECT feed_url FROM ttrss_feeds
+                                       WHERE id = '$feed'");
+                               $feed_url = db_fetch_result($tmp_result, 0, "feed_url");                                
+                               update_rss_feed($link, $feed_url, $feed, ENABLE_UPDATE_DAEMON);
+                       }
+       }
+       
 ?>