"; $result = db_query($link, "SELECT id,sql_exp,description FROM ttrss_labels ORDER by description"); while ($line = db_fetch_assoc($result)) { $id = -$line["id"] - 11; error_reporting (0); $tmp_result = db_query($link, "SELECT count(id) as count FROM ttrss_entries WHERE (" . $line["sql_exp"] . ") AND unread = true"); $count = db_fetch_result($tmp_result, 0, "count"); print ""; error_reporting (E_ERROR | E_WARNING | E_PARSE); } } function getFeedCounter($link, $id) { $result = db_query($link, "SELECT count(id) as count FROM ttrss_entries WHERE feed_id = '$id' AND unread = true"); $count = db_fetch_result($result, 0, "count"); print ""; } function getFeedCounters($link) { $result = db_query($link, "SELECT id, (SELECT count(id) FROM ttrss_entries WHERE feed_id = ttrss_feeds.id AND unread = true) as count FROM ttrss_feeds"); while ($line = db_fetch_assoc($result)) { $id = $line["id"]; $count = $line["count"]; print ""; } } function outputFeedList($link) { print " Tiny Tiny RSS : Feedlist "; print "
    "; /* virtual feeds */ $result = db_query($link, "SELECT count(id) as num_starred FROM ttrss_entries WHERE marked = true AND unread = true"); $num_starred = db_fetch_result($result, 0, "num_starred"); printFeedEntry(-1, "odd", "Starred articles", $num_starred, "images/mark_set.png"); if (ENABLE_LABELS) { $result = db_query($link, "SELECT id,sql_exp,description FROM ttrss_labels ORDER by description"); if (db_num_rows($result) > 0) { print "

  • "; } while ($line = db_fetch_assoc($result)) { error_reporting (0); $tmp_result = db_query($link, "SELECT count(id) as count FROM ttrss_entries WHERE (" . $line["sql_exp"] . ") AND unread = true"); $count = db_fetch_result($tmp_result, 0, "count"); $class = "odd"; if ($count > 0) { $class .= "Unread"; } error_reporting (E_ERROR | E_WARNING | E_PARSE); printFeedEntry(-$line["id"]-11, $class, $line["description"], $count, "images/label.png"); } } print "

  • "; $result = db_query($link, "SELECT *, (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 ORDER BY title"); $actid = $_GET["actid"]; /* real feeds */ $lnum = 0; $total_unread = 0; while ($line = db_fetch_assoc($result)) { $feed = $line["title"]; $feed_id = $line["id"]; $subop = $_GET["subop"]; $total = $line["total"]; $unread = $line["unread"]; // $class = ($lnum % 2) ? "even" : "odd"; $class = "odd"; if ($unread > 0) $class .= "Unread"; if ($actid == $feed_id) { $class .= "Selected"; } $total_unread += $unread; printFeedEntry($feed_id, $class, $feed, $unread, "icons/$feed_id.ico"); ++$lnum; } print ""; print "
    $total_unread
    "; } if ($op == "rpc") { $subop = $_GET["subop"]; if ($subop == "getLabelCounters") { $aid = $_GET["aid"]; print ""; getLabelCounters($link); if ($aid) { getFeedCounter($link, $aid); } print ""; } if ($subop == "getFeedCounters") { print ""; getFeedCounters($link); print ""; } if ($subop == "getAllCounters") { print ""; getLabelCounters($link); getFeedCounters($link); print ""; } if ($subop == "mark") { $mark = $_GET["mark"]; $id = db_escape_string($_GET["id"]); if ($mark == "1") { $mark = "true"; } else { $mark = "false"; } $result = db_query($link, "UPDATE ttrss_entries SET marked = $mark WHERE id = '$id'"); } if ($subop == "updateFeed") { $feed_id = db_escape_string($_GET["feed"]); $result = db_query($link, "SELECT feed_url FROM ttrss_feeds WHERE id = '$feed_id'"); if (db_num_rows($result) > 0) { $feed_url = db_fetch_result($result, 0, "feed_url"); // update_rss_feed($link, $feed_url, $feed_id); } print "DONE-$feed_id"; return; } if ($subop == "forceUpdateAllFeeds" || $subop == "updateAllFeeds") { update_all_feeds($link, true); print ""; getLabelCounters($link); getFeedCounters($link); print ""; } if ($subop == "catchupPage") { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { db_query($link, "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") { db_query($link, "UPDATE ttrss_entries SET last_read = NOW(),unread = false"); } outputFeedList($link); } if ($op == "view") { $id = $_GET["id"]; $feed_id = $_GET["feed"]; $result = db_query($link, "UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE id = '$id'"); $addheader = $_GET["addheader"]; $result = db_query($link, "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 ($addheader) { print " Tiny Tiny RSS : Article $id "; } if ($result) { $line = db_fetch_assoc($result); if ($line["icon_url"]) { $feed_icon = ""; } else { $feed_icon = " "; } if ($line["comments"] && $line["link"] != $line["comments"]) { $entry_comments = "(Comments)"; } else { $entry_comments = ""; } print "
    "; print "
    "; print ""; print ""; print "
    Title: " . $line["title"] . "
    Link: ".$line["link"]." $entry_comments
    "; print "
    " . $feed_icon . "
    "; print "
    " . $line["content"] . "
    "; print "
    "; print ""; } if ($addheader) { print ""; } } if ($op == "viewfeed") { $feed = $_GET["feed"]; $skip = $_GET["skip"]; $subop = $_GET["subop"]; $view_mode = $_GET["view"]; $addheader = $_GET["addheader"]; $limit = $_GET["limit"]; if (!$feed) { print "Error: no feed to display."; return; } if (!$skip) $skip = 0; if ($subop == "undefined") $subop = ""; if ($addheader) { print " Tiny Tiny RSS : Feed $feed "; } if ($feed >= 0) { $result = db_query($link, "SELECT *,SUBSTRING(last_updated,1,16) as last_updated_s FROM ttrss_feeds WHERE id = '$feed'"); if ($result) { $line = db_fetch_assoc($result); update_rss_feed($link, $line["feed_url"], $feed); if ($subop == "MarkAllRead") { db_query($link, "UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE feed_id = '$feed'"); } } } print ""; $search = $_GET["search"]; if ($search) { $search_query_part = "(upper(title) LIKE upper('%$search%') OR content LIKE '%$search%') AND"; } else { $search_query_part = ""; } $view_query_part = ""; if ($view_mode == "Starred") { $view_query_part = " marked = true AND "; } if ($view_mode == "Unread") { $view_query_part = " unread = true AND "; } /* $result = db_query($link, "SELECT count(id) AS total_entries FROM ttrss_entries WHERE $search_query_part feed_id = '$feed'"); $total_entries = db_fetch_result($result, 0, "total_entries"); */ /* $result = db_query("SELECT count(id) AS unread_entries FROM ttrss_entries WHERE $search_query_part unread = true AND feed_id = '$feed'"); $unread_entries = db_fetch_result($result, 0, "unread_entries"); */ if ($limit && $limit != "All") { $limit_query_part = "LIMIT " . $limit; } $vfeed_query_part = ""; if ($feed >= 0) { $query_strategy_part = "feed_id = '$feed'"; } else if ($feed == -1) { // starred virtual feed $query_strategy_part = "marked = true"; $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE id = feed_id) as feed_title,"; } else if ($feed <= -10) { // labels $label_id = -$feed - 11; $tmp_result = db_query($link, "SELECT sql_exp FROM ttrss_labels WHERE id = '$label_id'"); $query_strategy_part = db_fetch_result($tmp_result, 0, "sql_exp"); $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE id = feed_id) as feed_title,"; } else { $query_strategy_part = "id > 0"; // dumb } if ($feed < -10) error_reporting (0); $result = db_query($link, "SELECT id,title,updated,unread,feed_id,marked,link,last_read, SUBSTRING(last_read,1,19) as last_read_noms, $vfeed_query_part SUBSTRING(updated,1,19) as updated_noms FROM ttrss_entries WHERE $search_query_part $view_query_part $query_strategy_part ORDER BY updated DESC $limit_query_part"); if (!$result) { print ""; return; } $lnum = 0; error_reporting (E_ERROR | E_WARNING | E_PARSE); $num_unread = 0; while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $id = $line["id"]; $feed_id = $line["feed_id"]; // printf("L %d (%s) > U %d (%s) = %d
    ", // strtotime($line["last_read_noms"]), $line["last_read_noms"], // strtotime($line["updated"]), $line["updated"], // strtotime($line["last_read"]) >= strtotime($line["updated"])); if ($line["last_read"] != "" && $line["updated"] != "" && strtotime($line["last_read_noms"]) < strtotime($line["updated_noms"])) { $update_pic = "\"Updated\""; } else { $update_pic = "\"Updated\""; } if ($line["unread"] == "t" || $line["unread"] == "1") { $class .= "Unread"; ++$num_unread; } if ($line["marked"] == "t" || $line["marked"] == "1") { $marked_pic = "\"Reset"; } else { $marked_pic = "\"Set"; } $content_link = "" . $line["title"] . ""; print ""; // onclick=\"javascript:view($id,$feed_id)\"> print ""; print ""; print ""; if ($line["feed_title"]) { print ""; print ""; } else { print ""; } print ""; ++$lnum; } if ($lnum == 0) { print ""; } /* while ($lnum < HEADLINES_PER_PAGE) { ++$lnum; print ""; } */ print "
    Could not display feed (query failed). Please check match syntax or local configuration.
    $update_pic$marked_pic ".$line["updated"]."$content_link".$line["feed_title"]."$content_link
    No articles found.
     
    "; if ($feed >= 0) { $result = db_query($link, "SELECT count(id) as unread FROM ttrss_entries WHERE feed_id = '$feed' AND $query_strategy_part AND unread = true"); $unread = db_fetch_result($result, 0, "unread"); } else if ($feed == -1) { $result = db_query($link, "SELECT count(id) as unread FROM ttrss_entries WHERE $query_strategy_part"); $unread = db_fetch_result($result, 0, "unread"); } else { // print "[viewfeed] feed type not implemented
    "; error_reporting(0); $result = db_query($link, "SELECT count(id) as unread FROM ttrss_entries WHERE $query_strategy_part"); $unread = db_fetch_result($result, 0, "unread"); error_reporting (E_ERROR | E_WARNING | E_PARSE); } if (!$unread) $unread = 0; // update unread/total counters and status for active feed in the feedlist // kludge, because iframe doesn't seem to support onload() print ""; if ($addheader) { print ""; } } if ($op == "pref-rpc") { $subop = $_GET["subop"]; if ($subop == "unread") { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { db_query($link, "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) { db_query($link, "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 = db_escape_string($_GET["t"]); $feed_link = db_escape_string($_GET["l"]); $feed_id = $_GET["id"]; $result = db_query($link, "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) { db_query($link, "BEGIN"); db_query($link, "DELETE FROM ttrss_entries WHERE feed_id = '$id'"); db_query($link, "DELETE FROM ttrss_feeds WHERE id = '$id'"); db_query($link, "COMMIT"); if (file_exists(ICONS_DIR . "/$id.ico")) { unlink(ICONS_DIR . "/$id.ico"); } } } } if ($subop == "add") { if (!WEB_DEMO_MODE) { $feed_link = db_escape_string($_GET["link"]); $result = db_query($link, "INSERT INTO ttrss_feeds (feed_url,title) VALUES ('$feed_link', '')"); $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE feed_url = '$feed_link'"); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { update_rss_feed($link, $feed_link, $feed_id); } } } print "
    Add feed
    "; $result = db_query($link, "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 = db_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 ""; } if (!$line["last_updated"]) $line["last_updated"] = "Never"; print ""; print ""; ++$lnum; } if ($lnum == 0) { print ""; } print "
     SelectTitle LinkLast updated
    $feed_icon" . $line["title"] . "" . $line["feed_url"] . "".$line["title"]."".$line["feed_url"]."" . $line["last_updated"] . "
    No feeds defined.
    "; print "

    "; if ($subop == "edit") { print "Edit feed:  "; } else { print " Selection:  "; if (ENABLE_PREFS_CATCHUP_UNCATCHUP) { print "  "; } print " All feeds: "; } } if ($op == "pref-filters") { $subop = $_GET["subop"]; if ($subop == "editSave") { $regexp = db_escape_string($_GET["r"]); $descr = db_escape_string($_GET["d"]); $match = db_escape_string($_GET["m"]); $filter_id = db_escape_string($_GET["id"]); $result = db_query($link, "UPDATE ttrss_filters SET reg_exp = '$regexp', description = '$descr', filter_type = (SELECT id FROM ttrss_filter_types WHERE description = '$match') WHERE id = '$filter_id'"); } if ($subop == "remove") { if (!WEB_DEMO_MODE) { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { db_query($link, "DELETE FROM ttrss_filters WHERE id = '$id'"); } } } if ($subop == "add") { if (!WEB_DEMO_MODE) { $regexp = db_escape_string($_GET["regexp"]); $match = db_escape_string($_GET["match"]); $result = db_query($link, "INSERT INTO ttrss_filters (reg_exp,filter_type) VALUES ('$regexp', (SELECT id FROM ttrss_filter_types WHERE description = '$match'))"); } } $result = db_query($link, "SELECT description FROM ttrss_filter_types ORDER BY description"); $filter_types = array(); while ($line = db_fetch_assoc($result)) { array_push($filter_types, $line["description"]); } print "
    "; print_select("fadd_match", "Title", $filter_types); print" Add filter
    "; $result = db_query($link, "SELECT id,reg_exp,description, (SELECT name FROM ttrss_filter_types WHERE id = filter_type) as filter_type_name, (SELECT description FROM ttrss_filter_types WHERE id = filter_type) as filter_type_descr FROM ttrss_filters ORDER by reg_exp"); print "

    "; print ""; $lnum = 0; while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $filter_id = $line["id"]; $edit_filter_id = $_GET["id"]; if ($subop == "edit" && $filter_id != $edit_filter_id) { $class .= "Grayed"; } print ""; $line["regexp"] = htmlspecialchars($line["reg_exp"]); $line["description"] = htmlspecialchars($line["description"]); if (!$edit_filter_id || $subop != "edit") { if (!$line["description"]) $line["description"] = "[No description]"; print ""; print ""; print ""; print ""; } else if ($filter_id != $edit_filter_id) { if (!$line["description"]) $line["description"] = "[No description]"; print ""; print ""; print ""; print ""; } else { print ""; print ""; print ""; print ""; } print ""; ++$lnum; } if ($lnum == 0) { print ""; } print "
    SelectFilter expression DescriptionMatch
    " . $line["reg_exp"] . "" . $line["description"] . "".$line["filter_type_descr"]."".$line["reg_exp"]."".$line["description"]."".$line["filter_type_descr"].""; print_select("iedit_match", $line["filter_type_descr"], $filter_types); print "
    No filters defined.
    "; print "

    "; if ($subop == "edit") { print "Edit feed: "; } else { print " Selection: "; } } if ($op == "pref-labels") { $subop = $_GET["subop"]; if ($subop == "editSave") { $sql_exp = $_GET["s"]; $descr = $_GET["d"]; $label_id = db_escape_string($_GET["id"]); // print "$sql_exp : $descr : $label_id"; $result = db_query($link, "UPDATE ttrss_labels SET sql_exp = '$sql_exp', description = '$descr' WHERE id = '$label_id'"); } if ($subop == "remove") { if (!WEB_DEMO_MODE) { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { db_query($link, "DELETE FROM ttrss_labels WHERE id = '$id'"); } } } if ($subop == "add") { if (!WEB_DEMO_MODE) { $exp = $_GET["exp"]; $result = db_query($link, "INSERT INTO ttrss_labels (sql_exp,description) VALUES ('$exp', '$exp')"); } } print ""; print"
    Add label
    "; $result = db_query($link, "SELECT id,sql_exp,description FROM ttrss_labels ORDER by description"); print "

    "; print ""; $lnum = 0; while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; $label_id = $line["id"]; $edit_label_id = $_GET["id"]; if ($subop == "edit" && $label_id != $edit_label_id) { $class .= "Grayed"; } print ""; $line["sql_exp"] = htmlspecialchars($line["sql_exp"]); $line["description"] = htmlspecialchars($line["description"]); if (!$edit_label_id || $subop != "edit") { if (!$line["description"]) $line["description"] = "[No caption]"; print ""; print ""; print ""; } else if ($label_id != $edit_label_id) { if (!$line["description"]) $line["description"] = "[No description]"; print ""; print ""; print ""; } else { print ""; print ""; print ""; } print ""; ++$lnum; } if ($lnum == 0) { print ""; } print "
    SelectSQL expression Caption
    " . $line["sql_exp"] . "" . $line["description"] . "".$line["sql_exp"]."".$line["description"]."
    No labels defined.
    "; print "

    "; if ($subop == "edit") { print "Edit label: "; } else { print " Selection: "; } } if ($op == "error") { print "

    "; $msg = $_GET["msg"]; print $msg; print "
    "; } db_close($link); ?>