summaryrefslogtreecommitdiff
path: root/classes/Feeds.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/Feeds.php')
-rw-r--r--classes/Feeds.php70
1 files changed, 12 insertions, 58 deletions
diff --git a/classes/Feeds.php b/classes/Feeds.php
index 3eab4e9f8..25df28dab 100644
--- a/classes/Feeds.php
+++ b/classes/Feeds.php
@@ -756,33 +756,10 @@ class Feeds extends Handler_Protected {
$search_qpart = "true";
}
- // TODO: all this interval stuff needs some generic generator function
-
- switch ($mode) {
- case "1day":
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $date_qpart = "date_entered < NOW() - INTERVAL '1 day' ";
- } else {
- $date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 DAY) ";
- }
- break;
- case "1week":
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $date_qpart = "date_entered < NOW() - INTERVAL '1 week' ";
- } else {
- $date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
- }
- break;
- case "2week":
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $date_qpart = "date_entered < NOW() - INTERVAL '2 week' ";
- } else {
- $date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 2 WEEK) ";
- }
- break;
- default:
- $date_qpart = "true";
- }
+ $date_qpart = match ($mode) {
+ '1day', '1week', '2week' => Db::past_comparison_qpart('date_entered', '<', (int) substr($mode, 0, 1), substr($mode, 1)),
+ default => 'true',
+ };
if (is_numeric($feed_id_or_tag_name)) {
$feed_id = (int) $feed_id_or_tag_name;
@@ -853,12 +830,7 @@ class Feeds extends Handler_Protected {
$intl = (int) Prefs::get(Prefs::FRESH_ARTICLE_MAX_AGE, $owner_uid, $profile);
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $match_part = "date_entered > NOW() - INTERVAL '$intl hour' ";
- } else {
- $match_part = "date_entered > DATE_SUB(NOW(),
- INTERVAL $intl HOUR) ";
- }
+ $match_part = Db::past_comparison_qpart('date_entered', '>', $intl, 'hour');
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
@@ -949,15 +921,8 @@ class Feeds extends Handler_Protected {
} else if ($n_feed == Feeds::FEED_PUBLISHED) {
$match_part = "published = true";
} else if ($n_feed == Feeds::FEED_FRESH) {
- $match_part = "unread = true AND score >= 0";
-
$intl = (int) Prefs::get(Prefs::FRESH_ARTICLE_MAX_AGE, $owner_uid, $profile);
-
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $match_part .= " AND date_entered > NOW() - INTERVAL '$intl hour' ";
- } else {
- $match_part .= " AND date_entered > DATE_SUB(NOW(), INTERVAL $intl HOUR) ";
- }
+ $match_part = 'unread = true AND score >= 0 AND ' . Db::past_comparison_qpart('date_entered', '>', $intl, 'hour');
$need_entries = true;
@@ -1568,13 +1533,8 @@ class Feeds extends Handler_Protected {
}
} else if ($feed == Feeds::FEED_RECENTLY_READ) { // recently read
- $query_strategy_part = "unread = false AND last_read IS NOT NULL";
-
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $query_strategy_part .= " AND last_read > NOW() - INTERVAL '1 DAY' ";
- } else {
- $query_strategy_part .= " AND last_read > DATE_SUB(NOW(), INTERVAL 1 DAY) ";
- }
+ $query_strategy_part = 'unread = false AND last_read IS NOT NULL AND '
+ . Db::past_comparison_qpart('last_read', '>', 1, 'day');
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
$allow_archived = true;
@@ -1583,15 +1543,10 @@ class Feeds extends Handler_Protected {
if (!$override_order) $override_order = "last_read DESC";
} else if ($feed == Feeds::FEED_FRESH) { // fresh virtual feed
- $query_strategy_part = "unread = true AND score >= 0";
-
$intl = (int) Prefs::get(Prefs::FRESH_ARTICLE_MAX_AGE, $owner_uid, $profile);
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $query_strategy_part .= " AND date_entered > NOW() - INTERVAL '$intl hour' ";
- } else {
- $query_strategy_part .= " AND date_entered > DATE_SUB(NOW(), INTERVAL $intl HOUR) ";
- }
+ $query_strategy_part = 'unread = true AND score >= 0 AND '
+ . Db::past_comparison_qpart('date_entered', '>', $intl, 'hour');
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
} else if ($feed == Feeds::FEED_ALL) { // all articles virtual feed
@@ -1712,13 +1667,12 @@ class Feeds extends Handler_Protected {
if ($feed == Feeds::FEED_FRESH)
$first_id_query_strategy_part = "true";
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $sanity_interval_qpart = "date_entered >= NOW() - INTERVAL '1 hour' AND";
+ $sanity_interval_qpart = Db::past_comparison_qpart('date_entered', '>=', 1, 'hour') . ' AND ';
+ if (Config::get(Config::DB_TYPE) == "pgsql") {
$distinct_columns = str_replace("desc", "", strtolower($order_by));
$distinct_qpart = "DISTINCT ON (id, $distinct_columns)";
} else {
- $sanity_interval_qpart = "date_entered >= DATE_SUB(NOW(), INTERVAL 1 hour) AND";
$distinct_qpart = "DISTINCT"; //fallback
}