$reply .= "<span class=\"main\">";
$reply .= "<span id='selected_prompt'></span>";
- $reply .= "
+ $reply .= "<span class=\"sel_links\">
<a href=\"#\" onclick=\"$sel_all_link\">".__('All')."</a>,
<a href=\"#\" onclick=\"$sel_unread_link\">".__('Unread')."</a>,
<a href=\"#\" onclick=\"$sel_inv_link\">".__('Invert')."</a>,
<a href=\"#\" onclick=\"$sel_none_link\">".__('None')."</a></li>";
- $reply .= " ";
+ $reply .= "</span> ";
$reply .= "<select dojoType=\"dijit.form.Select\"
onchange=\"headlineActionsChange(this)\">";
private function format_headlines_list($feed, $method, $view_mode, $limit, $cat_view,
$next_unread_feed, $offset, $vgr_last_feed = false,
- $override_order = false, $include_children = false) {
+ $override_order = false, $include_children = false, $check_first_id = false,
+ $skip_first_id_check = false) {
$disable_cache = false;
}
@$search = $this->dbh->escape_string($_REQUEST["query"]);
+ @$search_language = $this->dbh->escape_string($_REQUEST["search_language"]); // PGSQL only
if ($search) {
$disable_cache = true;
}
} else {
- $qfh_ret = queryFeedHeadlines($feed, $limit, $view_mode, $cat_view,
+ /*$qfh_ret = queryFeedHeadlines($feed, $limit, $view_mode, $cat_view,
$search, false, $override_order, $offset, 0,
- false, 0, $include_children);
+ false, 0, $include_children, $topid);*/
+
+ //function queryFeedHeadlines($feed, $limit,
+ // $view_mode, $cat_view, $search, $search_mode,
+ // $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false,
+ // $ignore_vfeed_group = false, $override_strategy = false, $override_vfeed = false, $start_ts = false, $check_top_id = false) {
+
+ $params = array(
+ "feed" => $feed,
+ "limit" => $limit,
+ "view_mode" => $view_mode,
+ "cat_view" => $cat_view,
+ "search" => $search,
+ "search_language" => $search_language,
+ "override_order" => $override_order,
+ "offset" => $offset,
+ "include_children" => $include_children,
+ "check_first_id" => $check_first_id,
+ "skip_first_id_check" => $skip_first_id_check
+ );
+
+ $qfh_ret = queryFeedHeadlines($params);
}
$vfeed_group_enabled = get_pref("VFEED_GROUP_BY_FEED") && $feed != -6;
$last_updated = strpos($qfh_ret[4], '1970-') === FALSE ?
make_local_datetime($qfh_ret[4], false) : __("Never");
$highlight_words = $qfh_ret[5];
+ $reply['first_id'] = $qfh_ret[6];
$vgroup_last_feed = $vgr_last_feed;
$feed, $cat_view, $search, $view_mode,
$last_error, $last_updated);
- $headlines_count = $this->dbh->num_rows($result);
-
- /* if (get_pref('COMBINED_DISPLAY_MODE')) {
- $button_plugins = array();
- foreach (explode(",", ARTICLE_BUTTON_PLUGINS) as $p) {
- $pclass = "button_" . trim($p);
-
- if (class_exists($pclass)) {
- $plugin = new $pclass();
- array_push($button_plugins, $plugin);
- }
- }
- } */
+ $headlines_count = is_numeric($result) ? 0 : $this->dbh->num_rows($result);
if ($offset == 0) {
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINES_BEFORE) as $p) {
}
}
- if ($this->dbh->num_rows($result) > 0) {
+ $reply['content'] = '';
+
+ if ($headlines_count > 0) {
$lnum = $offset;
$expand_cdm = get_pref('CDM_EXPANDED');
while ($line = $this->dbh->fetch_assoc($result)) {
+
$line["content_preview"] = "— " . truncate_string(strip_tags($line["content"]), 250);
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
$reply['content'] .= "<div id='FTITLE-$feed_id' class='cdmFeedTitle'>".
"<div style='float : right'>$feed_icon_img</div>".
- "<a class='title' href=\"#\" onclick=\"viewfeed($feed_id)\">". $line["feed_title"]."</a>
+ "<a class='title' href=\"#\" onclick=\"viewfeed({feed:$feed_id})\">".
+ $line["feed_title"]."</a>
$vf_catchup_link</div>";
+
}
}
if (@$line["feed_title"]) {
$rgba = @$rgba_cache[$feed_id];
- $reply['content'] .= "<span class=\"hlFeed\"><a style=\"background : rgba($rgba, 0.3)\" href=\"#\" onclick=\"viewfeed($feed_id)\">".
+ $reply['content'] .= "<span class=\"hlFeed\"><a style=\"background : rgba($rgba, 0.3)\" href=\"#\" onclick=\"viewfeed({feed:$feed_id})\">".
truncate_string($line["feed_title"],30)."</a></span>";
}
}
if ($line["feed_title"] && !$vfeed_group_enabled) {
- $reply['content'] .= "<span onclick=\"viewfeed($feed_id)\"
+ $reply['content'] .= "<span onclick=\"viewfeed({feed:$feed_id})\"
style=\"cursor : pointer\"
title=\"".htmlspecialchars($line['feed_title'])."\">
$feed_icon_img</span>";
$reply['content'] .= "<div id='FTITLE-$feed_id' class='cdmFeedTitle'>".
"<div style=\"float : right\">$feed_icon_img</div>".
- "<a href=\"#\" class='title' onclick=\"viewfeed($feed_id)\">".
+ "<a href=\"#\" class='title' onclick=\"viewfeed({feed:$feed_id})\">".
$line["feed_title"]."</a> $vf_catchup_link</div>";
+
}
}
$reply['content'] .= "<div class=\"hlFeed\">
<a href=\"#\" style=\"background-color: rgba($rgba,0.3)\"
- onclick=\"viewfeed($feed_id)\">".
+ onclick=\"viewfeed({feed:$feed_id})\">".
truncate_string($line["feed_title"],30)."</a>
</div>";
}
if (!get_pref("VFEED_GROUP_BY_FEED") && $line["feed_title"]) {
$reply['content'] .= "<span style=\"cursor : pointer\"
title=\"".htmlspecialchars($line["feed_title"])."\"
- onclick=\"viewfeed($feed_id)\">$feed_icon_img</span>";
+ onclick=\"viewfeed({feed:$feed_id})\">$feed_icon_img</span>";
}
$reply['content'] .= "</div>";
$reply['content'] .= "</span>";
- $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]);
+ $reply['content'] .= "</div>";
+
+ $reply['content'] .= "<div class=\"cdmIntermediate\">";
+ $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]);
$reply['content'] .= format_article_enclosures($id, $always_display_enclosures, $line["content"], sql_bool_to_bool($line["hide_images"]));
$reply['content'] .= "</div>";
$tags_str = format_tags_string($tags, $id);
+ $reply['content'] .= "<span class='left'>";
+
$reply['content'] .= "<img src='images/tag.png' alt='Tags' title='Tags'>
<span id=\"ATSTR-$id\">$tags_str</span>
<a title=\"".__('Edit tags for this article')."\"
if ($entry_comments) $reply['content'] .= " ($entry_comments)";
- $reply['content'] .= "<div style=\"float : right\">";
+ $reply['content'] .= "</span>";
+ $reply['content'] .= "<div>";
// $reply['content'] .= "$marked_pic";
// $reply['content'] .= "$published_pic";
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PE", $timing_info);
- } else {
+ } else if (!is_numeric($result)) {
$message = "";
switch ($view_mode) {
}
if (!$offset && $message) {
- $reply['content'] .= "<div class='whiteBox'>$message";
+ $reply['content'] = "<div class='whiteBox'>$message";
$reply['content'] .= "<p><span class=\"insensitive\">";
__('Some feeds have update errors (click for details)')."</a>";
}
$reply['content'] .= "</span></p></div>";
+
}
+ } else if (is_numeric($result) && $result == -1) {
+ $reply['first_id_changed'] = true;
}
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H2", $timing_info);
@$offset = $this->dbh->escape_string($_REQUEST["skip"]);
@$vgroup_last_feed = $this->dbh->escape_string($_REQUEST["vgrlf"]);
$order_by = $this->dbh->escape_string($_REQUEST["order_by"]);
+ $check_first_id = $this->dbh->escape_string($_REQUEST["fid"]);
if (is_numeric($feed)) $feed = (int) $feed;
$reply['headlines'] = array();
- if (!$next_unread_feed)
- $reply['headlines']['id'] = $feed;
- else
- $reply['headlines']['id'] = $next_unread_feed;
-
- $reply['headlines']['is_cat'] = (bool) $cat_view;
-
$override_order = false;
+ $skip_first_id_check = false;
switch ($order_by) {
case "title":
break;
case "date_reverse":
$override_order = "score DESC, date_entered, updated";
+ $skip_first_id_check = true;
break;
case "feed_dates":
$override_order = "updated DESC";
$ret = $this->format_headlines_list($feed, $method,
$view_mode, $limit, $cat_view, $next_unread_feed, $offset,
- $vgroup_last_feed, $override_order, true);
+ $vgroup_last_feed, $override_order, true, $check_first_id, $skip_first_id_check);
//$topmost_article_ids = $ret[0];
$headlines_count = $ret[1];
$disable_cache = $ret[3];
$vgroup_last_feed = $ret[4];
- $reply['headlines']['content'] =& $ret[5]['content'];
- $reply['headlines']['toolbar'] =& $ret[5]['toolbar'];
+ //$reply['headlines']['content'] =& $ret[5]['content'];
+ //$reply['headlines']['toolbar'] =& $ret[5]['toolbar'];
+
+ $reply['headlines'] = $ret[5];
+
+ if (!$next_unread_feed)
+ $reply['headlines']['id'] = $feed;
+ else
+ $reply['headlines']['id'] = $next_unread_feed;
+
+ $reply['headlines']['is_cat'] = (bool) $cat_view;
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("05", $timing_info);
$reply['headlines']['is_cat'] = false;
$reply['headlines']['toolbar'] = '';
+
$reply['headlines']['content'] = "<div class='whiteBox'>".__('No feed selected.');
$reply['headlines']['content'] .= "<p><span class=\"insensitive\">";
private function generate_error_feed($error) {
$reply = array();
- $reply['headlines']['id'] = -6;
+ $reply['headlines']['id'] = -7;
$reply['headlines']['is_cat'] = false;
$reply['headlines']['toolbar'] = '';
print "<hr/><span style='float : right'>".T_sprintf('in %s', getFeedTitle($active_feed_id, $is_cat))."</span>";
+ if (DB_TYPE == "pgsql") {
+ print "<hr/>";
+ print_select("search_language", "", Pref_Feeds::$feed_languages,
+ "dojoType='dijit.form.Select' title=\"".__('Used for word stemming')."\"");
+ }
+
print "</div>";
print "<div class=\"dlgButtons\">";