private function feedlist_init_cat($cat_id, $hidden = false) { $obj = array(); $cat_id = (int) $cat_id; if ($cat_id > 0) { $cat_unread = ccache_find($this->link, $cat_id, $_SESSION["uid"], true); } else { if ($cat_id == 0 || $cat_id == -2) { $cat_unread = getCategoryUnread($this->link, $cat_id); } } $obj['id'] = 'CAT:' . $cat_id; $obj['items'] = array(); $obj['name'] = getCategoryTitle($this->link, $cat_id); $obj['type'] = 'feed'; $obj['unread'] = (int) $cat_unread; $obj['hidden'] = $hidden; $obj['bare_id'] = $cat_id; return $obj; }
function getFeedArticles($feed, $is_cat = false, $unread_only = false, $owner_uid = false) { $n_feed = (int) $feed; $need_entries = false; if (!$owner_uid) { $owner_uid = $_SESSION["uid"]; } if ($unread_only) { $unread_qpart = "unread = true"; } else { $unread_qpart = "true"; } if ($is_cat) { return getCategoryUnread($n_feed, $owner_uid); } else { if ($n_feed == -6) { return 0; } else { if ($feed != "0" && $n_feed == 0) { $feed = db_escape_string($feed); $result = db_query("SELECT SUM((SELECT COUNT(int_id)\n\t\t\t\tFROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id\n\t\t\t\t\tAND ref_id = id AND {$unread_qpart})) AS count FROM ttrss_tags\n\t\t\t\tWHERE owner_uid = {$owner_uid} AND tag_name = '{$feed}'"); return db_fetch_result($result, 0, "count"); } else { if ($n_feed == -1) { $match_part = "marked = true"; } else { if ($n_feed == -2) { $match_part = "published = true"; } else { if ($n_feed == -3) { $match_part = "unread = true AND score >= 0"; $intl = get_pref("FRESH_ARTICLE_MAX_AGE", $owner_uid); if (DB_TYPE == "pgsql") { $match_part .= " AND date_entered > NOW() - INTERVAL '{$intl} hour' "; } else { $match_part .= " AND date_entered > DATE_SUB(NOW(), INTERVAL {$intl} HOUR) "; } $need_entries = true; } else { if ($n_feed == -4) { $match_part = "true"; } else { if ($n_feed >= 0) { if ($n_feed != 0) { $match_part = "feed_id = '{$n_feed}'"; } else { $match_part = "feed_id IS NULL"; } } else { if ($feed < LABEL_BASE_INDEX) { $label_id = feed_to_label_id($feed); return getLabelUnread($label_id, $owner_uid); } } } } } } } } } if ($match_part) { if ($need_entries) { $from_qpart = "ttrss_user_entries,ttrss_entries"; $from_where = "ttrss_entries.id = ttrss_user_entries.ref_id AND"; } else { $from_qpart = "ttrss_user_entries"; $from_where = ""; } $query = "SELECT count(int_id) AS unread\n\t\t\t\tFROM {$from_qpart} WHERE\n\t\t\t\t{$unread_qpart} AND {$from_where} ({$match_part}) AND ttrss_user_entries.owner_uid = {$owner_uid}"; //echo "[$feed/$query]\n"; $result = db_query($query); } else { $result = db_query("SELECT COUNT(post_int_id) AS unread\n\t\t\t\tFROM ttrss_tags,ttrss_user_entries,ttrss_entries\n\t\t\t\tWHERE tag_name = '{$feed}' AND post_int_id = int_id AND ref_id = ttrss_entries.id\n\t\t\t\tAND {$unread_qpart} AND ttrss_tags.owner_uid = " . $owner_uid); } $unread = db_fetch_result($result, 0, "unread"); return $unread; }
function printCategoryHeader($link, $cat_id, $hidden = false, $can_browse = true) { $tmp_category = getCategoryTitle($link, $cat_id); if ($cat_id > 0) { $cat_unread = ccache_find($link, $cat_id, $_SESSION["uid"], true); } else { if ($cat_id == 0 || $cat_id == -2) { $cat_unread = getCategoryUnread($link, $cat_id); } } if ($hidden) { $holder_style = "display:none;"; $ellipsis = "…"; } else { $holder_style = ""; $ellipsis = ""; } $catctr_class = $cat_unread > 0 ? "catCtrHasUnread" : "catCtrNoUnread"; if ($can_browse) { $browse_cat_link = "onclick=\"javascript:viewCategory({$cat_id})\""; $inner_title_class = "catTitle"; } else { $browse_cat_link = ""; $inner_title_class = "catTitleNL"; } $cat_class = "feedCat"; print "<li class=\"{$cat_class}\" id=\"FCAT-{$cat_id}\">\n\t\t\t\t<img onclick=\"toggleCollapseCat({$cat_id})\" class=\"catCollapse\"\n\t\t\t\t\ttitle=\"" . __('Click to collapse category') . "\"\n\t\t\t\t\tsrc=\"images/cat-collapse.png\"><span class=\"{$inner_title_class}\" \n\t\t\t\t\tid=\"FCATN-{$cat_id}\" {$browse_cat_link}/>{$tmp_category}</span>"; print "<span id=\"FCAP-{$cat_id}\">"; print " <span id=\"FCATCTR-{$cat_id}\" \n\t\t\t\tclass=\"{$catctr_class}\">({$cat_unread})</span> {$ellipsis}"; print "</span>"; //print "</li>"; print "<ul class=\"feedCatList\" id=\"FCATLIST-{$cat_id}\" style='{$holder_style}'>"; }
function render_feeds_list($link) { $tags = $_GET["tags"]; print "<div id=\"heading\">"; if ($tags) { print __("Tags") . "<span id=\"headingAddon\">\n\t\t\t\t(<a href=\"index.php\">" . __("View feeds") . "</a>, "; } else { print __("Feeds") . " <span id=\"headingAddon\">\n\t\t\t\t(<a href=\"index.php?tags=1\">" . __("View tags") . "</a>, "; } print "<a href=\"index.php?go=sform\">" . __("Search") . "</a>, "; print "<a href=\"logout.php\">" . __("Logout") . "</a>)</span>"; print "</div>"; print "<ul class=\"feedList\">"; $owner_uid = $_SESSION["uid"]; if (!$tags) { /* virtual feeds */ if (get_pref($link, 'ENABLE_FEED_CATS')) { $collapsed = get_pref($link, "_COLLAPSED_SPECIAL"); if ($collapsed == "t" || $collapsed == "1") { $holder_class = "invisible"; $ellipsis = "..."; } else { $holder_class = "feedCatHolder"; $ellipsis = ""; } $tmp_category = __("Special"); print "<li class=\"feedCat\">\n\t\t\t\t\t<a href=\"?subop=tc&id=-1\">{$tmp_category}</a>{$ellipsis}\n\t\t\t\t\t\t</li>"; print "<li class=\"{$holder_class}\"><ul class=\"feedCatList\">"; } foreach (array(-4, -3, -1, -2, 0) as $i) { printMobileFeedEntry($i, "virt", false, false, false, $link); } if (get_pref($link, 'ENABLE_FEED_CATS')) { print "</ul>"; } $result = db_query($link, "SELECT id,caption FROM\t\t\t\t\t\n\t\t\t\t\tttrss_labels2 WHERE owner_uid = '{$owner_uid}' ORDER by caption"); if (db_num_rows($result) > 0) { if (get_pref($link, 'ENABLE_FEED_CATS')) { $collapsed = get_pref($link, "_COLLAPSED_LABELS"); if ($collapsed == "t" || $collapsed == "1") { $holder_class = "invisible"; $ellipsis = "..."; } else { $holder_class = "feedCatHolder"; $ellipsis = ""; } $tmp_category = __("Labels"); print "<li class=\"feedCat\">\n\t\t\t\t\t\t\t<a href=\"?subop=tc&id=-2\">{$tmp_category}</a>{$ellipsis}\n\t\t\t\t\t\t\t\t</li>"; print "<li class=\"{$holder_class}\"><ul class=\"feedCatList\">"; } else { // print "<li><hr></li>"; } } while ($line = db_fetch_assoc($result)) { $count = getFeedUnread($link, -$line["id"] - 11); $class = "label"; printMobileFeedEntry(-$line["id"] - 11, $class, $line["caption"], $count, false, $link); } if (db_num_rows($result) > 0) { if (get_pref($link, 'ENABLE_FEED_CATS')) { print "</ul>"; } } if (get_pref($link, 'ENABLE_FEED_CATS')) { $order_by_qpart = "category,title"; } else { $order_by_qpart = "title"; } $result = db_query($link, "SELECT ttrss_feeds.*,\n\t\t\t\t" . SUBSTRING_FOR_DATE . "(last_updated,1,19) AS last_updated_noms,\n\t\t\t\t(SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries\n\t\t\t\t\tWHERE feed_id = ttrss_feeds.id AND \n\t\t\t\t\tttrss_user_entries.ref_id = ttrss_entries.id AND\n\t\t\t\t\towner_uid = '{$owner_uid}') AS total,\n\t\t\t\t(SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries\n\t\t\t\t\tWHERE feed_id = ttrss_feeds.id AND unread = true\n\t\t\t\t\t\tAND ttrss_user_entries.ref_id = ttrss_entries.id\n\t\t\t\t\t\tAND owner_uid = '{$owner_uid}') as unread,\n\t\t\t\tcat_id,last_error,\n\t\t\t\tttrss_feed_categories.title AS category,\n\t\t\t\tttrss_feed_categories.collapsed\t\n\t\t\t\tFROM ttrss_feeds LEFT JOIN ttrss_feed_categories \n\t\t\t\t\tON (ttrss_feed_categories.id = cat_id)\t\t\t\t\n\t\t\t\tWHERE \n\t\t\t\t\tttrss_feeds.owner_uid = '{$owner_uid}'\n\t\t\t\tORDER BY {$order_by_qpart}"); $actid = $_GET["actid"]; /* real feeds */ $lnum = 0; $category = ""; while ($line = db_fetch_assoc($result)) { if (get_pref($link, 'HIDE_READ_FEEDS') && (int) $line['unread'] == 0) { continue; } $feed = db_unescape_string($line["title"]); $feed_id = $line["id"]; $subop = $_GET["subop"]; $total = $line["total"]; $unread = $line["unread"]; $rtl_content = sql_bool_to_bool($line["rtl_content"]); if ($rtl_content) { $rtl_tag = "dir=\"RTL\""; } else { $rtl_tag = ""; } $cat_id = $line["cat_id"]; $tmp_category = $line["category"]; if (!$tmp_category) { $tmp_category = "Uncategorized"; } // $class = ($lnum % 2) ? "even" : "odd"; if ($line["last_error"]) { $class = "error"; } else { $class = "feed"; } if ($category != $tmp_category && get_pref($link, 'ENABLE_FEED_CATS')) { if ($category) { print "</ul></li>"; } $category = $tmp_category; $collapsed = $line["collapsed"]; // workaround for NULL category if ($category == "Uncategorized") { $collapsed = get_pref($link, "_COLLAPSED_UNCAT"); } if ($collapsed == "t" || $collapsed == "1") { $holder_class = "invisible"; $ellipsis = "..."; } else { $holder_class = "feedCatHolder"; $ellipsis = ""; } if ($cat_id) { $cat_id_qpart = "cat_id = '{$cat_id}'"; } else { $cat_id_qpart = "cat_id IS NULL"; } $cat_id = sprintf("%d", $cat_id); $cat_unread = getCategoryUnread($link, $cat_id); if ($cat_unread > 0) { $catctr_class = ""; } else { $catctr_class = "invisible"; } print "<li class=\"feedCat\">\n\t\t\t\t\t\t<a href=\"?subop=tc&id={$cat_id}\">{$tmp_category}</a>\n\t\t\t\t\t\t\t<a href=\"?go=vf&id={$cat_id}&cat=true\">\n\t\t\t\t\t\t\t\t<span class=\"{$catctr_class}\">({$cat_unread}){$ellipsis}</span>\n\t\t\t\t\t\t\t</a></li>"; print "<li id=\"feedCatHolder\" class=\"{$holder_class}\">\n\t\t\t\t\t\t<ul class=\"feedCatList\">"; } printMobileFeedEntry($feed_id, $class, $feed, $unread, false, $link, $rtl_content); ++$lnum; } } else { // tags $result = db_query($link, "SELECT tag_name,SUM((SELECT COUNT(int_id) \n\t\t\t\tFROM ttrss_user_entries WHERE int_id = post_int_id \n\t\t\t\t\tAND unread = true)) AS count FROM ttrss_tags \n\t\t\t\tWHERE owner_uid = '" . $_SESSION['uid'] . "' GROUP BY tag_name ORDER BY tag_name"); $tags = array(); while ($line = db_fetch_assoc($result)) { $tags[$line["tag_name"]] += $line["count"]; } foreach (array_keys($tags) as $tag) { $unread = $tags[$tag]; $class = "tag"; printMobileFeedEntry($tag, $class, $tag, $unread, "../images/tag.png", $link); } } }