]> git.wh0rd.org - tt-rss.git/blobdiff - classes/pref/feeds.php
hide purge options when config.php has forced things
[tt-rss.git] / classes / pref / feeds.php
index 71b81e1da6a84a4ac5347474676b78687fa980a3..d6abe2328809482ee20edb182043431a367c0acc 100755 (executable)
@@ -71,7 +71,7 @@ class Pref_Feeds extends Handler_Protected {
                $fsth = $this->pdo->prepare("SELECT id, title, last_error,
                        ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated, update_interval
                        FROM ttrss_feeds
-                       WHERE cat_id = :cat AND 
+                       WHERE cat_id = :cat AND
                        owner_uid = :uid AND
                        (:search = '' OR (LOWER(title) LIKE :search OR LOWER(feed_url) LIKE :search))
                        ORDER BY order_id, title");
@@ -238,9 +238,9 @@ class Pref_Feeds extends Handler_Protected {
                        $cat['child_unread'] = 0;
 
                        $fsth = $this->pdo->prepare("SELECT id, title,last_error,
-                               ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated, update_interval                              
+                               ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated, update_interval
                                FROM ttrss_feeds
-                               WHERE cat_id IS NULL AND 
+                               WHERE cat_id IS NULL AND
                                owner_uid = :uid AND
                                (:search = '' OR (LOWER(title) LIKE :search OR LOWER(feed_url) LIKE :search))
                                ORDER BY order_id, title");
@@ -328,13 +328,12 @@ class Pref_Feeds extends Handler_Protected {
        }
 
        private function process_category_order(&$data_map, $item_id, $parent_id = false, $nest_level = 0) {
-               $debug = isset($_REQUEST["debug"]);
 
                $prefix = "";
                for ($i = 0; $i < $nest_level; $i++)
                        $prefix .= "   ";
 
-               if ($debug) _debug("$prefix C: $item_id P: $parent_id");
+               Debug::log("$prefix C: $item_id P: $parent_id");
 
                $bare_item_id = substr($item_id, strpos($item_id, ':')+1);
 
@@ -361,7 +360,7 @@ class Pref_Feeds extends Handler_Protected {
                                $id = $item['_reference'];
                                $bare_id = substr($id, strpos($id, ':')+1);
 
-                               if ($debug) _debug("$prefix [$order_id] $id/$bare_id");
+                               Debug::log("$prefix [$order_id] $id/$bare_id");
 
                                if ($item['_reference']) {
 
@@ -513,8 +512,6 @@ class Pref_Feeds extends Handler_Protected {
                        print '<div dojoType="dijit.layout.TabContainer" style="height : 450px">
                        <div dojoType="dijit.layout.ContentPane" title="'.__('General').'">';
 
-                       $auth_pass_encrypted = $row["auth_pass_encrypted"];
-
                        $title = htmlspecialchars($row["title"]);
 
                        print_hidden("id", "$feed_id");
@@ -565,6 +562,18 @@ class Pref_Feeds extends Handler_Protected {
                                        'dojoType="dijit.form.Select"');
                        }
 
+                       /* Site URL  */
+
+                       $site_url = htmlspecialchars($row["site_url"]);
+
+                       print "<hr/>";
+
+                       print __('Site URL:') . " ";
+                       print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
+                       placeHolder=\"".__("Site URL")."\"
+                       regExp='^(http|https)://.*' style=\"width : 15em\"
+                       name=\"site_url\" value=\"$site_url\">";
+
                        /* FTS Stemming Language */
 
                        if (DB_TYPE == "pgsql") {
@@ -591,6 +600,7 @@ class Pref_Feeds extends Handler_Protected {
 
                        /* Purge intl */
 
+               if (FORCE_ARTICLE_PURGE == 0) {
                        $purge_interval = $row["purge_interval"];
 
                        print "<hr/>";
@@ -599,18 +609,13 @@ class Pref_Feeds extends Handler_Protected {
                        print_select_hash("purge_interval", $purge_interval, $purge_intervals,
                                'dojoType="dijit.form.Select" ' .
                                ((FORCE_ARTICLE_PURGE == 0) ? "" : 'disabled="1"'));
+               }
 
                        print "</div>";
 
                        $auth_login = htmlspecialchars($row["auth_login"]);
-                       $auth_pass = $row["auth_pass"];
+                       $auth_pass = htmlspecialchars($row["auth_pass"]);
 
-                       if ($auth_pass_encrypted && function_exists("mcrypt_decrypt")) {
-                               require_once "crypt.php";
-                               $auth_pass = decrypt_string($auth_pass);
-                       }
-
-                       $auth_pass = htmlspecialchars($auth_pass);
                        $auth_enabled = $auth_login !== '' || $auth_pass !== '';
 
                        $auth_style = $auth_enabled ? '' : 'display: none';
@@ -623,7 +628,6 @@ class Pref_Feeds extends Handler_Protected {
                        autocomplete=\"new-password\"
                        name=\"auth_login\" value=\"$auth_login\"><hr/>";
 
-
                        print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\"
                        autocomplete=\"new-password\"
                        placeHolder=\"".__("Password")."\"
@@ -658,6 +662,7 @@ class Pref_Feeds extends Handler_Protected {
                        print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"private\" id=\"private\"
                        $checked>&nbsp;<label for=\"private\">".__('Hide from Popular feeds')."</label>";
 
+               if (DIGEST_SUBJECT !== false) {
                        $include_in_digest = $row["include_in_digest"];
 
                        if ($include_in_digest) {
@@ -669,6 +674,7 @@ class Pref_Feeds extends Handler_Protected {
                        print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"include_in_digest\"
                        name=\"include_in_digest\"
                        $checked>&nbsp;<label for=\"include_in_digest\">".__('Include in e-mail digest')."</label>";
+               }
 
 
                        $always_display_enclosures = $row["always_display_enclosures"];
@@ -694,7 +700,7 @@ class Pref_Feeds extends Handler_Protected {
                        print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"hide_images\"
                name=\"hide_images\"
                        $checked>&nbsp;<label for=\"hide_images\">".
-                               __('Do not embed images')."</label>";
+                               __('Do not embed media')."</label>";
 
                        $cache_images = $row["cache_images"];
 
@@ -742,7 +748,7 @@ class Pref_Feeds extends Handler_Protected {
                        </label>
                        <input type=\"hidden\" name=\"op\" value=\"pref-feeds\">
                        <input type=\"hidden\" name=\"feed_id\" value=\"$feed_id\">
-                       <input type=\"hidden\" name=\"method\" value=\"uploadicon\">                    
+                       <input type=\"hidden\" name=\"method\" value=\"uploadicon\">
                        <button class=\"\" dojoType=\"dijit.form.Button\" onclick=\"return uploadFeedIcon();\"
                                type=\"submit\">".__('Replace')."</button>
                        <button class=\"btn-danger\" dojoType=\"dijit.form.Button\" onclick=\"return removeFeedIcon($feed_id);\"
@@ -885,7 +891,7 @@ class Pref_Feeds extends Handler_Protected {
                        name=\"hide_images\"
                        dojoType=\"dijit.form.CheckBox\">&nbsp;<label class='insensitive' id=\"hide_images_l\"
                        for=\"hide_images\">".
-               __('Do not embed images')."</label>";
+               __('Do not embed media')."</label>";
 
                print "&nbsp;"; $this->batch_edit_cbox("hide_images", "hide_images_l");
 
@@ -929,6 +935,7 @@ class Pref_Feeds extends Handler_Protected {
 
                $feed_title = trim(clean($_POST["title"]));
                $feed_url = trim(clean($_POST["feed_url"]));
+               $site_url = trim(clean($_POST["site_url"]));
                $upd_intl = (int) clean($_POST["update_interval"]);
                $purge_intl = (int) clean($_POST["purge_interval"]);
                $feed_id = (int) clean($_POST["id"]); /* editSave */
@@ -957,17 +964,17 @@ class Pref_Feeds extends Handler_Protected {
                                $auth_pass = '';
                        }
 
-                       $sth = $this->pdo->prepare("SELECT feed_url FROM ttrss_feeds WHERE id = ?");
+                       /* $sth = $this->pdo->prepare("SELECT feed_url FROM ttrss_feeds WHERE id = ?");
                        $sth->execute([$feed_id]);
-                       $row = $sth->fetch();
-                       $orig_feed_url = $row["feed_url"];
+                       $row = $sth->fetch();$orig_feed_url = $row["feed_url"];
 
-                       $reset_basic_info = $orig_feed_url != $feed_url;
+                       $reset_basic_info = $orig_feed_url != $feed_url; */
 
                        $sth = $this->pdo->prepare("UPDATE ttrss_feeds SET
                                cat_id = :cat_id,
-                               title = :title, 
+                               title = :title,
                                feed_url = :feed_url,
+                               site_url = :site_url,
                                update_interval = :upd_intl,
                                purge_interval = :purge_intl,
                                auth_login = :auth_login,
@@ -985,6 +992,7 @@ class Pref_Feeds extends Handler_Protected {
                        $sth->execute([":title" => $feed_title,
                                        ":cat_id" => $cat_id ? $cat_id : null,
                                        ":feed_url" => $feed_url,
+                                       ":site_url" => $site_url,
                                        ":upd_intl" => $upd_intl,
                                        ":purge_intl" => $purge_intl,
                                        ":auth_login" => $auth_login,
@@ -999,9 +1007,9 @@ class Pref_Feeds extends Handler_Protected {
                                        ":id" => $feed_id,
                                        ":uid" => $_SESSION['uid']]);
 
-                       if ($reset_basic_info) {
+/*                     if ($reset_basic_info) {
                                RSSUtils::set_basic_feed_info($feed_id);
-                       }
+                       } */
 
                        PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_SAVE_FEED,
                                "hook_prefs_save_feed", $feed_id);
@@ -1224,6 +1232,8 @@ class Pref_Feeds extends Handler_Protected {
                <img src='images/indicator_tiny.gif'>".
                 __("Loading, please wait...")."</div>";
 
+               $auto_expand = $feed_search != "" ? "true" : "false";
+
                print "<div dojoType=\"fox.PrefFeedStore\" jsId=\"feedStore\"
                        url=\"backend.php?op=pref-feeds&method=getfeedtree\">
                </div>
@@ -1234,7 +1244,7 @@ class Pref_Feeds extends Handler_Protected {
                <div dojoType=\"fox.PrefFeedTree\" id=\"feedTree\"
                        dndController=\"dijit.tree.dndSource\"
                        betweenThreshold=\"5\"
-                       autoExpand='false'
+                       autoExpand='$auto_expand'
                        model=\"feedModel\" openOnClick=\"false\">
                <script type=\"dojo/method\" event=\"onClick\" args=\"item\">
                        var id = String(item.id);
@@ -1308,25 +1318,6 @@ class Pref_Feeds extends Handler_Protected {
 
                print "</div>"; # pane
 
-               if (strpos($_SERVER['HTTP_USER_AGENT'], "Firefox") !== false) {
-
-                       print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Firefox integration')."\">";
-
-                       print_notice(__('This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below.'));
-
-                       print "<p>";
-
-                       print "<button onclick='window.navigator.registerContentHandler(" .
-                      "\"application/vnd.mozilla.maybe.feed\", " .
-                      "\"" . $this->subscribe_to_feed_url() . "\", " . " \"Tiny Tiny RSS\")'>" .
-                                                        __('Click here to register this site as a feed reader.') .
-                               "</button>";
-
-                       print "</p>";
-
-                       print "</div>"; # pane
-               }
-
                print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Published & shared articles / Generated feeds')."\">";
 
                print "<p>" . __('Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below.') . "</p>";
@@ -1557,12 +1548,10 @@ class Pref_Feeds extends Handler_Protected {
        }
 
        static function remove_feed($id, $owner_uid) {
-               $debug = isset($_REQUEST["debug"]);
-
                foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_UNSUBSCRIBE_FEED) as $p) {
-                       if( ! $p->hook_unsubscribe_feed($id, $owner_uid)){
-                                       if($debug) _debug("Feed not removed due to Error in Plugin. (HOOK_UNSUBSCRIBE_FEED)");
-                                       return;
+                       if (! $p->hook_unsubscribe_feed($id, $owner_uid)) {
+                user_error("Feed $id (owner: $owner_uid) not removed due to plugin error (HOOK_UNSUBSCRIBE_FEED).", E_USER_WARNING);
+                return;
                        }
                }
 
@@ -1726,11 +1715,11 @@ class Pref_Feeds extends Handler_Protected {
 
        function regenFeedKey() {
                $feed_id = clean($_REQUEST['id']);
-               $is_cat = clean($_REQUEST['is_cat']) == "true";
+               $is_cat = clean($_REQUEST['is_cat']);
 
                $new_key = $this->update_feed_access_key($feed_id, $is_cat);
 
-               print json_encode(array("link" => $new_key));
+               print json_encode(["link" => $new_key]);
        }
 
 
@@ -1740,7 +1729,7 @@ class Pref_Feeds extends Handler_Protected {
                // clear old value and generate new one
                $sth = $this->pdo->prepare("DELETE FROM ttrss_access_keys
                        WHERE feed_id = ? AND is_cat = ? AND owner_uid = ?");
-               $sth->execute([$feed_id, $is_cat, $owner_uid]);
+               $sth->execute([$feed_id, bool_to_sql_bool($is_cat), $owner_uid]);
 
                return get_feed_access_key($feed_id, $is_cat, $owner_uid);
        }