]> git.wh0rd.org - tt-rss.git/blobdiff - classes/pref/feeds.php
add HOOK_UNSUBSCRIBE_FEED
[tt-rss.git] / classes / pref / feeds.php
index 78e0f2f2bf70ee1fe6d93d3f67eef8aabd0c5bc4..fcbc0f8cdab00efab2845bb7d3afc9e116b1edf6 100755 (executable)
@@ -339,7 +339,7 @@ class Pref_Feeds extends Handler_Protected {
                                owner_uid = " . $_SESSION["uid"]);
                }
 
-               $order_id = 0;
+               $order_id = 1;
 
                $cat = $data_map[$item_id];
 
@@ -634,16 +634,8 @@ class Pref_Feeds extends Handler_Protected {
                                ((FORCE_ARTICLE_PURGE == 0) ? "" : 'disabled="1"'));
 
                print "</div>";
-               print "<div class=\"dlgSec\">".__("Authentication")."</div>";
-               print "<div class=\"dlgSecCont\">";
 
                $auth_login = htmlspecialchars($this->dbh->fetch_result($result, 0, "auth_login"));
-
-               print "<input dojoType=\"dijit.form.TextBox\" id=\"feedEditDlg_login\"
-                       placeHolder=\"".__("Login")."\"
-                       autocomplete=\"new-password\"
-                       name=\"auth_login\" value=\"$auth_login\"><hr/>";
-
                $auth_pass = $this->dbh->fetch_result($result, 0, "auth_pass");
 
                if ($auth_pass_encrypted && function_exists("mcrypt_decrypt")) {
@@ -652,6 +644,18 @@ class Pref_Feeds extends Handler_Protected {
                }
 
                $auth_pass = htmlspecialchars($auth_pass);
+               $auth_enabled = $auth_login !== '' || $auth_pass !== '';
+
+               $auth_style = $auth_enabled ? '' : 'display: none';
+               print "<div id='feedEditDlg_loginContainer' style='$auth_style'>";
+               print "<div class=\"dlgSec\">".__("Authentication")."</div>";
+               print "<div class=\"dlgSecCont\">";
+
+               print "<input dojoType=\"dijit.form.TextBox\" id=\"feedEditDlg_login\"
+                       placeHolder=\"".__("Login")."\"
+                       autocomplete=\"new-password\"
+                       name=\"auth_login\" value=\"$auth_login\"><hr/>";
+
 
                print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\"
                        autocomplete=\"new-password\"
@@ -662,7 +666,14 @@ class Pref_Feeds extends Handler_Protected {
                        ".__('<b>Hint:</b> you need to fill in your login information if your feed requires authentication, except for Twitter feeds.')."
                        </div>";
 
-               print "</div>";
+               print "</div></div>";
+
+               $auth_checked = $auth_enabled ? 'checked' : '';
+               print "<div style=\"clear : both\">
+                               <input type=\"checkbox\" $auth_checked name=\"need_auth\" dojoType=\"dijit.form.CheckBox\" id=\"feedEditDlg_loginCheck\"
+                                               onclick='checkboxToggleElement(this, \"feedEditDlg_loginContainer\")'>
+                                       <label for=\"feedEditDlg_loginCheck\">".
+                                       __('This feed requires authentication.')."</div>";
 
                print '</div><div dojoType="dijit.layout.ContentPane" title="'.__('Options').'">';
 
@@ -784,20 +795,8 @@ class Pref_Feeds extends Handler_Protected {
                        <button class=\"danger\" dojoType=\"dijit.form.Button\" onclick='return unsubscribeFeed($feed_id, \"$title\")'>".
                                __('Unsubscribe')."</button>";
 
-               if (PUBSUBHUBBUB_ENABLED) {
-                       $pubsub_state = $this->dbh->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>";
@@ -983,7 +982,6 @@ class Pref_Feeds extends Handler_Protected {
 
                $feed_language = $this->dbh->escape_string(trim($_POST["feed_language"]));
 
-               $auth_pass_encrypted = 'false';
                $auth_pass = $this->dbh->escape_string($auth_pass);
 
                if (get_pref('ENABLE_FEED_CATS')) {
@@ -1000,6 +998,10 @@ class Pref_Feeds extends Handler_Protected {
                }
 
                if (!$batch) {
+                       if ($_POST["need_auth"] !== 'on') {
+                               $auth_login = '';
+                               $auth_pass = '';
+                       }
 
                        $result = db_query("SELECT feed_url FROM ttrss_feeds WHERE id = " . $feed_id);
                        $orig_feed_url = db_fetch_result($result, 0, "feed_url");
@@ -1013,7 +1015,7 @@ class Pref_Feeds extends Handler_Protected {
                                purge_interval = '$purge_intl',
                                auth_login = '$auth_login',
                                auth_pass = '$auth_pass',
-                               auth_pass_encrypted = $auth_pass_encrypted,
+                               auth_pass_encrypted = false,
                                private = $private,
                                cache_images = $cache_images,
                                hide_images = $hide_images,
@@ -1067,8 +1069,7 @@ class Pref_Feeds extends Handler_Protected {
                                                break;
 
                                        case "auth_pass":
-                                               $qpart = "auth_pass = '$auth_pass' AND
-                                                       auth_pass_encrypted = $auth_pass_encrypted";
+                                               $qpart = "auth_pass = '$auth_pass', auth_pass_encrypted = false";
                                                break;
 
                                        case "private":
@@ -1118,16 +1119,6 @@ class Pref_Feeds extends Handler_Protected {
                return;
        }
 
-       function resetPubSub() {
-
-               $ids = $this->dbh->escape_string($_REQUEST["ids"]);
-
-               $this->dbh->query("UPDATE ttrss_feeds SET pubsub_state = 0 WHERE id IN ($ids)
-                       AND owner_uid = " . $_SESSION["uid"]);
-
-               return;
-       }
-
        function remove() {
 
                $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"]));
@@ -1489,7 +1480,7 @@ class Pref_Feeds extends Handler_Protected {
 
                        print "<button onclick='window.navigator.registerContentHandler(" .
                       "\"application/vnd.mozilla.maybe.feed\", " .
-                      "\"" . add_feed_url() . "\", " . " \"Tiny Tiny RSS\")'>" .
+                      "\"" . $this->subscribe_to_feed_url() . "\", " . " \"Tiny Tiny RSS\")'>" .
                                                         __('Click here to register this site as a feed reader.') .
                                "</button>";
 
@@ -1749,6 +1740,10 @@ class Pref_Feeds extends Handler_Protected {
 
        static function remove_feed($id, $owner_uid) {
 
+               foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_UNSUBSCRIBE_FEED) as $p) {
+                       $line = $p->hook_unsubscribe_feed($id, $owner_uid);
+               }
+
                if ($id > 0) {
 
                        /* save starred articles in Archived feed */
@@ -1879,7 +1874,6 @@ class Pref_Feeds extends Handler_Protected {
                                        "SELECT id FROM ttrss_feeds
                                        WHERE feed_url = '$feed' AND owner_uid = ".$_SESSION["uid"]);
 
-                               $auth_pass_encrypted = 'false';
                                $pass = $this->dbh->escape_string($pass);
 
                                if ($this->dbh->num_rows($result) == 0) {
@@ -1887,7 +1881,7 @@ class Pref_Feeds extends Handler_Protected {
                                                "INSERT INTO ttrss_feeds
                                                        (owner_uid,feed_url,title,cat_id,auth_login,auth_pass,update_method,auth_pass_encrypted)
                                                VALUES ('".$_SESSION["uid"]."', '$feed',
-                                                       '[Unknown]', $cat_qpart, '$login', '$pass', 0, $auth_pass_encrypted)");
+                                                       '[Unknown]', $cat_qpart, '$login', '$pass', 0, false)");
                                }
 
                                $this->dbh->query("COMMIT");
@@ -1972,4 +1966,11 @@ class Pref_Feeds extends Handler_Protected {
 
                print (int) $this->dbh->fetch_result($result, 0, "num_inactive");
        }
-}
\ No newline at end of file
+
+       static function subscribe_to_feed_url() {
+               $url_path = get_self_url_prefix() .
+                       "/public.php?op=subscribe&feed_url=%s";
+               return $url_path;
+       }
+
+}