<?php
class Pref_Feeds extends Handler_Protected {
+ public static $feed_languages = array("English", "Danish", "Dutch", "Finnish", "French", "German", "Hungarian", "Italian", "Norwegian",
+ "Portuguese", "Russian", "Spanish", "Swedish", "Turkish", "Simple");
function csrf_ignore($method) {
$csrf_ignored = array("index", "getfeedtree", "add", "editcats", "editfeed",
$cat['unread'] = 0;
$cat['child_unread'] = 0;
$cat['auxcounter'] = 0;
+ $cat['parent_id'] = $cat_id;
$cat['items'] = $this->get_category_items($line['id']);
# print_r($data['items']);
if (is_array($data) && is_array($data['items'])) {
- $cat_order_id = 0;
+# $cat_order_id = 0;
$data_map = array();
$root_item = false;
$feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]);
if (is_file($icon_file) && $feed_id) {
- if (filesize($icon_file) < 20000) {
+ if (filesize($icon_file) < 65535) {
$result = $this->dbh->query("SELECT id FROM ttrss_feeds
WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]);
global $purge_intervals;
global $update_intervals;
+ print '<div dojoType="dijit.layout.TabContainer" style="height : 450px">
+ <div dojoType="dijit.layout.ContentPane" title="'.__('General').'">';
+
$feed_id = $this->dbh->escape_string($_REQUEST["id"]);
$result = $this->dbh->query(
$last_error = $this->dbh->fetch_result($result, 0, "last_error");
if ($last_error) {
- print " <span title=\"".htmlspecialchars($last_error)."\"
- class=\"feed_error\">(error)</span>";
+ print " <img src=\"images/error.png\" alt=\"(error)\"
+ style=\"vertical-align : middle\"
+ title=\"".htmlspecialchars($last_error)."\">";
}
'dojoType="dijit.form.Select"');
}
+ /* FTS Stemming Language */
+
+ if (DB_TYPE == "pgsql") {
+ $feed_language = $this->dbh->fetch_result($result, 0, "feed_language");
+
+ print "<hr/>";
+
+ print __('Language:') . " ";
+ print_select("feed_language", $feed_language, $this::$feed_languages,
+ 'dojoType="dijit.form.Select"');
+ }
+
print "</div>";
print "<div class=\"dlgSec\">".__("Update")."</div>";
</div>";
print "</div>";
- print "<div class=\"dlgSec\">".__("Options")."</div>";
- print "<div class=\"dlgSecCont\">";
+
+ print '</div><div dojoType="dijit.layout.ContentPane" title="'.__('Options').'">';
+
+ //print "<div class=\"dlgSec\">".__("Options")."</div>";
+ print "<div class=\"dlgSecSimple\">";
$private = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "private"));
print "</div>";
+ print '</div><div dojoType="dijit.layout.ContentPane" title="'.__('Icon').'">';
+
/* Icon */
- print "<div class=\"dlgSec\">".__("Icon")."</div>";
- print "<div class=\"dlgSecCont\">";
+ print "<div class=\"dlgSecSimple\">";
print "<iframe name=\"icon_upload_iframe\"
style=\"width: 400px; height: 100px; display: none;\"></iframe>";
<input id=\"icon_file\" size=\"10\" name=\"icon_file\" type=\"file\">
<input type=\"hidden\" name=\"op\" value=\"pref-feeds\">
<input type=\"hidden\" name=\"feed_id\" value=\"$feed_id\">
- <input type=\"hidden\" name=\"method\" value=\"uploadicon\">
- <button dojoType=\"dijit.form.Button\" onclick=\"return uploadFeedIcon();\"
+ <input type=\"hidden\" name=\"method\" value=\"uploadicon\"><p>
+ <button class=\"\" dojoType=\"dijit.form.Button\" onclick=\"return uploadFeedIcon();\"
type=\"submit\">".__('Replace')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"return removeFeedIcon($feed_id);\"
+ <button class=\"\" dojoType=\"dijit.form.Button\" onclick=\"return removeFeedIcon($feed_id);\"
type=\"submit\">".__('Remove')."</button>
</form>";
print "</div>";
+ print '</div><div dojoType="dijit.layout.ContentPane" title="'.__('Plugins').'">';
+
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_EDIT_FEED,
"hook_prefs_edit_feed", $feed_id);
+
+ print "</div></div>";
+
$title = htmlspecialchars($title, ENT_QUOTES);
print "<div class='dlgButtons'>
<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').hide()\">".__('Cancel')."</button>
</div>";
+
return;
}
}
+ /* FTS Stemming Language */
+
+ if (DB_TYPE == "pgsql") {
+ print "<hr/>";
+
+ print __('Language:') . " ";
+ print_select("feed_language", "", $this::$feed_languages,
+ 'disabled="1" dojoType="dijit.form.Select"');
+
+ $this->batch_edit_cbox("feed_language");
+ }
+
print "</div>";
print "<div class=\"dlgSec\">".__("Update")."</div>";
$mark_unread_on_update = checkbox_to_sql_bool(
$this->dbh->escape_string($_POST["mark_unread_on_update"]));
+ $feed_language = $this->dbh->escape_string(trim($_POST["feed_language"]));
+
if (strlen(FEED_CRYPT_KEY) > 0) {
require_once "crypt.php";
$auth_pass = substr(encrypt_string($auth_pass), 0, 250);
if (!$batch) {
- $result = $this->dbh->query("UPDATE ttrss_feeds SET
+ $result = db_query("SELECT feed_url FROM ttrss_feeds WHERE id = " . $feed_id);
+ $orig_feed_url = db_fetch_result($result, 0, "feed_url");
+
+ $reset_basic_info = $orig_feed_url != $feed_link;
+
+ $this->dbh->query("UPDATE ttrss_feeds SET
$category_qpart
title = '$feed_title', feed_url = '$feed_link',
update_interval = '$upd_intl',
hide_images = $hide_images,
include_in_digest = $include_in_digest,
always_display_enclosures = $always_display_enclosures,
- mark_unread_on_update = $mark_unread_on_update
+ mark_unread_on_update = $mark_unread_on_update,
+ feed_language = '$feed_language'
WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]);
+ if ($reset_basic_info) {
+ require_once "rssfuncs.php";
+
+ set_basic_feed_info($feed_id);
+ }
+
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_SAVE_FEED,
"hook_prefs_save_feed", $feed_id);
$qpart = $category_qpart_nocomma;
break;
+ case "feed_language":
+ $qpart = "feed_language = '$feed_language'";
+ break;
+
}
if ($qpart) {
__("Feeds with errors") . "</button>";
}
- if (DB_TYPE == "pgsql") {
- $interval_qpart = "NOW() - INTERVAL '3 months'";
- } else {
- $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)";
- }
-
- $result = $this->dbh->query("SELECT COUNT(*) AS num_inactive FROM ttrss_feeds WHERE
- (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE
- ttrss_entries.id = ref_id AND
- ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart AND
- ttrss_feeds.owner_uid = ".$_SESSION["uid"]);
-
- $num_inactive = $this->dbh->fetch_result($result, 0, "num_inactive");
-
- if ($num_inactive > 0) {
- $inactive_button = "<button dojoType=\"dijit.form.Button\"
- onclick=\"showInactiveFeeds()\">" .
- __("Inactive feeds") . "</button>";
- }
+ $inactive_button = "<button dojoType=\"dijit.form.Button\"
+ id=\"pref_feeds_inactive_btn\"
+ style=\"display : none\"
+ onclick=\"showInactiveFeeds()\">" .
+ __("Inactive feeds") . "</button>";
$feed_search = $this->dbh->escape_string($_REQUEST["search"]);
</script>
<script type=\"dojo/method\" event=\"onLoad\" args=\"item\">
Element.hide(\"feedlistLoading\");
+
+ checkInactiveFeeds();
</script>
</div>";
print "</p>";
- print_warning(__("You can disable all articles shared by unique URLs here."));
-
- print "<p>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return clearArticleAccessKeys()\">".
- __('Unshare all articles')."</button> ";
-
- print "</p>";
-
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION,
"hook_prefs_tab_section", "prefFeedsPublishedGenerated");
# class needed for selectTableRows()
print "<tr class=\"placeholder\" $this_row_id>";
- $edit_title = htmlspecialchars($line["title"]);
-
# id needed for selectTableRows()
print "<td width='5%' align='center'><input
onclick='toggleSelectRow2(this);' dojoType=\"dijit.form.CheckBox\"
# class needed for selectTableRows()
print "<tr class=\"placeholder\" $this_row_id>";
- $edit_title = htmlspecialchars($line["title"]);
-
# id needed for selectTableRows()
print "<td width='5%' align='center'><input
onclick='toggleSelectRow2(this);' dojoType=\"dijit.form.CheckBox\"
}
print "</td></tr><tr><td colspan='2'>";
print "<textarea
- style='font-size : 12px; width : 100%; height: 200px;'
+ style='font-size : 12px; width : 98%; height: 200px;'
placeHolder=\"".__("Feeds to subscribe, One per line")."\"
dojoType=\"dijit.form.SimpleTextarea\" required=\"1\" name=\"feeds\"></textarea>";
AND owner_uid = " . $owner_uid);
if ($this->dbh->num_rows($result) == 1) {
- $key = $this->dbh->escape_string(sha1(uniqid(rand(), true)));
+ $key = $this->dbh->escape_string(uniqid_short());
$this->dbh->query("UPDATE ttrss_access_keys SET access_key = '$key'
WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat
return $c;
}
+ function getinactivefeeds() {
+ if (DB_TYPE == "pgsql") {
+ $interval_qpart = "NOW() - INTERVAL '3 months'";
+ } else {
+ $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)";
+ }
+
+ $result = $this->dbh->query("SELECT COUNT(*) AS num_inactive FROM ttrss_feeds WHERE
+ (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE
+ ttrss_entries.id = ref_id AND
+ ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart AND
+ ttrss_feeds.owner_uid = ".$_SESSION["uid"]);
+
+ print (int) $this->dbh->fetch_result($result, 0, "num_inactive");
+ }
}
?>