diff options
Diffstat (limited to 'backend.php')
-rw-r--r-- | backend.php | 107 |
1 files changed, 16 insertions, 91 deletions
diff --git a/backend.php b/backend.php index 198252dc6..e89163dec 100644 --- a/backend.php +++ b/backend.php @@ -1,18 +1,21 @@ <? header("Content-Type: application/xml"); - include "config.php"; + require_once "config.php"; + require_once "functions.php"; + require_once "magpierss/rss_fetch.inc"; - require_once('magpierss/rss_fetch.inc'); $link = pg_connect(DB_CONN); pg_query("set client_encoding = 'utf-8'"); $op = $_GET["op"]; - + if ($op == "feeds") { + update_all_feeds($link); + $result = pg_query("SELECT *, (SELECT count(id) FROM ttrss_entries WHERE feed_id = ttrss_feeds.id) AS total, @@ -20,7 +23,7 @@ WHERE feed_id = ttrss_feeds.id AND unread = true) as unread FROM ttrss_feeds ORDER BY title"); - print "<table width=\"100%\">"; + print "<table width=\"100%\" class=\"feeds\">"; $lnum = 0; @@ -33,8 +36,6 @@ $unread = $line["unread"]; $class = ($lnum % 2) ? "even" : "odd"; - -// if ($lnum == 2 || $lnum == 0) $feed = "<b>$feed</b>"; if ($unread > 0) $class .= "Unread"; @@ -49,6 +50,9 @@ ++$lnum; } + print "<tr><td class=\"footer\" colspan=\"3\"> + <a href=\"javascript:update_feed_list()\">Update all feeds</a></td></tr>"; + print "</table>"; } @@ -86,95 +90,17 @@ if ($ext == "undefined") $ext = ""; - $result = pg_query("SELECT * FROM ttrss_feeds WHERE id = '$feed'"); + $result = pg_query("SELECT *, + EXTRACT(EPOCH FROM NOW()) - EXTRACT(EPOCH FROM last_updated) as update_timeout + FROM ttrss_feeds WHERE id = '$feed'"); if ($result) { $line = pg_fetch_assoc($result); - if (!$ext) { - - $rss = fetch_rss($line["feed_url"]); - - if ($rss) { - - foreach ($rss->items as $item) { - - $entry_guid = $item["id"]; - - if (!$entry_guid) $entry_guid = $item["guid"]; - if (!$entry_guid) $entry_guid = $item["link"]; - - $entry_timestamp = $item["pubdate"]; - if (!$entry_timestamp) $entry_timestamp = $item["modified"]; - if (!$entry_timestamp) $entry_timestamp = $item["updated"]; - - $entry_timestamp = strtotime($entry_timestamp); - - $entry_title = $item["title"]; - $entry_link = $item["link"]; - - $entry_content = $item["description"]; - if (!$entry_content) $entry_content = $item["content"]; - - $entry_content = pg_escape_string($entry_content); - $entry_title = pg_escape_string($entry_title); - - $content_md5 = md5($entry_content); - - $result = pg_query(" - SELECT - id,unread,md5_hash - FROM - ttrss_entries - WHERE - guid = '$entry_guid' OR md5_hash = '$content_md5'"); - - if (pg_num_rows($result) == 0) { - - $entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); - - $query = "INSERT INTO ttrss_entries - (title, guid, link, updated, content, feed_id, md5_hash) - VALUES - ('$entry_title', '$entry_guid', '$entry_link', - '$entry_timestamp', '$entry_content', '$feed', - '$content_md5')"; - - pg_query($query); - - } else { - - $entry_id = pg_fetch_result($result, 0, "id"); - $entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); - - $unread = pg_fetch_result($result, 0, "unread"); - $md5_hash = pg_fetch_result($result, 0, "md5_hash"); - - if ($md5_hash != $content_md5) - $unread = "false"; - - $query = "UPDATE ttrss_entries - SET - title ='$entry_title', - link = '$entry_link', - updated = '$entry_timestamp', - content = '$entry_content', - md5_hash = '$content_md5', - unread = '$unread' - WHERE - id = '$entry_id'"; - - $result = pg_query($query); - - // print "$entry_guid - $entry_timestamp - $entry_title - - // $entry_link - $entry_id<br>"; - - } - - } - - } + if (!$ext && $line["update_timeout"] > MIN_UPDATE_TIME) { + + update_rss_feed($link, $line["feed_url"], $feed); } else { @@ -183,7 +109,6 @@ pg_query("UPDATE ttrss_entries SET unread = false WHERE feed_id = '$feed'"); } - } } |