]> git.wh0rd.org - tt-rss.git/blobdiff - modules/pref-feeds.php
feed browser: allow subscribing by url for linked feeds
[tt-rss.git] / modules / pref-feeds.php
index e202c2ca400dfa5f457ba40039c112872066524d..3211987ce7cecb0cf3c0f8460ba76b0822802fda 100644 (file)
 
                if ($subop == "getfeedtree") {
 
+                       $search = $_SESSION["prefs_feed_search"];
+
+                       if ($search) $search_qpart = " AND LOWER(title) LIKE LOWER('%$search%')";
+
                        $root = array();
                        $root['id'] = 'root';
                        $root['name'] = __('Feeds');
@@ -59,7 +63,7 @@
                                                ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
                                                FROM ttrss_feeds
                                                WHERE cat_id = '".$line['id']."' AND owner_uid = ".$_SESSION["uid"].
-                                               " ORDER BY order_id, title");
+                                               "$search_qpart ORDER BY order_id, title");
 
                                        while ($feed_line = db_fetch_assoc($feed_result)) {
                                                $feed = array();
@@ -75,7 +79,8 @@
                                                array_push($cat['items'], $feed);
                                        }
 
-                                       array_push($root['items'], $cat);
+                                       if (count($cat['items']) > 0)
+                                               array_push($root['items'], $cat);
                                }
 
                                /* Uncategorized is a special case */
@@ -91,7 +96,7 @@
                                        ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
                                        FROM ttrss_feeds
                                        WHERE cat_id IS NULL AND owner_uid = ".$_SESSION["uid"].
-                                       " ORDER BY order_id, title");
+                                       "$search_qpart ORDER BY order_id, title");
 
                                while ($feed_line = db_fetch_assoc($feed_result)) {
                                        $feed = array();
                                        array_push($cat['items'], $feed);
                                }
 
-                               array_push($root['items'], $cat);
+                               if (count($cat['items']) > 0)
+                                       array_push($root['items'], $cat);
+
                        } else {
                                $feed_result = db_query($link, "SELECT id, title, last_error,
                                        ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
                                        FROM ttrss_feeds
                                        WHERE owner_uid = ".$_SESSION["uid"].
-                                       " ORDER BY order_id, title");
+                                       "$search_qpart ORDER BY order_id, title");
 
                                while ($feed_line = db_fetch_assoc($feed_result)) {
                                        $feed = array();
                                regExp='^(http|https)://.*' style=\"width : 20em\"
                                name=\"feed_url\" value=\"$feed_url\">";
 
+                       $last_error = db_fetch_result($result, 0, "last_error");
+
+                       if ($last_error) {
+                               print "&nbsp;<span title=\"".htmlspecialchars($last_error)."\"
+                                       class=\"feed_error\">(error)</span>";
+
+                       }
+
                        /* Category */
 
                        if (get_pref($link, 'ENABLE_FEED_CATS')) {
                        print "<div class='dlgButtons'>
                                <div style=\"float : left\">
                                <button dojoType=\"dijit.form.Button\" onclick='return unsubscribeFeed($feed_id, \"$title\")'>".
-                                       __('Unsubscribe')."</button>
-                               </div>
-                               <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').execute()\">".__('Save')."</button>
+                                       __('Unsubscribe')."</button>";
+
+                       $pubsub_state = db_fetch_result($result, 0, "pubsub_state");
+
+                       $pubsub_btn_disabled = ($pubsub_state == 2) ? "" : "disabled=\"1\"";
+
+                       print "<button dojoType=\"dijit.form.Button\" id=\"pubsubReset_Btn\" $pubsub_btn_disabled
+                                       onclick='return resetPubSub($feed_id, \"$title\")'>".__('Resubscribe to push updates').
+                                       "</button>";
+
+                       print "</div>";
+
+                       print "<div dojoType=\"dijit.Tooltip\" connectId=\"pubsubReset_Btn\" position=\"below\">".
+                               __('Resets PubSubHubbub subscription status for push-enabled feeds.')."</div>";
+
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').execute()\">".__('Save')."</button>
                                <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').hide()\">".__('Cancel')."</button>
                        </div>";
 
                        return;
                }
 
+               if ($subop == "resetPubSub") {
+
+                       $ids = db_escape_string($_REQUEST["ids"]);
+
+                       db_query($link, "UPDATE ttrss_feeds SET pubsub_state = 0 WHERE id IN ($ids)
+                               AND owner_uid = " . $_SESSION["uid"]);
+
+                       return;
+               }
+
                if ($subop == "remove") {
 
                        $ids = split(",", db_escape_string($_REQUEST["ids"]));
 
                print "<div dojoType=\"dijit.Toolbar\">";
 
+               print "<div style='float : right; padding-right : 4px;'>
+                       <input dojoType=\"dijit.form.TextBox\" id=\"feed_search\" size=\"20\" type=\"search\"
+                               onchange=\"updateFeedList()\" value=\"$feed_search\">
+                       <button dojoType=\"dijit.form.Button\" onclick=\"updateFeedList()\">".
+                               __('Search')."</button>
+                       </div>";
+
                print "<div dojoType=\"dijit.form.DropDownButton\">".
                                "<span>" . __('Select')."</span>";
                print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
                        }
 
                        if ($mode == 1) {
-                               $result = db_query($link, "SELECT feed_url, subscribers FROM
+                               /* $result = db_query($link, "SELECT feed_url, subscribers FROM
                                        ttrss_feedbrowser_cache WHERE (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf
                                        WHERE tf.feed_url = ttrss_feedbrowser_cache.feed_url
                                        AND owner_uid = '$owner_uid') $search_qpart
-                                       ORDER BY subscribers DESC LIMIT $limit");
+                                       ORDER BY subscribers DESC LIMIT $limit"); */
+
+                               $result = db_query($link, "SELECT feed_url, title, SUM(subscribers) AS subscribers FROM
+                                       (SELECT feed_url, title, subscribers FROM ttrss_feedbrowser_cache UNION ALL
+                                               SELECT feed_url, title, subscribers FROM ttrss_linked_feeds) AS qqq
+                                       WHERE
+                                               (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf
+                                                       WHERE tf.feed_url = qqq.feed_url
+                                                               AND owner_uid = '$owner_uid') $search_qpart
+                                       GROUP BY feed_url, title ORDER BY subscribers DESC LIMIT $limit");
+
                        } else if ($mode == 2) {
                                $result = db_query($link, "SELECT *,
                                        (SELECT COUNT(*) FROM ttrss_user_entries WHERE
                                                $site_url = "";
                                        }
 
-                                       $feed_url = "<a target=\"_blank\" href=\"$feed_url\"><img
+                                       $feed_url = "<a class=\"fb_feedUrl\" target=\"_blank\"
+                                               href=\"$feed_url\"><img
                                                style='border-width : 0px; vertical-align : middle'
                                                src='images/feed-icon-12x12.png'></a>";
 
-                                       $rv .= "<li title=\"".htmlspecialchars($details["site_url"])."\"
-                                               id=\"FBROW-".$details["id"]."\">$check_box".
-                                               "$feed_icon $feed_url " . htmlspecialchars($details["title"]) .
+                                       $rv .= "<li title=\"".htmlspecialchars($details["site_url"])."\">
+                                               $check_box".
+                                               "$feed_icon $feed_url " .
+                                               "<span class=\"fb_feedTitle\">".htmlspecialchars($line["title"]).
+                                               "</span>".
                                                "&nbsp;<span class='subscribers'>($subscribers)</span>
                                                $site_url</li>";