mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-24 00:11:28 +00:00
filter by search results while marking feed as read
This commit is contained in:
@@ -1163,149 +1163,148 @@
|
||||
}
|
||||
}
|
||||
|
||||
function catchup_feed($feed, $cat_view, $owner_uid = false, $max_id = false, $mode = 'all') {
|
||||
function catchup_feed($feed, $cat_view, $owner_uid = false, $max_id = false, $mode = 'all', $search = false) {
|
||||
|
||||
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
|
||||
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
|
||||
|
||||
//if (preg_match("/^-?[0-9][0-9]*$/", $feed) != false) {
|
||||
// Todo: all this interval stuff needs some generic generator function
|
||||
|
||||
// Todo: all this interval stuff needs some generic generator function
|
||||
$date_qpart = "false";
|
||||
$search_qpart = is_array($search) && $search[0] ? search_to_sql($search[0], $search[1])[0] : 'true';
|
||||
|
||||
$date_qpart = "false";
|
||||
|
||||
switch ($mode) {
|
||||
case "1day":
|
||||
if (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 (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 (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";
|
||||
switch ($mode) {
|
||||
case "1day":
|
||||
if (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 (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 (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";
|
||||
}
|
||||
|
||||
if (is_numeric($feed)) {
|
||||
if ($cat_view) {
|
||||
if (is_numeric($feed)) {
|
||||
if ($cat_view) {
|
||||
|
||||
if ($feed >= 0) {
|
||||
if ($feed >= 0) {
|
||||
|
||||
if ($feed > 0) {
|
||||
$children = getChildCategories($feed, $owner_uid);
|
||||
array_push($children, $feed);
|
||||
if ($feed > 0) {
|
||||
$children = getChildCategories($feed, $owner_uid);
|
||||
array_push($children, $feed);
|
||||
|
||||
$children = join(",", $children);
|
||||
$children = join(",", $children);
|
||||
|
||||
$cat_qpart = "cat_id IN ($children)";
|
||||
} else {
|
||||
$cat_qpart = "cat_id IS NULL";
|
||||
}
|
||||
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND feed_id IN
|
||||
(SELECT id FROM ttrss_feeds WHERE $cat_qpart) AND $date_qpart) as tmp)");
|
||||
|
||||
} else if ($feed == -2) {
|
||||
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*)
|
||||
FROM ttrss_user_labels2, ttrss_entries WHERE article_id = ref_id AND id = ref_id AND $date_qpart) > 0
|
||||
AND unread = true AND owner_uid = $owner_uid");
|
||||
$cat_qpart = "cat_id IN ($children)";
|
||||
} else {
|
||||
$cat_qpart = "cat_id IS NULL";
|
||||
}
|
||||
|
||||
} else if ($feed > 0) {
|
||||
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND feed_id = $feed AND $date_qpart) as tmp)");
|
||||
AND owner_uid = $owner_uid AND unread = true AND feed_id IN
|
||||
(SELECT id FROM ttrss_feeds WHERE $cat_qpart) AND $date_qpart AND $search_qpart) as tmp)");
|
||||
|
||||
} else if ($feed < 0 && $feed > LABEL_BASE_INDEX) { // special, like starred
|
||||
} else if ($feed == -2) {
|
||||
|
||||
if ($feed == -1) {
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND marked = true AND $date_qpart) as tmp)");
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*)
|
||||
FROM ttrss_user_labels2, ttrss_entries WHERE article_id = ref_id AND id = ref_id AND $date_qpart AND $search_qpart) > 0
|
||||
AND unread = true AND owner_uid = $owner_uid");
|
||||
}
|
||||
|
||||
} else if ($feed > 0) {
|
||||
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND feed_id = $feed AND $date_qpart AND $search_qpart) as tmp)");
|
||||
|
||||
} else if ($feed < 0 && $feed > LABEL_BASE_INDEX) { // special, like starred
|
||||
|
||||
if ($feed == -1) {
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND marked = true AND $date_qpart AND $search_qpart) as tmp)");
|
||||
}
|
||||
|
||||
if ($feed == -2) {
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND published = true AND $date_qpart AND $search_qpart) as tmp)");
|
||||
}
|
||||
|
||||
if ($feed == -3) {
|
||||
|
||||
$intl = get_pref("FRESH_ARTICLE_MAX_AGE");
|
||||
|
||||
if (DB_TYPE == "pgsql") {
|
||||
$match_part = "date_entered > NOW() - INTERVAL '$intl hour' ";
|
||||
} else {
|
||||
$match_part = "date_entered > DATE_SUB(NOW(),
|
||||
INTERVAL $intl HOUR) ";
|
||||
}
|
||||
|
||||
if ($feed == -2) {
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND published = true AND $date_qpart) as tmp)");
|
||||
}
|
||||
|
||||
if ($feed == -3) {
|
||||
|
||||
$intl = get_pref("FRESH_ARTICLE_MAX_AGE");
|
||||
|
||||
if (DB_TYPE == "pgsql") {
|
||||
$match_part = "date_entered > NOW() - INTERVAL '$intl hour' ";
|
||||
} else {
|
||||
$match_part = "date_entered > DATE_SUB(NOW(),
|
||||
INTERVAL $intl HOUR) ";
|
||||
}
|
||||
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND score >= 0 AND unread = true AND $date_qpart AND $match_part) as tmp)");
|
||||
}
|
||||
|
||||
if ($feed == -4) {
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)");
|
||||
}
|
||||
|
||||
} else if ($feed < LABEL_BASE_INDEX) { // label
|
||||
|
||||
$label_id = feed_to_label_id($feed);
|
||||
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_user_labels2 WHERE ref_id = id
|
||||
AND label_id = '$label_id' AND ref_id = article_id
|
||||
AND owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)");
|
||||
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND score >= 0 AND unread = true AND $date_qpart AND $match_part AND $search_qpart) as tmp)");
|
||||
}
|
||||
|
||||
ccache_update($feed, $owner_uid, $cat_view);
|
||||
if ($feed == -4) {
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
|
||||
AND owner_uid = $owner_uid AND unread = true AND $date_qpart AND $search_qpart) as tmp)");
|
||||
}
|
||||
|
||||
} else if ($feed < LABEL_BASE_INDEX) { // label
|
||||
|
||||
$label_id = feed_to_label_id($feed);
|
||||
|
||||
} else { // tag
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_tags WHERE ref_id = ttrss_entries.id
|
||||
AND post_int_id = int_id AND tag_name = '$feed'
|
||||
AND ttrss_user_entries.owner_uid = $owner_uid AND unread = true AND $date_qpart) as tmp)");
|
||||
(SELECT DISTINCT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_user_labels2 WHERE ref_id = id
|
||||
AND label_id = '$label_id' AND ref_id = article_id
|
||||
AND owner_uid = $owner_uid AND unread = true AND $date_qpart AND $search_qpart) as tmp)");
|
||||
|
||||
}
|
||||
|
||||
ccache_update($feed, $owner_uid, $cat_view);
|
||||
|
||||
} else { // tag
|
||||
db_query("UPDATE ttrss_user_entries
|
||||
SET unread = false, last_read = NOW() WHERE ref_id IN
|
||||
(SELECT id FROM
|
||||
(SELECT DISTINCT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_tags WHERE ref_id = ttrss_entries.id
|
||||
AND post_int_id = int_id AND tag_name = '$feed'
|
||||
AND ttrss_user_entries.owner_uid = $owner_uid AND unread = true AND $date_qpart AND $search_qpart) as tmp)");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function getAllCounters() {
|
||||
|
||||
Reference in New Issue
Block a user