diff --git a/classes/feeds.php b/classes/feeds.php index 3ab3fc44e..bf5425e75 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -303,8 +303,6 @@ class Feeds extends Handler_Protected { $feed, $cat_view, $search, $last_error, $last_updated); - $headlines_count = is_numeric($result) ? 0 : db_num_rows($result); - if ($offset == 0) { foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINES_BEFORE) as $p) { $reply['content'] .= $p->hook_headlines_before($feed, $cat_view, $qfh_ret); @@ -313,522 +311,505 @@ class Feeds extends Handler_Protected { $reply['content'] = ''; - if ($headlines_count > 0) { + $headlines_count = 0; + + $lnum = $offset; + $num_unread = 0; + if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info); + $expand_cdm = get_pref('CDM_EXPANDED'); + + while ($line = $result->fetch()) { + + ++$headlines_count; + + $line["content_preview"] = "— " . truncate_string(strip_tags($line["content"]), 250); + + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line, 250, false); + } + + if (get_pref('SHOW_CONTENT_PREVIEW')) { + $content_preview = $line["content_preview"]; + } + + $id = $line["id"]; + $feed_id = $line["feed_id"]; + $label_cache = $line["label_cache"]; + $labels = false; - $lnum = $offset; + if ($label_cache) { + $label_cache = json_decode($label_cache, true); - $num_unread = 0; + if ($label_cache) { + if ($label_cache["no-labels"] == 1) + $labels = array(); + else + $labels = $label_cache; + } + } - if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info); + if (!is_array($labels)) $labels = Article::get_article_labels($id); - $expand_cdm = get_pref('CDM_EXPANDED'); + $labels_str = ""; + $labels_str .= Article::format_article_labels($labels); + $labels_str .= ""; - while ($line = db_fetch_assoc($result)) { - - $line["content_preview"] = "— " . truncate_string(strip_tags($line["content"]), 250); + if (count($topmost_article_ids) < 3) { + array_push($topmost_article_ids, $id); + } - foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { - $line = $p->hook_query_headlines($line, 250, false); - } + $class = ""; - if (get_pref('SHOW_CONTENT_PREVIEW')) { - $content_preview = $line["content_preview"]; - } + if (sql_bool_to_bool($line["unread"])) { + $class .= " Unread"; + ++$num_unread; + } - $id = $line["id"]; - $feed_id = $line["feed_id"]; - $label_cache = $line["label_cache"]; - $labels = false; + if (sql_bool_to_bool($line["marked"])) { + $marked_pic = ""; + $class .= " marked"; + } else { + $marked_pic = ""; + } - if ($label_cache) { - $label_cache = json_decode($label_cache, true); + if (sql_bool_to_bool($line["published"])) { + $published_pic = ""; + $class .= " published"; + } else { + $published_pic = ""; + } - if ($label_cache) { - if ($label_cache["no-labels"] == 1) - $labels = array(); - else - $labels = $label_cache; - } - } + $updated_fmt = make_local_datetime($line["updated"], false, false, false, true); + $date_entered_fmt = T_sprintf("Imported at %s", + make_local_datetime($line["date_entered"], false)); - if (!is_array($labels)) $labels = Article::get_article_labels($id); + $score = $line["score"]; - $labels_str = ""; - $labels_str .= Article::format_article_labels($labels); - $labels_str .= ""; + $score_pic = "images/" . get_score_pic($score); - if (count($topmost_article_ids) < 3) { - array_push($topmost_article_ids, $id); - } + $score_pic = ""; - $class = ""; + if ($score > 500) { + $hlc_suffix = "high"; + } else if ($score < -100) { + $hlc_suffix = "low"; + } else { + $hlc_suffix = ""; + } - if (sql_bool_to_bool($line["unread"])) { - $class .= " Unread"; - ++$num_unread; - } + $entry_author = $line["author"]; - if (sql_bool_to_bool($line["marked"])) { - $marked_pic = ""; - $class .= " marked"; - } else { - $marked_pic = ""; - } + if ($entry_author) { + $entry_author = " — $entry_author"; + } - if (sql_bool_to_bool($line["published"])) { - $published_pic = ""; - $class .= " published"; - } else { - $published_pic = ""; - } + $has_feed_icon = feed_has_icon($feed_id); -# $content_link = "" . -# $line["title"] . ""; + if ($has_feed_icon) { + $feed_icon_img = ""; + } else { + $feed_icon_img = ""; + } -# $content_link = "" . -# $line["title"] . ""; + $entry_site_url = $line["site_url"]; -# $content_link = "" . -# $line["title"] . ""; + //setting feed headline background color, needs to change text color based on dark/light + $fav_color = $line['favicon_avg_color']; - $updated_fmt = make_local_datetime($line["updated"], false, false, false, true); - $date_entered_fmt = T_sprintf("Imported at %s", - make_local_datetime($line["date_entered"], false)); + require_once "colors.php"; - $score = $line["score"]; + if ($fav_color && $fav_color != 'fail') { + if (!isset($rgba_cache[$feed_id])) { + $rgba_cache[$feed_id] = join(",", _color_unpack($fav_color)); + } + } - $score_pic = "images/" . get_score_pic($score); + if (!get_pref('COMBINED_DISPLAY_MODE')) { -/* $score_title = __("(Click to change)"); - $score_pic = ""; */ + if ($vfeed_group_enabled) { + if ($feed_id != $vgroup_last_feed && $line["feed_title"]) { - $score_pic = ""; + $cur_feed_title = $line["feed_title"]; + $vgroup_last_feed = $feed_id; - if ($score > 500) { - $hlc_suffix = "high"; - } else if ($score < -100) { - $hlc_suffix = "low"; - } else { - $hlc_suffix = ""; - } + $cur_feed_title = htmlspecialchars($cur_feed_title); - $entry_author = $line["author"]; + $vf_catchup_link = "".__('mark feed as read').""; - if ($entry_author) { - $entry_author = " — $entry_author"; - } + $reply['content'] .= "
";
- } else if (!is_numeric($result)) {
- $message = "";
+ $sth = $this->pdo->prepare("SELECT " . SUBSTRING_FOR_DATE . "(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds
+ WHERE owner_uid = ?");
+ $sth->execute([$_SESSION['uid']]);
+ $row = $sth->fetch();
- switch ($view_mode) {
- case "unread":
- $message = __("No unread articles found to display.");
- break;
- case "updated":
- $message = __("No updated articles found to display.");
- break;
- case "marked":
- $message = __("No starred articles found to display.");
- break;
- default:
- if ($feed < LABEL_BASE_INDEX) {
- $message = __("No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter.");
- } else {
- $message = __("No articles found to display.");
+ $last_updated = make_local_datetime($row["last_updated"], false);
+
+ $reply['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
+
+ $sth = $this->pdo->prepare("SELECT COUNT(id) AS num_errors
+ FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ?");
+ $sth->execute([$_SESSION['uid']]);
+ $row = $sth->fetch();
+
+ $num_errors = $row["num_errors"];
+
+ if ($num_errors > 0) {
+ $reply['content'] .= "
";
+ $reply['content'] .= "" .
+ __('Some feeds have update errors (click for details)') . "";
}
- }
+ $reply['content'] .= "
";
-
- $sth = $this->pdo->prepare("SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds
- WHERE owner_uid = ?");
- $sth->execute([$_SESSION['uid']]);
- $row = $sth->fetch();
-
- $last_updated = make_local_datetime($row["last_updated"], false);
-
- $reply['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
-
- $sth = $this->pdo->prepare("SELECT COUNT(id) AS num_errors
- FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ?");
- $sth->execute([$_SESSION['uid']]);
- $row = $sth->fetch();
-
- $num_errors = $row["num_errors"];
-
- if ($num_errors > 0) {
- $reply['content'] .= "
";
- $reply['content'] .= "".
- __('Some feeds have update errors (click for details)')."";
}
- $reply['content'] .= "