summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2018-12-09 13:35:37 +0300
committerAndrew Dolgov <[email protected]>2018-12-09 13:35:37 +0300
commitfa538a6c86bad425a361cd9bc06b15dbad13bd50 (patch)
tree36525e4644b674f28d6f0a992d2906d3750da3d5 /classes
parent4036b479f99eb91fcc8bfd4a2428cc4f44c3220f (diff)
implement year-week sorting window if headlines buffer is grouped by feed titles
Diffstat (limited to 'classes')
-rwxr-xr-xclasses/feeds.php21
1 files changed, 15 insertions, 6 deletions
diff --git a/classes/feeds.php b/classes/feeds.php
index fc2551f5e..c31f4b676 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -114,7 +114,7 @@ class Feeds extends Handler_Protected {
private function format_headlines_list($feed, $method, $view_mode, $limit, $cat_view,
$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;
@@ -172,7 +172,8 @@ class Feeds extends Handler_Protected {
"owner_uid" => $_SESSION["uid"],
"filter" => false,
"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),
$options);
@@ -191,7 +192,8 @@ class Feeds extends Handler_Protected {
"offset" => $offset,
"include_children" => $include_children,
"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);
@@ -542,7 +544,7 @@ class Feeds extends Handler_Protected {
$ret = $this->format_headlines_list($feed, $method,
$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];
$disable_cache = $ret[3];
@@ -1431,6 +1433,7 @@ class Feeds extends Handler_Protected {
$start_ts = isset($params["start_ts"]) ? $params["start_ts"] : 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;
+ $order_by = isset($params["order_by"]) ? $params["order_by"] : false;
$ext_tables_part = "";
$limit_query_part = "";
@@ -1660,10 +1663,12 @@ class Feeds extends Handler_Protected {
if (is_numeric($feed)) {
// proper override_order applied above
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) {
- $order_by = "ttrss_feeds.title, ".$order_by;
+ $order_by = "yyiw $yyiw_desc, ttrss_feeds.title, ".$order_by;
} 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") {
$sanity_interval_qpart = "date_entered >= NOW() - INTERVAL '1 hour' AND";
+ $yyiw_qpart = "to_char(date_entered, 'YYYY-IW') AS yyiw";
} else {
$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) {
@@ -1702,6 +1709,7 @@ class Feeds extends Handler_Protected {
$query = "SELECT DISTINCT
ttrss_feeds.title,
date_entered,
+ $yyiw_qpart,
guid,
ttrss_entries.id,
ttrss_entries.title,
@@ -1740,6 +1748,7 @@ class Feeds extends Handler_Protected {
$query = "SELECT DISTINCT
date_entered,
+ $yyiw_qpart,
guid,
ttrss_entries.id,ttrss_entries.title,
updated,