]> git.wh0rd.org - tt-rss.git/blobdiff - functions.php
fix for feed cat editor when no categories are defined
[tt-rss.git] / functions.php
index 1556afc6818e597c1dfac6b68c4c0ce0bb9303ce..8b13bed987983f7d893f66d648744db09ab8a832 100644 (file)
                        $link_title = "Updated: $last_updated";
                }
 
-               $feed = "<a title=\"$link_title\" id=\"FEEDL-$feed_id\" href=\"javascript:viewfeed('$feed_id', '', false);\">$feed_title</a>";
+               $feed = "<a title=\"$link_title\" id=\"FEEDL-$feed_id\" 
+                       href=\"#\" onclick=\"javascript:viewfeed('$feed_id', '', false);\">$feed_title</a>";
 
                print "<li id=\"FEEDR-$feed_id\" class=\"$class\">";
                if (get_pref($link, 'ENABLE_FEED_ICONS')) {
                        $match_part = "marked = true";
                } else if ($n_feed > 0) {
 
-                       $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE parent_feed = '$n_feed'
+                       $result = db_query($link, "SELECT id FROM ttrss_feeds 
+                                       WHERE parent_feed = '$n_feed'
                                        AND hidden = false
                                        AND owner_uid = " . $_SESSION["uid"]);
 
                                while ($line = db_fetch_assoc($result)) {
                                        array_push($linked_feeds, "feed_id = " . $line["id"]);
                                }
+
+                               array_push($linked_feeds, "feed_id = $n_feed");
                                
                                $match_part = implode(" OR ", $linked_feeds);
 
                                $result = db_query($link, "SELECT COUNT(int_id) AS unread 
                                        FROM ttrss_user_entries
-                                       WHERE   unread = true AND ($match_part) AND owner_uid = " . $_SESSION["uid"]);
+                                       WHERE   unread = true AND ($match_part) 
+                                       AND owner_uid = " . $_SESSION["uid"]);
 
                                $unread = 0;
 
 
                }
 
+       function outputFeedList($link, $tags = false) {
+
+               print "<ul class=\"feedList\" id=\"feedList\">\n";
+
+               $owner_uid = $_SESSION["uid"];
+
+               if (!$tags) {
+
+                       /* virtual feeds */
+
+                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                               print "<li class=\"feedCat\">Special</li>";
+                               print "<li id=\"feedCatHolder\"><ul class=\"feedCatList\">";
+                       }
+
+                       $num_starred = getFeedUnread($link, -1);
+
+                       $class = "virt";
+
+                       if ($num_starred > 0) $class .= "Unread";
+
+                       printFeedEntry(-1, $class, "Starred articles", $num_starred, 
+                               "images/mark_set.png", $link);
+
+                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                               print "</ul>\n";
+                       }
+
+                       if (GLOBAL_ENABLE_LABELS && get_pref($link, 'ENABLE_LABELS')) {
+       
+                               $result = db_query($link, "SELECT id,sql_exp,description FROM
+                                       ttrss_labels WHERE owner_uid = '$owner_uid' ORDER by description");
+               
+                               if (db_num_rows($result) > 0) {
+                                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                                               print "<li class=\"feedCat\">Labels</li>";
+                                               print "<li id=\"feedCatHolder\"><ul class=\"feedCatList\">";
+                                       } else {
+                                               print "<li><hr></li>";
+                                       }
+                               }
+               
+                               while ($line = db_fetch_assoc($result)) {
+       
+                                       error_reporting (0);
+
+                                       $label_id = -$line['id'] - 11;
+                                       $count = getFeedUnread($link, $label_id);
+
+                                       $class = "label";
+       
+                                       if ($count > 0) {
+                                               $class .= "Unread";
+                                       }
+                                       
+                                       error_reporting (DEFAULT_ERROR_LEVEL);
+       
+                                       printFeedEntry($label_id, 
+                                               $class, db_unescape_string($line["description"]), 
+                                               $count, "images/label.png", $link);
+               
+                               }
+
+                               if (db_num_rows($result) > 0) {
+                                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                                               print "</ul>";
+                                       }
+                               }
+
+                       }
+
+                       if (!get_pref($link, 'ENABLE_FEED_CATS')) {
+                               print "<li><hr></li>";
+                       }
+
+                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                               if (get_pref($link, "FEEDS_SORT_BY_UNREAD")) {
+                                       $order_by_qpart = "category,unread DESC,title";
+                               } else {
+                                       $order_by_qpart = "category,title";
+                               }
+                       } else {
+                               if (get_pref($link, "FEEDS_SORT_BY_UNREAD")) {
+                                       $order_by_qpart = "unread DESC,title";
+                               } else {                
+                                       $order_by_qpart = "title";
+                               }
+                       }
+
+                       $result = db_query($link, "SELECT ttrss_feeds.*,
+                               SUBSTRING(last_updated,1,19) AS last_updated_noms,
+                               (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries
+                                       WHERE feed_id = ttrss_feeds.id AND unread = true
+                                               AND ttrss_user_entries.ref_id = ttrss_entries.id
+                                               AND owner_uid = '$owner_uid') as unread,
+                               cat_id,last_error,
+                               ttrss_feed_categories.title AS category,
+                               ttrss_feed_categories.collapsed 
+                               FROM ttrss_feeds LEFT JOIN ttrss_feed_categories 
+                                       ON (ttrss_feed_categories.id = cat_id)                          
+                               WHERE 
+                                       ttrss_feeds.hidden = false AND
+                                       ttrss_feeds.owner_uid = '$owner_uid' AND parent_feed IS NULL
+                               ORDER BY $order_by_qpart"); 
+
+                       $actid = $_GET["actid"];
+       
+                       /* real feeds */
+       
+                       $lnum = 0;
+       
+                       $total_unread = 0;
+
+                       $category = "";
+
+                       $short_date = get_pref($link, 'SHORT_DATE_FORMAT');
+       
+                       while ($line = db_fetch_assoc($result)) {
+                       
+                               $feed = db_unescape_string($line["title"]);
+                               $feed_id = $line["id"];   
+       
+                               $subop = $_GET["subop"];
+                               
+                               $unread = $line["unread"];
+
+                               if (get_pref($link, 'HEADLINES_SMART_DATE')) {
+                                       $last_updated = smart_date_time(strtotime($line["last_updated_noms"]));
+                               } else {
+                                       $last_updated = date($short_date, strtotime($line["last_updated_noms"]));
+                               }
+
+                               $rtl_content = sql_bool_to_bool($line["rtl_content"]);
+
+                               if ($rtl_content) {
+                                       $rtl_tag = "dir=\"RTL\"";
+                               } else {
+                                       $rtl_tag = "";
+                               }
+
+                               $tmp_result = db_query($link,
+                                       "SELECT id,COUNT(unread) AS unread
+                                       FROM ttrss_feeds LEFT JOIN ttrss_user_entries 
+                                               ON (ttrss_feeds.id = ttrss_user_entries.feed_id) 
+                                       WHERE parent_feed = '$feed_id' AND unread = true 
+                                       GROUP BY ttrss_feeds.id");
+                       
+                               if (db_num_rows($tmp_result) > 0) {                             
+                                       while ($l = db_fetch_assoc($tmp_result)) {
+                                               $unread += $l["unread"];
+                                       }
+                               }
+
+                               $cat_id = $line["cat_id"];
+
+                               $tmp_category = $line["category"];
+
+                               if (!$tmp_category) {
+                                       $tmp_category = "Uncategorized";
+                               }
+                               
+       //                      $class = ($lnum % 2) ? "even" : "odd";
+
+                               if ($line["last_error"]) {
+                                       $class = "error";
+                               } else {
+                                       $class = "feed";
+                               }
+       
+                               if ($unread > 0) $class .= "Unread";
+       
+                               if ($actid == $feed_id) {
+                                       $class .= "Selected";
+                               }
+       
+                               $total_unread += $unread;
+
+                               if ($category != $tmp_category && get_pref($link, 'ENABLE_FEED_CATS')) {
+                               
+                                       if ($category) {
+                                               print "</ul></li>";
+                                       }
+                               
+                                       $category = $tmp_category;
+
+                                       $collapsed = $line["collapsed"];
+
+                                       // workaround for NULL category
+                                       if ($category == "Uncategorized") {
+                                               if ($_COOKIE["ttrss_vf_uclps"] == 1) {
+                                                       $collapsed = "t";
+                                               }
+                                       }
+
+                                       if ($collapsed == "t" || $collapsed == "1") {
+                                               $holder_class = "invisible";
+                                               $ellipsis = "...";
+                                       } else {
+                                               $holder_class = "";
+                                               $ellipsis = "";
+                                       }
+
+                                       $cat_id = sprintf("%d", $cat_id);
+
+                                       $cat_unread = getCategoryUnread($link, $cat_id);
+                                       
+                                       print "<li class=\"feedCat\" id=\"FCAT-$cat_id\">
+                                               <a id=\"FCATN-$cat_id\" href=\"#\" onclick=\"javascript:toggleCollapseCat($cat_id)\">$tmp_category</a>
+                                                       <a href=\"#\" onclick=\"javascript:viewCategory($cat_id)\" id=\"FCAP-$cat_id\">
+                                                       <span id=\"FCATCTR-$cat_id\" 
+                                                       class=\"$catctr_class\">($cat_unread unread)$ellipsis</span>
+                                                       </a></li>";
+
+                                       // !!! NO SPACE before <ul...feedCatList - breaks firstChild DOM function
+                                       // -> keyboard navigation, etc.
+                                       print "<li id=\"feedCatHolder\" class=\"$holder_class\"><ul class=\"feedCatList\" id=\"FCATLIST-$cat_id\">";
+                               }
+       
+                               printFeedEntry($feed_id, $class, $feed, $unread, 
+                                       "icons/$feed_id.ico", $link, $rtl_content, 
+                                       $last_updated, $line["last_error"]);
+       
+                               ++$lnum;
+                       }
+
+                       if (db_num_rows($result) == 0) {
+                               print "<li>No feeds to display.</li>";
+                       }
+
+               } else {
+
+                       // tags
+
+/*                     $result = db_query($link, "SELECT tag_name,count(ttrss_entries.id) AS count
+                               FROM ttrss_tags,ttrss_entries,ttrss_user_entries WHERE
+                               post_int_id = ttrss_user_entries.int_id AND 
+                               unread = true AND ref_id = ttrss_entries.id
+                               AND ttrss_tags.owner_uid = '$owner_uid' GROUP BY tag_name       
+                       UNION
+                               select tag_name,0 as count FROM ttrss_tags WHERE owner_uid = '$owner_uid'
+                       ORDER BY tag_name"); */
+
+                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                               print "<li class=\"feedCat\">Tags</li>";
+                               print "<li id=\"feedCatHolder\"><ul class=\"feedCatList\">";
+                       }
+
+                       $result = db_query($link, "SELECT tag_name,SUM((SELECT COUNT(int_id) 
+                               FROM ttrss_user_entries WHERE int_id = post_int_id 
+                                       AND unread = true)) AS count FROM ttrss_tags 
+                               WHERE owner_uid = 2 GROUP BY tag_name ORDER BY tag_name");
+
+                       $tags = array();
+       
+                       while ($line = db_fetch_assoc($result)) {
+                               $tags[$line["tag_name"]] += $line["count"];
+                       }
+       
+                       foreach (array_keys($tags) as $tag) {
+       
+                               $unread = $tags[$tag];
+       
+                               $class = "tag";
+       
+                               if ($unread > 0) {
+                                       $class .= "Unread";
+                               }
+       
+                               printFeedEntry($tag, $class, $tag, $unread, "images/tag.png", $link);
+       
+                       } 
+
+                       if (db_num_rows($result) == 0) {
+                               print "<li>No tags to display.</li>";
+                       }
+
+                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                               print "</ul>\n";
+                       }
+
+               }
+
+               print "</ul>";
+
+       }
+
 ?>