"; $lnum = 0; $total_unread = 0; while ($line = pg_fetch_assoc($result)) { $feed = $line["title"]; $feed_id = $line["id"]; $subop = $_GET["subop"]; $total = $line["total"]; $unread = $line["unread"]; $class = ($lnum % 2) ? "even" : "odd"; if ($unread > 0) $class .= "Unread"; $total_unread += $unread; print ""; $icon_file = ICONS_DIR . "/$feed_id.ico"; if ($subop != "piggie") { if (file_exists($icon_file) && filesize($icon_file) > 0) { $feed_icon = ""; } else { $feed_icon = " "; } } else { $feed_icon = ""; } $feed = "$feed"; if (ENABLE_FEED_ICONS) { print "$feed_icon"; } print "$feed"; print ""; print "$unread / "; print "$total"; print ""; print ""; ++$lnum; } // print " // Update all feeds"; // print " "; // print ""; print ""; print "
$total_unread
"; /* print "

All feeds: Update"; print " Mark as read

"; print "
$total_unread
"; */ } if ($op == "rpc") { $subop = $_GET["subop"]; if ($subop == "updateFeed") { $feed_id = $_GET["feed"]; $result = pg_query($link, "SELECT feed_url FROM ttrss_feeds WHERE id = '$feed_id'"); if (pg_num_rows($result) > 0) { $feed_url = pg_fetch_result($result, 0, "feed_url"); // update_rss_feed($link, $feed_url, $feed_id); } print "DONE-$feed_id"; return; } if ($subop == "forceUpdateAllFeeds") { update_all_feeds($link, true); outputFeedList($link); } if ($subop == "updateAllFeeds") { update_all_feeds($link, false); outputFeedList($link); } if ($subop == "catchupPage") { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { pg_query("UPDATE ttrss_entries SET unread=false,last_read = NOW() WHERE id = '$id'"); } print "Marked active page as read."; } } if ($op == "feeds") { $subop = $_GET["subop"]; if ($subop == "catchupAll") { pg_query("UPDATE ttrss_entries SET last_read = NOW(),unread = false"); } outputFeedList($link); } if ($op == "view") { $id = $_GET["id"]; $result = pg_query("UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE id = '$id'"); $result = pg_query("SELECT title,link,content,feed_id,comments, (SELECT icon_url FROM ttrss_feeds WHERE id = feed_id) as icon_url FROM ttrss_entries WHERE id = '$id'"); if ($result) { $line = pg_fetch_assoc($result); if ($line["icon_url"]) { $feed_icon = ""; } else { $feed_icon = " "; } print ""; print ""; if ($line["comments"] && $line["comments"] != $line["link"]) { // print " // // "; $comments_prompt = "(Comments)"; } print ""; print ""; print "
Title: ".$line["title"]."  
Comments:".$line["comments"]." 
Link: ".$line["link"]." $comments_prompt  
" . $line["content"] . " $feed_icon
"; } } if ($op == "viewfeed") { $feed = $_GET["feed"]; $skip = $_GET["skip"]; $subop = $_GET["subop"]; if (!$skip) $skip = 0; if ($subop == "undefined") $subop = ""; // FIXME: check for null value here $result = pg_query("SELECT *,SUBSTRING(last_updated,1,16) as last_updated, 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 ($subop == "ForceUpdate" || (!$subop && $line["update_timeout"] > MIN_UPDATE_TIME)) { update_rss_feed($link, $line["feed_url"], $feed); } else { if ($subop == "MarkAllRead") { pg_query("UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE feed_id = '$feed'"); } } } print ""; $feed_last_updated = "Updated: " . $line["last_updated"]; print ""; print ""; $search = $_GET["search"]; if (search) { $search_query_part = "(upper(title) LIKE upper('%$search%') OR content LIKE '%$search%') AND"; } $result = pg_query("SELECT count(id) AS total_entries FROM ttrss_entries WHERE $search_query_part feed_id = '$feed'"); $total_entries = pg_fetch_result($result, 0, "total_entries"); $result = pg_query("SELECT id,title,updated,unread,feed_id, EXTRACT(EPOCH FROM last_read) AS last_read_ts, EXTRACT(EPOCH FROM updated) AS updated_ts FROM ttrss_entries WHERE $search_query_part feed_id = '$feed' ORDER BY updated DESC LIMIT ".HEADLINES_PER_PAGE." OFFSET $skip"); $lnum = 0; $num_unread = 0; while ($line = pg_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; if ($line["last_read_ts"] < $line["updated_ts"] && $line["unread"] == "f") { $update_pic = "\"Updated\""; ++$num_unread; } else { $update_pic = " "; } if ($line["unread"] == "t") { $class .= "Unread"; ++$num_unread; } $id = $line["id"]; $feed_id = $line["feed_id"]; $content_link = "" . $line["title"] . ""; print ""; print ""; print ""; print ""; print ""; ++$lnum; } if ($lnum == 0) { print ""; } while ($lnum < HEADLINES_PER_PAGE) { ++$lnum; print ""; } // start unholy navbar block print ""; // end unholy navbar block print "
Search: Reset
" . $line["title"] . "
$update_pic ".$line["updated"]."$content_link
No entries found.
 
"; $next_skip = $skip + HEADLINES_PER_PAGE; $prev_skip = $skip - HEADLINES_PER_PAGE; print "Navigate: "; if ($prev_skip >= 0) { print "Previous Page"; } else { print "Previous Page"; } print " "; if ($next_skip < $total_entries) { print "Next Page"; } else { print "Next Page"; } print "  Feed: "; print "Update"; print "  Mark as read: "; if ($num_unread > 0) { print "This Page"; print " "; } else { print "This Page"; print " "; } print "All Posts"; print "
"; $result = pg_query("SELECT id, (SELECT count(id) FROM ttrss_entries WHERE feed_id = ttrss_feeds.id) AS total, (SELECT count(id) FROM ttrss_entries WHERE feed_id = ttrss_feeds.id AND unread = true) as unread FROM ttrss_feeds WHERE id = '$feed'"); $total = pg_fetch_result($result, 0, "total"); $unread = pg_fetch_result($result, 0, "unread"); print "
$feed
"; print "
$total
"; print "
$unread
"; } if ($op == "pref-rpc") { $subop = $_GET["subop"]; if ($subop == "unread") { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { pg_query("UPDATE ttrss_entries SET unread = true WHERE feed_id = '$id'"); } print "Marked selected feeds as read."; } if ($subop == "read") { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { pg_query("UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE feed_id = '$id'"); } print "Marked selected feeds as unread."; } } if ($op == "pref-feeds") { $subop = $_GET["subop"]; if ($subop == "editSave") { $feed_title = pg_escape_string($_GET["t"]); $feed_link = pg_escape_string($_GET["l"]); $feed_id = $_GET["id"]; $result = pg_query("UPDATE ttrss_feeds SET title = '$feed_title', feed_url = '$feed_link' WHERE id = '$feed_id'"); } if ($subop == "remove") { if (!WEB_DEMO_MODE) { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { pg_query("BEGIN"); pg_query("DELETE FROM ttrss_entries WHERE feed_id = '$id'"); pg_query("DELETE FROM ttrss_feeds WHERE id = '$id'"); pg_query("COMMIT"); if (file_exists(ICONS_DIR . "/$id.ico")) { unlink(ICONS_DIR . "/$id.ico"); } } } } if ($subop == "add") { if (!WEB_DEMO_MODE) { $feed_link = pg_escape_string($_GET["link"]); $result = pg_query( "INSERT INTO ttrss_feeds (feed_url,title) VALUES ('$feed_link', '')"); $result = pg_query( "SELECT id FROM ttrss_feeds WHERE feed_url = '$feed_link'"); $feed_id = pg_fetch_result($result, 0, "id"); if ($feed_id) { update_rss_feed($link, $feed_link, $feed_id); } } } $result = pg_query("SELECT id,title,feed_url,substring(last_updated,1,16) as last_updated FROM ttrss_feeds ORDER by title"); print "

"; print ""; $lnum = 0; while ($line = pg_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $feed_id = $line["id"]; $edit_feed_id = $_GET["id"]; if ($subop == "edit" && $feed_id != $edit_feed_id) { $class .= "Grayed"; } print ""; $icon_file = ICONS_DIR . "/$feed_id.ico"; if (file_exists($icon_file) && filesize($icon_file) > 0) { $feed_icon = ""; } else { $feed_icon = " "; } print ""; if (!$edit_feed_id || $subop != "edit") { print ""; print ""; print ""; } else if ($feed_id != $edit_feed_id) { print ""; print ""; print ""; } else { print ""; print ""; print ""; } print ""; print ""; ++$lnum; } print "
 SelectTitle LinkLast Updated
$feed_icon" . $line["title"] . "" . $line["feed_url"] . "".$line["title"]."".$line["feed_url"]."" . $line["last_updated"] . "
"; print "

"; if ($subop == "edit") { print "Edit feed:  Cancel  Save"; } else { print " Selection:  Edit  Remove  Mark as read  Mark as unread  All feeds:  Export OPML"; } } pg_close($link); ?>