diff options
author | Andrew Dolgov <[email protected]> | 2015-07-13 12:46:05 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2015-07-13 12:46:05 +0300 |
commit | 4f9a3c0e0f995b5ad8eed5357df3d12beb8bee00 (patch) | |
tree | 43b8e2eb0757095b80ed877ae1c379b7f0463f2e /classes | |
parent | c939dfc39645f6fd687dd926c50286eda4b2c2df (diff) | |
parent | 402073d6a1845f5874da67aa055e733cd2ae693a (diff) |
Merge branch 'master' of git.fakecake.org:tt-rss
Conflicts:
classes/pref/filters.php
Diffstat (limited to 'classes')
-rw-r--r-- | classes/api.php | 159 | ||||
-rw-r--r-- | classes/feeds.php | 217 | ||||
-rw-r--r-- | classes/handler/public.php | 48 | ||||
-rw-r--r-- | classes/pref/filters.php | 5 |
4 files changed, 271 insertions, 158 deletions
diff --git a/classes/api.php b/classes/api.php index 8267572f4..08c1846d2 100644 --- a/classes/api.php +++ b/classes/api.php @@ -2,7 +2,7 @@ class API extends Handler { - const API_LEVEL = 11; + const API_LEVEL = 12; const STATUS_OK = 0; const STATUS_ERR = 1; @@ -184,6 +184,8 @@ class API extends Handler { $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]); if ($feed_id != "") { + if (is_numeric($feed_id)) $feed_id = (int) $feed_id; + $limit = (int)$this->dbh->escape_string($_REQUEST["limit"]); if (!$limit || $limit >= 200) $limit = 200; @@ -203,6 +205,8 @@ class API extends Handler { $force_update = sql_bool_to_bool($_REQUEST["force_update"]); $has_sandbox = sql_bool_to_bool($_REQUEST["has_sandbox"]); $excerpt_length = (int)$this->dbh->escape_string($_REQUEST["excerpt_length"]); + $check_first_id = (int)$this->dbh->escape_string($_REQUEST["check_first_id"]); + $include_header = sql_bool_to_bool($_REQUEST["include_header"]); $_SESSION['hasSandbox'] = $has_sandbox; @@ -223,12 +227,16 @@ class API extends Handler { $search = $this->dbh->escape_string($_REQUEST["search"]); - $headlines = $this->api_get_headlines($feed_id, $limit, $offset, + list($headlines, $headlines_header) = $this->api_get_headlines($feed_id, $limit, $offset, $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $override_order, $include_attachments, $since_id, $search, - $include_nested, $sanitize_content, $force_update, $excerpt_length); + $include_nested, $sanitize_content, $force_update, $excerpt_length, $check_first_id); - $this->wrap(self::STATUS_OK, $headlines); + if ($include_header) { + $this->wrap(self::STATUS_OK, array($headlines_header, $headlines)); + } else { + $this->wrap(self::STATUS_OK, $headlines); + } } else { $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE')); } @@ -635,7 +643,8 @@ class API extends Handler { static function api_get_headlines($feed_id, $limit, $offset, $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $order, $include_attachments, $since_id, - $search = "", $include_nested = false, $sanitize_content = true, $force_update = false, $excerpt_length = 100) { + $search = "", $include_nested = false, $sanitize_content = true, + $force_update = false, $excerpt_length = 100, $check_first_id = false) { if ($force_update && $feed_id > 0 && is_numeric($feed_id)) { // Update the feed if required with some basic flood control @@ -658,51 +667,78 @@ class API extends Handler { } } - $qfh_ret = queryFeedHeadlines($feed_id, $limit, + /*$qfh_ret = queryFeedHeadlines($feed_id, $limit, $view_mode, $is_cat, $search, false, - $order, $offset, 0, false, $since_id, $include_nested); + $order, $offset, 0, false, $since_id, $include_nested);*/ + + //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_id, + "limit" => $limit, + "view_mode" => $view_mode, + "cat_view" => $is_cat, + "search" => $search, + "override_order" => $order, + "offset" => $offset, + "since_id" => $since_id, + "include_children" => $include_nested, + "check_first_id" => $check_first_id + ); + + $qfh_ret = queryFeedHeadlines($params); $result = $qfh_ret[0]; $feed_title = $qfh_ret[1]; + $first_id = $qfh_ret[6]; $headlines = array(); - while ($line = db_fetch_assoc($result)) { - $line["content_preview"] = truncate_string(strip_tags($line["content"]), $excerpt_length); - foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { - $line = $p->hook_query_headlines($line, $excerpt_length, true); - } + $headlines_header = array( + 'id' => $feed_id, + 'first_id' => $first_id, + 'is_cat' => $is_cat); - $is_updated = ($line["last_read"] == "" && - ($line["unread"] != "t" && $line["unread"] != "1")); + if (!is_numeric($result)) { + while ($line = db_fetch_assoc($result)) { + $line["content_preview"] = truncate_string(strip_tags($line["content"]), $excerpt_length); + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { + $line = $p->hook_query_headlines($line, $excerpt_length, true); + } - $tags = explode(",", $line["tag_cache"]); + $is_updated = ($line["last_read"] == "" && + ($line["unread"] != "t" && $line["unread"] != "1")); - $label_cache = $line["label_cache"]; - $labels = false; + $tags = explode(",", $line["tag_cache"]); - if ($label_cache) { - $label_cache = json_decode($label_cache, true); + $label_cache = $line["label_cache"]; + $labels = false; if ($label_cache) { - if ($label_cache["no-labels"] == 1) - $labels = array(); - else - $labels = $label_cache; + $label_cache = json_decode($label_cache, true); + + if ($label_cache) { + if ($label_cache["no-labels"] == 1) + $labels = array(); + else + $labels = $label_cache; + } } - } - if (!is_array($labels)) $labels = get_article_labels($line["id"]); + if (!is_array($labels)) $labels = get_article_labels($line["id"]); - //if (!$tags) $tags = get_article_tags($line["id"]); - //if (!$labels) $labels = get_article_labels($line["id"]); + //if (!$tags) $tags = get_article_tags($line["id"]); + //if (!$labels) $labels = get_article_labels($line["id"]); - $headline_row = array( + $headline_row = array( "id" => (int)$line["id"], "unread" => sql_bool_to_bool($line["unread"]), "marked" => sql_bool_to_bool($line["marked"]), "published" => sql_bool_to_bool($line["published"]), - "updated" => (int) strtotime($line["updated"]), + "updated" => (int)strtotime($line["updated"]), "is_updated" => $is_updated, "title" => $line["title"], "link" => $line["link"], @@ -710,52 +746,55 @@ class API extends Handler { "tags" => $tags, ); - if ($include_attachments) - $headline_row['attachments'] = get_article_enclosures( - $line['id']); + if ($include_attachments) + $headline_row['attachments'] = get_article_enclosures( + $line['id']); - if ($show_excerpt) - $headline_row["excerpt"] = $line["content_preview"]; + if ($show_excerpt) + $headline_row["excerpt"] = $line["content_preview"]; - if ($show_content) { + if ($show_content) { - if ($sanitize_content) { - $headline_row["content"] = sanitize( - $line["content"], - sql_bool_to_bool($line['hide_images']), - false, $line["site_url"], false, $line["id"]); - } else { - $headline_row["content"] = $line["content"]; + if ($sanitize_content) { + $headline_row["content"] = sanitize( + $line["content"], + sql_bool_to_bool($line['hide_images']), + false, $line["site_url"], false, $line["id"]); + } else { + $headline_row["content"] = $line["content"]; + } } - } - // unify label output to ease parsing - if ($labels["no-labels"] == 1) $labels = array(); + // unify label output to ease parsing + if ($labels["no-labels"] == 1) $labels = array(); - $headline_row["labels"] = $labels; + $headline_row["labels"] = $labels; - $headline_row["feed_title"] = $line["feed_title"] ? $line["feed_title"] : - $feed_title; + $headline_row["feed_title"] = $line["feed_title"] ? $line["feed_title"] : + $feed_title; - $headline_row["comments_count"] = (int)$line["num_comments"]; - $headline_row["comments_link"] = $line["comments"]; + $headline_row["comments_count"] = (int)$line["num_comments"]; + $headline_row["comments_link"] = $line["comments"]; - $headline_row["always_display_attachments"] = sql_bool_to_bool($line["always_display_enclosures"]); + $headline_row["always_display_attachments"] = sql_bool_to_bool($line["always_display_enclosures"]); - $headline_row["author"] = $line["author"]; + $headline_row["author"] = $line["author"]; - $headline_row["score"] = (int)$line["score"]; - $headline_row["note"] = $line["note"]; - $headline_row["lang"] = $line["lang"]; + $headline_row["score"] = (int)$line["score"]; + $headline_row["note"] = $line["note"]; + $headline_row["lang"] = $line["lang"]; - foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) { - $headline_row = $p->hook_render_article_api(array("headline" => $headline_row)); - } + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) { + $headline_row = $p->hook_render_article_api(array("headline" => $headline_row)); + } - array_push($headlines, $headline_row); + array_push($headlines, $headline_row); + } + } else if (is_numeric($result) && $result == -1) { + $headlines_header['first_id_changed'] = true; } - return $headlines; + return array($headlines, $headlines_header); } function unsubscribeFeed() { diff --git a/classes/feeds.php b/classes/feeds.php index ed66be291..089c3e713 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -148,7 +148,7 @@ class Feeds extends Handler_Protected { 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) { $disable_cache = false; @@ -232,9 +232,28 @@ class Feeds extends Handler_Protected { } } 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, + "override_order" => $override_order, + "offset" => $offset, + "include_children" => $include_children, + "check_first_id" => $check_first_id + ); + + $qfh_ret = queryFeedHeadlines($params); } $vfeed_group_enabled = get_pref("VFEED_GROUP_BY_FEED") && $feed != -6; @@ -248,6 +267,7 @@ class Feeds extends Handler_Protected { $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; @@ -276,7 +296,7 @@ class Feeds extends Handler_Protected { } } - if ($this->dbh->num_rows($result) > 0) { + if (!is_numeric($result) && $this->dbh->num_rows($result) > 0) { $lnum = $offset; @@ -287,7 +307,11 @@ class Feeds extends Handler_Protected { $expand_cdm = get_pref('CDM_EXPANDED'); + $reply['content'] = array(); + while ($line = $this->dbh->fetch_assoc($result)) { + $headline_row = ''; + $line["content_preview"] = "— " . truncate_string(strip_tags($line["content"]), 250); foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) { @@ -428,76 +452,79 @@ class Feeds extends Handler_Protected { $vf_catchup_link = "<a class='catchup' onclick='catchupFeedInGroup($feed_id);' href='#'>".__('mark feed as read')."</a>"; - $reply['content'] .= "<div id='FTITLE-$feed_id' class='cdmFeedTitle'>". + $feed_title_row = "<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_id)\">". + $line["feed_title"]."</a> $vf_catchup_link</div>"; + array_push($reply['content'], array('id' => 0, 'kind' => 'feed_title', 'html' => $feed_title_row)); + } } $mouseover_attrs = "onmouseover='postMouseIn(event, $id)' onmouseout='postMouseOut($id)'"; - $reply['content'] .= "<div class='hl $class' orig-feed-id='$feed_id' id='RROW-$id' $mouseover_attrs>"; + $headline_row .= "<div class='hl $class' orig-feed-id='$feed_id' id='RROW-$id' $mouseover_attrs>"; - $reply['content'] .= "<div class='hlLeft'>"; + $headline_row .= "<div class='hlLeft'>"; - $reply['content'] .= "<input dojoType=\"dijit.form.CheckBox\" + $headline_row .= "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" onclick=\"toggleSelectRow2(this)\" class='rchk'>"; - $reply['content'] .= "$marked_pic"; - $reply['content'] .= "$published_pic"; + $headline_row .= "$marked_pic"; + $headline_row .= "$published_pic"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; - $reply['content'] .= "<div onclick='return hlClicked(event, $id)' + $headline_row .= "<div onclick='return hlClicked(event, $id)' class=\"hlTitle\"><span class='hlContent $hlc_suffix'>"; - $reply['content'] .= "<a id=\"RTITLE-$id\" class=\"title $hlc_suffix\" + $headline_row .= "<a id=\"RTITLE-$id\" class=\"title $hlc_suffix\" href=\"" . htmlspecialchars($line["link"]) . "\" onclick=\"\">" . truncate_string($line["title"], 200); if (get_pref('SHOW_CONTENT_PREVIEW')) { - $reply['content'] .= "<span class=\"contentPreview\">" . $line["content_preview"] . "</span>"; + $headline_row .= "<span class=\"contentPreview\">" . $line["content_preview"] . "</span>"; } - $reply['content'] .= "</a></span>"; + $headline_row .= "</a></span>"; - $reply['content'] .= $labels_str; + $headline_row .= $labels_str; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; if (!$vfeed_group_enabled) { 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)\">". + $headline_row .= "<span class=\"hlFeed\"><a style=\"background : rgba($rgba, 0.3)\" href=\"#\" onclick=\"viewfeed($feed_id)\">". truncate_string($line["feed_title"],30)."</a></span>"; } } - $reply['content'] .= "<span class=\"hlUpdated\">"; + $headline_row .= "<span class=\"hlUpdated\">"; - $reply['content'] .= "<div title='$date_entered_fmt'>$updated_fmt</div> + $headline_row .= "<div title='$date_entered_fmt'>$updated_fmt</div> </span>"; - $reply['content'] .= "<div class=\"hlRight\">"; + $headline_row .= "<div class=\"hlRight\">"; - $reply['content'] .= $score_pic; + $headline_row .= $score_pic; if ($line["feed_title"] && !$vfeed_group_enabled) { - $reply['content'] .= "<span onclick=\"viewfeed($feed_id)\" + $headline_row .= "<span onclick=\"viewfeed($feed_id)\" style=\"cursor : pointer\" title=\"".htmlspecialchars($line['feed_title'])."\"> $feed_icon_img</span>"; } - $reply['content'] .= "</div>"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; + $headline_row .= "</div>"; } else { @@ -531,10 +558,12 @@ class Feeds extends Handler_Protected { //$feed_icon_img = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\" alt=\"\">"; } - $reply['content'] .= "<div id='FTITLE-$feed_id' class='cdmFeedTitle'>". + $feed_title_row = "<div id='FTITLE-$feed_id' class='cdmFeedTitle'>". "<div style=\"float : right\">$feed_icon_img</div>". "<a href=\"#\" class='title' onclick=\"viewfeed($feed_id)\">". $line["feed_title"]."</a> $vf_catchup_link</div>"; + + array_push($reply['content'], array('id' => 0, 'kind' => 'feed_title', 'html' => $feed_title_row)); } } @@ -543,20 +572,20 @@ class Feeds extends Handler_Protected { $expanded_class = $expand_cdm ? "expanded" : "expandable"; - $reply['content'] .= "<div class=\"cdm $hlc_suffix $expanded_class $class\" + $headline_row .= "<div class=\"cdm $hlc_suffix $expanded_class $class\" id=\"RROW-$id\" orig-feed-id='$feed_id' $mouseover_attrs>"; - $reply['content'] .= "<div class=\"cdmHeader\">"; - $reply['content'] .= "<div style=\"vertical-align : middle\">"; + $headline_row .= "<div class=\"cdmHeader\">"; + $headline_row .= "<div style=\"vertical-align : middle\">"; - $reply['content'] .= "<input dojoType=\"dijit.form.CheckBox\" + $headline_row .= "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" onclick=\"toggleSelectRow2(this, false, true)\" class='rchk'>"; - $reply['content'] .= "$marked_pic"; - $reply['content'] .= "$published_pic"; + $headline_row .= "$marked_pic"; + $headline_row .= "$published_pic"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; if ($highlight_words && count($highlight_words > 0)) { foreach ($highlight_words as $word) { @@ -565,7 +594,7 @@ class Feeds extends Handler_Protected { } } - $reply['content'] .= "<span id=\"RTITLE-$id\" + $headline_row .= "<span id=\"RTITLE-$id\" onclick=\"return cdmClicked(event, $id);\" class=\"titleWrap $hlc_suffix\"> <a class=\"title $hlc_suffix\" @@ -575,9 +604,9 @@ class Feeds extends Handler_Protected { $line["title"] . "</a> <span class=\"author\">$entry_author</span>"; - $reply['content'] .= $labels_str; + $headline_row .= $labels_str; - $reply['content'] .= "<span class='collapseBtn' style='display : none'> + $headline_row .= "<span class='collapseBtn' style='display : none'> <img src=\"images/collapse.png\" onclick=\"cdmCollapseArticle(event, $id)\" title=\"".__("Collapse article")."\"/></span>"; @@ -586,15 +615,15 @@ class Feeds extends Handler_Protected { else $excerpt_hidden = "style=\"display : none\""; - $reply['content'] .= "<span $excerpt_hidden id=\"CEXC-$id\" class=\"cdmExcerpt\">" . $content_preview . "</span>"; + $headline_row .= "<span $excerpt_hidden id=\"CEXC-$id\" class=\"cdmExcerpt\">" . $content_preview . "</span>"; - $reply['content'] .= "</span>"; + $headline_row .= "</span>"; if (!$vfeed_group_enabled) { if (@$line["feed_title"]) { $rgba = @$rgba_cache[$feed_id]; - $reply['content'] .= "<div class=\"hlFeed\"> + $headline_row .= "<div class=\"hlFeed\"> <a href=\"#\" style=\"background-color: rgba($rgba,0.3)\" onclick=\"viewfeed($feed_id)\">". truncate_string($line["feed_title"],30)."</a> @@ -602,34 +631,34 @@ class Feeds extends Handler_Protected { } } - $reply['content'] .= "<span class='updated' title='$date_entered_fmt'> + $headline_row .= "<span class='updated' title='$date_entered_fmt'> $updated_fmt</span>"; - $reply['content'] .= "<div class='scoreWrap' style=\"vertical-align : middle\">"; - $reply['content'] .= "$score_pic"; + $headline_row .= "<div class='scoreWrap' style=\"vertical-align : middle\">"; + $headline_row .= "$score_pic"; if (!get_pref("VFEED_GROUP_BY_FEED") && $line["feed_title"]) { - $reply['content'] .= "<span style=\"cursor : pointer\" + $headline_row .= "<span style=\"cursor : pointer\" title=\"".htmlspecialchars($line["feed_title"])."\" onclick=\"viewfeed($feed_id)\">$feed_icon_img</span>"; } - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; - $reply['content'] .= "<div class=\"cdmContent\" $content_hidden + $headline_row .= "<div class=\"cdmContent\" $content_hidden onclick=\"return cdmClicked(event, $id);\" id=\"CICD-$id\">"; - $reply['content'] .= "<div id=\"POSTNOTE-$id\">"; + $headline_row .= "<div id=\"POSTNOTE-$id\">"; if ($line['note']) { - $reply['content'] .= format_article_note($id, $line['note']); + $headline_row .= format_article_note($id, $line['note']); } - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; if (!$line['lang']) $line['lang'] = 'en'; - $reply['content'] .= "<div class=\"cdmContentInner\" lang=\"".$line['lang']."\">"; + $headline_row .= "<div class=\"cdmContentInner\" lang=\"".$line['lang']."\">"; if ($line["orig_feed_id"]) { @@ -638,54 +667,54 @@ class Feeds extends Handler_Protected { if ($this->dbh->num_rows($tmp_result) != 0) { - $reply['content'] .= "<div clear='both'>"; - $reply['content'] .= __("Originally from:"); + $headline_row .= "<div clear='both'>"; + $headline_row .= __("Originally from:"); - $reply['content'] .= " "; + $headline_row .= " "; $tmp_line = $this->dbh->fetch_assoc($tmp_result); - $reply['content'] .= "<a target='_blank' + $headline_row .= "<a target='_blank' href=' " . htmlspecialchars($tmp_line['site_url']) . "'>" . $tmp_line['title'] . "</a>"; - $reply['content'] .= " "; + $headline_row .= " "; - $reply['content'] .= "<a target='_blank' href='" . htmlspecialchars($tmp_line['feed_url']) . "'>"; - $reply['content'] .= "<img title='".__('Feed URL')."'class='tinyFeedIcon' src='images/pub_unset.png'></a>"; + $headline_row .= "<a target='_blank' href='" . htmlspecialchars($tmp_line['feed_url']) . "'>"; + $headline_row .= "<img title='".__('Feed URL')."'class='tinyFeedIcon' src='images/pub_unset.png'></a>"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; } } - $reply['content'] .= "<span id=\"CWRAP-$id\">"; + $headline_row .= "<span id=\"CWRAP-$id\">"; // if (!$expand_cdm) { - $reply['content'] .= "<span id=\"CENCW-$id\" style=\"display : none\">"; - $reply['content'] .= htmlspecialchars($line["content"]); - $reply['content'] .= "</span."; + $headline_row .= "<span id=\"CENCW-$id\" style=\"display : none\">"; + $headline_row .= htmlspecialchars($line["content"]); + $headline_row .= "</span."; // } else { -// $reply['content'] .= $line["content"]; +// $headline_row .= $line["content"]; // } - $reply['content'] .= "</span>"; + $headline_row .= "</span>"; $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"])); + $headline_row .= format_article_enclosures($id, $always_display_enclosures, $line["content"], sql_bool_to_bool($line["hide_images"])); - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; - $reply['content'] .= "<div class=\"cdmFooter\" onclick=\"cdmFooterClick(event)\">"; + $headline_row .= "<div class=\"cdmFooter\" onclick=\"cdmFooterClick(event)\">"; foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_LEFT_BUTTON) as $p) { - $reply['content'] .= $p->hook_article_left_button($line); + $headline_row .= $p->hook_article_left_button($line); } $tags_str = format_tags_string($tags, $id); - $reply['content'] .= "<img src='images/tag.png' alt='Tags' title='Tags'> + $headline_row .= "<img src='images/tag.png' alt='Tags' title='Tags'> <span id=\"ATSTR-$id\">$tags_str</span> <a title=\"".__('Edit tags for this article')."\" href=\"#\" onclick=\"editArticleTags($id)\">(+)</a>"; @@ -709,32 +738,34 @@ class Feeds extends Handler_Protected { } } - if ($entry_comments) $reply['content'] .= " ($entry_comments)"; + if ($entry_comments) $headline_row .= " ($entry_comments)"; - $reply['content'] .= "<div style=\"float : right\">"; + $headline_row .= "<div style=\"float : right\">"; -// $reply['content'] .= "$marked_pic"; -// $reply['content'] .= "$published_pic"; +// $headline_row .= "$marked_pic"; +// $headline_row .= "$published_pic"; foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_BUTTON) as $p) { - $reply['content'] .= $p->hook_article_button($line); + $headline_row .= $p->hook_article_button($line); } - $reply['content'] .= "</div>"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; + $headline_row .= "</div>"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; - $reply['content'] .= "</div>"; + $headline_row .= "</div>"; } + array_push($reply['content'], array("id" => (int)$line['id'], 'html' => $headline_row)); + ++$lnum; } if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PE", $timing_info); - } else { + } else if (!is_numeric($result)) { $message = ""; switch ($view_mode) { @@ -780,6 +811,9 @@ class Feeds extends Handler_Protected { } $reply['content'] .= "</span></p></div>"; } + } else if (is_numeric($result) && $result == -1) { + $reply['content'] = ''; + $reply['first_id_changed'] = true; } if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H2", $timing_info); @@ -810,6 +844,7 @@ class Feeds extends Handler_Protected { @$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; @@ -864,13 +899,6 @@ class Feeds extends Handler_Protected { $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; switch ($order_by) { @@ -889,7 +917,7 @@ class Feeds extends Handler_Protected { $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); //$topmost_article_ids = $ret[0]; $headlines_count = $ret[1]; @@ -897,8 +925,17 @@ class Feeds extends Handler_Protected { $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); diff --git a/classes/handler/public.php b/classes/handler/public.php index 74e837846..1bf088701 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -37,10 +37,31 @@ class Handler_Public extends Handler { break; } - $qfh_ret = queryFeedHeadlines($feed, + /*$qfh_ret = queryFeedHeadlines($feed, 1, $view_mode, $is_cat, $search, false, $date_sort_field, $offset, $owner_uid, - false, 0, true, true, false, false, $start_ts); + false, 0, true, true, false, false, $start_ts);*/ + + //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( + "owner_uid" => $owner_uid, + "feed" => $feed, + "limit" => 1, + "view_mode" => $view_mode, + "cat_view" => $is_cat, + "search" => $search, + "override_order" => $date_sort_field, + "include_children" => true, + "ignore_vfeed_group" => true, + "offset" => $offset, + "start_ts" => $start_ts + ); + + $qfh_ret = queryFeedHeadlines($params); $result = $qfh_ret[0]; @@ -58,11 +79,26 @@ class Handler_Public extends Handler { header("Last-Modified: $last_modified", true); } - $qfh_ret = queryFeedHeadlines($feed, + /*$qfh_ret = queryFeedHeadlines($feed, $limit, $view_mode, $is_cat, $search, false, $date_sort_field, $offset, $owner_uid, - false, 0, true, true, false, false, $start_ts); - + false, 0, true, true, false, false, $start_ts);*/ + + $params = array( + "owner_uid" => $owner_uid, + "feed" => $feed, + "limit" => $limit, + "view_mode" => $view_mode, + "cat_view" => $is_cat, + "search" => $search, + "override_order" => $date_sort_field, + "include_children" => true, + "ignore_vfeed_group" => true, + "offset" => $offset, + "start_ts" => $start_ts + ); + + $qfh_ret = queryFeedHeadlines($params); $result = $qfh_ret[0]; $feed_title = htmlspecialchars($qfh_ret[1]); @@ -496,7 +532,7 @@ class Handler_Public extends Handler { </div> <button type="submit"><?php echo __('Share') ?></button> <button onclick="return window.close()"><?php echo __('Cancel') ?></button> - </div> + </td> </form> </td></tr></table> diff --git a/classes/pref/filters.php b/classes/pref/filters.php index 6e8f4630c..0e887c426 100644 --- a/classes/pref/filters.php +++ b/classes/pref/filters.php @@ -114,6 +114,7 @@ class Pref_Filters extends Handler_Protected { $result = db_query("SELECT ttrss_entries.id, ttrss_entries.title, ttrss_feeds.id AS feed_id, + ttrss_feeds.title AS feed_title, ttrss_feed_categories.id AS cat_id, content, link, @@ -152,7 +153,7 @@ class Pref_Filters extends Handler_Protected { checked=\"1\" disabled=\"1\" type=\"checkbox\"></td>"; print "<td>"; - foreach ($filter['rules'] as $rule) { + /*foreach ($filter['rules'] as $rule) { $reg_exp = $rule['reg_exp']; $reg_exp = str_replace('/', '\/', $rule["reg_exp"]); @@ -161,7 +162,7 @@ class Pref_Filters extends Handler_Protected { $content_preview = preg_replace("/($reg_exp)/i", "<span class=\"highlight\">$1</span>", $content_preview); - } + }*/ print $line["title"]; print " ("; |