1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-13 20:35:55 +00:00

implement year-week sorting window if headlines buffer is grouped by feed titles

This commit is contained in:
Andrew Dolgov
2018-12-09 13:35:37 +03:00
parent 4036b479f9
commit fa538a6c86
2 changed files with 18 additions and 9 deletions

View File

@@ -114,7 +114,7 @@ class Feeds extends Handler_Protected {
private function format_headlines_list($feed, $method, $view_mode, $limit, $cat_view, private function format_headlines_list($feed, $method, $view_mode, $limit, $cat_view,
$offset, $override_order = false, $include_children = false, $check_first_id = false, $offset, $override_order = false, $include_children = false, $check_first_id = false,
$skip_first_id_check = false) { $skip_first_id_check = false, $order_by = false) {
$disable_cache = false; $disable_cache = false;
@@ -172,7 +172,8 @@ class Feeds extends Handler_Protected {
"owner_uid" => $_SESSION["uid"], "owner_uid" => $_SESSION["uid"],
"filter" => false, "filter" => false,
"since_id" => 0, "since_id" => 0,
"include_children" => $include_children); "include_children" => $include_children,
"order_by" => $order_by);
$qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id($feed), $qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id($feed),
$options); $options);
@@ -191,7 +192,8 @@ class Feeds extends Handler_Protected {
"offset" => $offset, "offset" => $offset,
"include_children" => $include_children, "include_children" => $include_children,
"check_first_id" => $check_first_id, "check_first_id" => $check_first_id,
"skip_first_id_check" => $skip_first_id_check "skip_first_id_check" => $skip_first_id_check,
"order_by" => $order_by
); );
$qfh_ret = $this->queryFeedHeadlines($params); $qfh_ret = $this->queryFeedHeadlines($params);
@@ -542,7 +544,7 @@ class Feeds extends Handler_Protected {
$ret = $this->format_headlines_list($feed, $method, $ret = $this->format_headlines_list($feed, $method,
$view_mode, $limit, $cat_view, $offset, $view_mode, $limit, $cat_view, $offset,
$override_order, true, $check_first_id, $skip_first_id_check); $override_order, true, $check_first_id, $skip_first_id_check, $order_by);
$headlines_count = $ret[1]; $headlines_count = $ret[1];
$disable_cache = $ret[3]; $disable_cache = $ret[3];
@@ -1431,6 +1433,7 @@ class Feeds extends Handler_Protected {
$start_ts = isset($params["start_ts"]) ? $params["start_ts"] : false; $start_ts = isset($params["start_ts"]) ? $params["start_ts"] : false;
$check_first_id = isset($params["check_first_id"]) ? $params["check_first_id"] : false; $check_first_id = isset($params["check_first_id"]) ? $params["check_first_id"] : false;
$skip_first_id_check = isset($params["skip_first_id_check"]) ? $params["skip_first_id_check"] : false; $skip_first_id_check = isset($params["skip_first_id_check"]) ? $params["skip_first_id_check"] : false;
$order_by = isset($params["order_by"]) ? $params["order_by"] : false;
$ext_tables_part = ""; $ext_tables_part = "";
$limit_query_part = ""; $limit_query_part = "";
@@ -1660,10 +1663,12 @@ class Feeds extends Handler_Protected {
if (is_numeric($feed)) { if (is_numeric($feed)) {
// proper override_order applied above // proper override_order applied above
if ($vfeed_query_part && !$ignore_vfeed_group && get_pref('VFEED_GROUP_BY_FEED', $owner_uid)) { if ($vfeed_query_part && !$ignore_vfeed_group && get_pref('VFEED_GROUP_BY_FEED', $owner_uid)) {
$yyiw_desc = $order_by == "date_reverse" ? "" : "desc";
if (!$override_order) { if (!$override_order) {
$order_by = "ttrss_feeds.title, ".$order_by; $order_by = "yyiw $yyiw_desc, ttrss_feeds.title, ".$order_by;
} else { } else {
$order_by = "ttrss_feeds.title, ".$override_order; $order_by = "yyiw $yyiw_desc, ttrss_feeds.title, ".$override_order;
} }
} }
@@ -1693,8 +1698,10 @@ class Feeds extends Handler_Protected {
if (DB_TYPE == "pgsql") { if (DB_TYPE == "pgsql") {
$sanity_interval_qpart = "date_entered >= NOW() - INTERVAL '1 hour' AND"; $sanity_interval_qpart = "date_entered >= NOW() - INTERVAL '1 hour' AND";
$yyiw_qpart = "to_char(date_entered, 'YYYY-IW') AS yyiw";
} else { } else {
$sanity_interval_qpart = "date_entered >= DATE_SUB(NOW(), INTERVAL 1 hour) AND"; $sanity_interval_qpart = "date_entered >= DATE_SUB(NOW(), INTERVAL 1 hour) AND";
$yyiw_qpart = "concat(year(date_entered),lpad(weekofyear(date_entered), 2, '0')) AS yyiw";
} }
if (!$search && !$skip_first_id_check) { if (!$search && !$skip_first_id_check) {
@@ -1702,6 +1709,7 @@ class Feeds extends Handler_Protected {
$query = "SELECT DISTINCT $query = "SELECT DISTINCT
ttrss_feeds.title, ttrss_feeds.title,
date_entered, date_entered,
$yyiw_qpart,
guid, guid,
ttrss_entries.id, ttrss_entries.id,
ttrss_entries.title, ttrss_entries.title,
@@ -1740,6 +1748,7 @@ class Feeds extends Handler_Protected {
$query = "SELECT DISTINCT $query = "SELECT DISTINCT
date_entered, date_entered,
$yyiw_qpart,
guid, guid,
ttrss_entries.id,ttrss_entries.title, ttrss_entries.id,ttrss_entries.title,
updated, updated,

View File

@@ -567,10 +567,10 @@ define(["dojo/_base/declare"], function (declare) {
let value = order_by.attr('value'); let value = order_by.attr('value');
if (value == "date_reverse") if (value != "date_reverse")
value = "default";
else
value = "date_reverse"; value = "date_reverse";
else
value = "default";
order_by.attr('value', value); order_by.attr('value', value);