]> git.wh0rd.org - tt-rss.git/blobdiff - backend.php
initial feed browser work
[tt-rss.git] / backend.php
index 122a6745c8c35fd47c6f58e47b9b87517aa1c1bf..7b0594660b88b4c80b2913956edbc96a808ad610 100644 (file)
                        if (sprintf("%d", $feed) != 0) {
                        
                                if ($feed > 0) {
-                                       db_query($link, "UPDATE ttrss_user_entries 
-                                               SET unread = false,last_read = NOW() 
-                                               WHERE feed_id = '$feed' AND owner_uid = " . $_SESSION["uid"]);
+
+                                       $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
 
                                print "<td class=\"headlineActions\">
                                        Select: 
                                                                <a href=\"javascript:selectTableRowsByIdPrefix('headlinesList', 
-                                                                       'RROW-', 'RCHK-', true)\">All</a>,
+                                                                       'RROW-', 'RCHK-', true, '', true)\">All</a>,
                                                                <a href=\"javascript:selectTableRowsByIdPrefix('headlinesList', 
-                                                                       'RROW-', 'RCHK-', true, 'Unread')\">Unread</a>,
+                                                                       'RROW-', 'RCHK-', true, 'Unread', true)\">Unread</a>,
                                                                <a href=\"javascript:selectTableRowsByIdPrefix('headlinesList', 
                                                                        'RROW-', 'RCHK-', false)\">None</a>
                                                &nbsp;&nbsp;
                $subop = $_REQUEST["subop"];
                $quiet = $_REQUEST["quiet"];
 
+               if ($subop == "browse") {
+                       
+                       print "<div class=\"infoBoxContents\">";
+
+                       print "<h1>Feed browser</h1>";
+
+                       print "<p>Showing top 50 registered feeds, sorted by popularity:</p>";
+
+                       $result = db_query($link, "SELECT feed_url,count(id) AS subscribers 
+                               FROM ttrss_feeds WHERE auth_login = '' AND auth_pass = '' 
+                               GROUP BY feed_url ORDER BY subscribers LIMIT 50");
+                       
+                       print "<ul class='browseFeedList' id='browseFeedList'>";
+                       
+                       while ($line = db_fetch_assoc($result)) {
+                               $feed_url = $line["feed_url"];
+                               $subscribers = $line["subscribers"];
+                       
+                               $det_result = db_query($link, "SELECT site_url,title,id 
+                                       FROM ttrss_feeds WHERE feed_url = '$feed_url' LIMIT 1");
+
+                               $details = db_fetch_assoc($det_result);
+                       
+                               $icon_file = ICONS_DIR . "/" . $details["id"] . ".ico";
+
+                               if (file_exists($icon_file) && filesize($icon_file) > 0) {
+                                               $feed_icon = "<img class=\"tinyFeedIcon\"       src=\"" . ICONS_URL . 
+                                                       "/".$details["id"].".ico\">";
+                               } else {
+                                       $feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
+                               }
+
+                               $check_box = "<input class='feedBrowseCB' type=\"checkbox\" id=\"BFCHK-" . $details["id"] . "\">";
+
+                               print "<li>$check_box $feed_icon" . $details["title"] . 
+                                       "&nbsp;<span class='subscribers'>($subscribers)</span></li>";
+                                                               }
+
+                       print "</ul>";
+
+                       print "<div align='center'>
+                               <input type='submit' class='button'                     
+                               onclick=\"closeInfoBox()\" value=\"Cancel\">
+                               <input type=\"submit\" class=\"button\" 
+                               onclick=\"feedBrowserSubscribe()\" value=\"Subscribe\"></div>";
+
+                       print "</div>";
+                       return;
+               }
+
                if ($subop == "editfeed") {
                        $feed_id = db_escape_string($_GET["id"]);
 
                        $parent_feed = db_fetch_result($result, 0, "parent_feed");
                
                        print "<select id=\"iedit_parent_feed\">";
-                       print "<option id=\"0\">None</option>";
+                       print "<option id=\"0\">Not linked</option>";
 
                        if (get_pref($link, 'ENABLE_FEED_CATS')) {
                                if ($cat_id) {
                                size=\"40\">
                                <input type=\"submit\" class=\"button\"
                                onclick=\"javascript:addFeed()\" value=\"Add feed\">
+                               &nbsp;
+                               (<a href='javascript:browseFeeds()'>Browse feeds</a>)
                        </td><td align='right'>
                                <input id=\"feed_search\" size=\"20\"  
                                onchange=\"javascript:updateFeedList()\"
                $_SESSION["pref_sort_feeds"] = $feeds_sort;
 
                if ($feed_search) {
-                       $search_qpart = "(UPPER(title) LIKE UPPER('%$feed_search%') OR
-                               UPPER(feed_url) LIKE UPPER('%$feed_search%')) AND";
+                       $search_qpart = "(UPPER(F1.title) LIKE UPPER('%$feed_search%') OR
+                               UPPER(F1.feed_url) LIKE UPPER('%$feed_search%')) AND";
                } else {
                        $search_qpart = "";
                }
                                ttrss_filter_types.description AS filter_type_descr,
                                feed_id,
                                ttrss_filter_actions.description AS action_description,
-                               (SELECT title FROM ttrss_feeds WHERE id = feed_id) AS feed_title
+                               ttrss_feeds.title AS feed_title
                        FROM 
-                               ttrss_filters,ttrss_filter_types,ttrss_filter_actions
+                               ttrss_filters,ttrss_filter_types,ttrss_filter_actions LEFT JOIN
+                                       ttrss_feeds ON (feed_id = ttrss_feeds.id)
                        WHERE
                                filter_type = ttrss_filter_types.id AND
                                ttrss_filter_actions.id = action_id AND
 
                        $_SESSION["prefs_op_result"] = "save-config";
 
+                       $_SESSION["prefs_cache"] = false;
+
                        foreach (array_keys($_POST) as $pref_name) {
                        
                                $pref_name = db_escape_string($pref_name);
                        $uid = $line["id"];
                        $edit_uid = $_GET["id"];
 
-                       if ($uid == $_SESSION["uid"] || ($subop == "edit" && $uid != $edit_uid)) {
+                       if ($subop == "edit" && $uid != $edit_uid) {
                                $class .= "Grayed";
                                $this_row_id = "";
                        } else {
                print "<h1>Subscribed feeds</h1>";
 
                $result = db_query($link, "SELECT id,title,site_url FROM ttrss_feeds
-                       WHERE owner_uid = '$uid' ORDER BY title LIMIT 20");
+                       WHERE owner_uid = '$uid' ORDER BY title");
 
-               print "<ul class=\"nomarks\">";
+               print "<ul class=\"userFeedList\">";
 
                while ($line = db_fetch_assoc($result)) {