From 8143ae1f2b61c6ad7255b090b47447d3680e22bf Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 9 Sep 2005 08:45:54 +0100 Subject: more work on tag support --- backend.php | 307 +++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 167 insertions(+), 140 deletions(-) (limited to 'backend.php') diff --git a/backend.php b/backend.php index 19020ac80..637647cbd 100644 --- a/backend.php +++ b/backend.php @@ -18,6 +18,29 @@ $fetch = $_GET["fetch"]; + /* FIXME this needs reworking */ + + function getTagCounters($link) { + $result = db_query($link, "SELECT tag_name,count(ttrss_entries.id) AS count + FROM ttrss_tags,ttrss_entries WHERE + post_id = ttrss_entries.id AND unread = true GROUP BY tag_name + UNION + select tag_name,0 as count FROM ttrss_tags"); + + $tags = array(); + + while ($line = db_fetch_assoc($result)) { + $tags[$line["tag_name"]] += $line["count"]; + } + + foreach (array_keys($tags) as $tag) { + $unread = $tags[$tag]; + + $tag = htmlspecialchars($tag); + print ""; + } + } + function getLabelCounters($link) { $result = db_query($link, "SELECT count(id) as count FROM ttrss_entries @@ -75,7 +98,7 @@ } } - function outputFeedList($link) { + function outputFeedList($link, $tags = false) { print " Tiny Tiny RSS : Feedlist @@ -87,91 +110,125 @@ print ""; print "
$total_unread
"; @@ -202,6 +259,7 @@ print ""; getLabelCounters($link); getFeedCounters($link); + getTagCounters($link); print ""; } @@ -242,6 +300,7 @@ print ""; getLabelCounters($link); getFeedCounters($link); + getTagCounters($link); print ""; } @@ -262,13 +321,15 @@ if ($op == "feeds") { + $tags = $_GET["tags"]; + $subop = $_GET["subop"]; if ($subop == "catchupAll") { db_query($link, "UPDATE ttrss_entries SET last_read = NOW(),unread = false"); } - outputFeedList($link); + outputFeedList($link, $tags); } @@ -331,7 +392,7 @@ print ""; print ""; } @@ -368,7 +429,7 @@ "; } - if ($feed >= 0) { + if (sprintf("%d", $feed) != 0 && $feed >= 0) { $result = db_query($link, "SELECT *,SUBSTRING(last_updated,1,16) as last_updated_s @@ -430,7 +491,11 @@ $vfeed_query_part = ""; - if ($feed >= 0) { + if (sprintf("%d", $feed) == 0) { + $query_strategy_part = "ttrss_entries.id > 0"; + $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE + id = feed_id) as feed_title,"; + } else if ($feed >= 0) { $query_strategy_part = "feed_id = '$feed'"; } else if ($feed == -1) { // starred virtual feed $query_strategy_part = "marked = true"; @@ -458,18 +523,39 @@ if ($feed < -10) error_reporting (0); - $result = db_query($link, "SELECT - id,title,updated,unread,feed_id,marked,link,last_read, + if (sprintf("%d", $feed) != 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 $order_by + $limit_query_part"); + + } else { + // browsing by tag + + $result = db_query($link, "SELECT + ttrss_entries.id as 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 $order_by - $limit_query_part"); + FROM + ttrss_entries,ttrss_tags + WHERE + post_id = ttrss_entries.id AND tag_name = '$feed' AND + $view_query_part + $search_query_part + $query_strategy_part ORDER BY $order_by + $limit_query_part"); + } if (!$result) { print " @@ -548,71 +634,12 @@ if ($lnum == 0) { print "No articles found."; } - -/* while ($lnum < HEADLINES_PER_PAGE) { - ++$lnum; - print " "; - } */ print ""; - - 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) { -- cgit v1.2.3-54-g00ecf