per-feed update intervals

This commit is contained in:
Andrew Dolgov 2005-10-13 04:15:09 +01:00
parent 1cae701741
commit d148926e2b
7 changed files with 48 additions and 10 deletions

View File

@ -693,10 +693,15 @@
if ($subop == "editSave") { if ($subop == "editSave") {
$feed_title = db_escape_string($_GET["t"]); $feed_title = db_escape_string($_GET["t"]);
$feed_link = db_escape_string($_GET["l"]); $feed_link = db_escape_string($_GET["l"]);
$upd_intl = db_escape_string($_GET["ui"]);
$feed_id = $_GET["id"]; $feed_id = $_GET["id"];
if (strtoupper($upd_intl) == "DEFAULT")
$upd_intl = 0;
$result = db_query($link, "UPDATE ttrss_feeds SET $result = db_query($link, "UPDATE ttrss_feeds SET
title = '$feed_title', feed_url = '$feed_link' WHERE id = '$feed_id'"); title = '$feed_title', feed_url = '$feed_link',
update_interval = '$upd_intl' WHERE id = '$feed_id'");
} }
@ -743,14 +748,16 @@
</table>"; </table>";
$result = db_query($link, "SELECT $result = db_query($link, "SELECT
id,title,feed_url,substring(last_updated,1,16) as last_updated id,title,feed_url,substring(last_updated,1,16) as last_updated,
update_interval
FROM FROM
ttrss_feeds ORDER by title"); ttrss_feeds ORDER by title");
print "<p><table width=\"100%\" class=\"prefFeedList\" id=\"prefFeedList\">"; print "<p><table width=\"100%\" class=\"prefFeedList\" id=\"prefFeedList\">";
print "<tr class=\"title\"> print "<tr class=\"title\">
<td>&nbsp;</td><td>Select</td><td width=\"40%\">Title</td> <td>&nbsp;</td><td>Select</td><td width=\"40%\">Title</td>
<td width=\"40%\">Link</td><td>Last updated</td></tr>"; <td width=\"30%\">Link</td><td width=\"10%\">Update Interval</td>
<td>Last updated</td></tr>";
$lnum = 0; $lnum = 0;
@ -788,6 +795,11 @@
print "<td><a href=\"javascript:editFeed($feed_id);\">" . print "<td><a href=\"javascript:editFeed($feed_id);\">" .
$line["feed_url"] . "</td>"; $line["feed_url"] . "</td>";
if ($line["update_interval"] == "0")
$line["update_interval"] = "Default";
print "<td>" . $line["update_interval"] . "</td>";
} else if ($feed_id != $edit_feed_id) { } else if ($feed_id != $edit_feed_id) {
@ -797,12 +809,18 @@
print "<td>".$line["title"]."</td>"; print "<td>".$line["title"]."</td>";
print "<td>".$line["feed_url"]."</td>"; print "<td>".$line["feed_url"]."</td>";
if ($line["update_interval"] == "0")
$line["update_interval"] = "Default";
print "<td>" . $line["update_interval"] . "</td>";
} else { } else {
print "<td><input disabled=\"true\" type=\"checkbox\"></td>"; print "<td><input disabled=\"true\" type=\"checkbox\"></td>";
print "<td><input id=\"iedit_title\" value=\"".$line["title"]."\"></td>"; print "<td><input id=\"iedit_title\" value=\"".$line["title"]."\"></td>";
print "<td><input id=\"iedit_link\" value=\"".$line["feed_url"]."\"></td>"; print "<td><input id=\"iedit_link\" value=\"".$line["feed_url"]."\"></td>";
print "<td><input id=\"iedit_updintl\" value=\"".$line["update_interval"]."\"></td>";
} }

View File

@ -30,5 +30,7 @@
// crafted SQL queries. This feature is highly experimental and // crafted SQL queries. This feature is highly experimental and
// at this point not user friendly. Use with caution. // at this point not user friendly. Use with caution.
define(MIN_UPDATE_INTERVAL, 30);
// min. interval between feed updates, minutes
?> ?>

View File

@ -24,12 +24,20 @@
db_query($link, "BEGIN"); db_query($link, "BEGIN");
$result = db_query($link, "SELECT feed_url,id,last_updated FROM ttrss_feeds"); $result = db_query($link, "SELECT feed_url,id,
substring(last_updated,1,19) as last_updated,
update_interval FROM ttrss_feeds");
while ($line = db_fetch_assoc($result)) { while ($line = db_fetch_assoc($result)) {
// if (!$line["last_updated"] || time() - strtotime($line["last_updated"]) > 1800) { $upd_intl = $line["update_interval"];
if (!$upd_intl) $upd_intl = MIN_UPDATE_INTERVAL;
if (!$line["last_updated"] ||
time() - strtotime($line["last_updated"]) > ($upd_intl * 60)) {
update_rss_feed($link, $line["feed_url"], $line["id"]); update_rss_feed($link, $line["feed_url"], $line["id"]);
// } }
} }
purge_old_posts($link); purge_old_posts($link);

View File

@ -454,9 +454,16 @@ function feedEditSave() {
var link = document.getElementById("iedit_link").value; var link = document.getElementById("iedit_link").value;
var title = document.getElementById("iedit_title").value; var title = document.getElementById("iedit_title").value;
var upd_intl = document.getElementById("iedit_updintl").value;
// notify("Saving feed."); // notify("Saving feed.");
if (upd_intl < 0) {
notify("Update interval must be &gt;= 0 (0 = default)");
return;
}
if (link.length == 0) { if (link.length == 0) {
notify("Feed link cannot be blank."); notify("Feed link cannot be blank.");
return; return;
@ -470,7 +477,8 @@ function feedEditSave() {
active_feed = false; active_feed = false;
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editSave&id=" + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editSave&id=" +
feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) ,true); feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) +
"&ui=" + param_escape(upd_intl), true);
xmlhttp.onreadystatechange=feedlist_callback; xmlhttp.onreadystatechange=feedlist_callback;
xmlhttp.send(null); xmlhttp.send(null);

View File

@ -6,6 +6,7 @@ create table ttrss_feeds (id integer not null auto_increment primary key,
title varchar(200) not null unique, title varchar(200) not null unique,
feed_url varchar(250) unique not null, feed_url varchar(250) unique not null,
icon_url varchar(250) not null default '', icon_url varchar(250) not null default '',
update_interval integer not null default 0,
last_updated datetime default '') TYPE=InnoDB; last_updated datetime default '') TYPE=InnoDB;
insert into ttrss_feeds (title,feed_url) values ('Footnotes', 'http://gnomedesktop.org/node/feed'); insert into ttrss_feeds (title,feed_url) values ('Footnotes', 'http://gnomedesktop.org/node/feed');

View File

@ -6,6 +6,7 @@ create table ttrss_feeds (id serial not null primary key,
title varchar(200) not null unique, title varchar(200) not null unique,
feed_url varchar(250) unique not null, feed_url varchar(250) unique not null,
icon_url varchar(250) not null default '', icon_url varchar(250) not null default '',
update_interval integer not null default 0,
last_updated timestamp default null); last_updated timestamp default null);
insert into ttrss_feeds (title,feed_url) values ('Footnotes', 'http://gnomedesktop.org/node/feed'); insert into ttrss_feeds (title,feed_url) values ('Footnotes', 'http://gnomedesktop.org/node/feed');

View File

@ -204,7 +204,7 @@ a:hover {
opacity : 0.8; opacity : 0.8;
} }
#iedit_title, #iedit_link, #iedit_regexp, #iedit_descr, #iedit_expr { #iedit_title, #iedit_link, #iedit_regexp, #iedit_descr, #iedit_expr, #iedit_updintl {
width : 100%; width : 100%;
padding-left : 2px; padding-left : 2px;
} }