<?php
define('EXPECTED_CONFIG_VERSION', 26);
- define('SCHEMA_VERSION', 107);
+ define('SCHEMA_VERSION', 108);
+
+ define('LABEL_BASE_INDEX', -1024);
$fetch_last_error = false;
$pluginhost = false;
AND $ref_check_qpart AND unread = true
AND owner_uid = $owner_uid");
- } else if ($feed < 0 && $feed > -10) { // special, like starred
+ } else if ($feed < 0 && $feed > LABEL_BASE_INDEX) { // special, like starred
if ($feed == -1) {
db_query($link, "UPDATE ttrss_user_entries
owner_uid = $owner_uid");
}
- } else if ($feed < -10) { // label
+ } else if ($feed < LABEL_BASE_INDEX) { // label
- $label_id = -$feed - 11;
+ $label_id = feed_to_label_id($feed);
db_query($link, "UPDATE ttrss_user_entries, ttrss_user_labels2
SET unread = false, last_read = NOW()
$match_part = "feed_id IS NULL";
}
- } else if ($feed < -10) {
+ } else if ($feed < LABEL_BASE_INDEX) {
- $label_id = -$feed - 11;
+ $label_id = feed_to_label_id($feed);
return getLabelUnread($link, $label_id, $owner_uid);
while ($line = db_fetch_assoc($result)) {
- $id = -$line["id"] - 11;
+ $id = label_to_feed_id($line["id"]);
$label_name = $line["caption"];
$count = $line["unread"];
function getFeedCatTitle($link, $id) {
if ($id == -1) {
return __("Special");
- } else if ($id < -10) {
+ } else if ($id < LABEL_BASE_INDEX) {
return __("Labels");
} else if ($id > 0) {
$result = db_query($link, "SELECT ttrss_feed_categories.title
return "images/recently_read.png";
break;
default:
- if ($id < -10) {
+ if ($id < LABEL_BASE_INDEX) {
return "images/label.png";
} else {
if (file_exists(ICONS_DIR . "/$id.ico"))
return __("Archived articles");
} else if ($id == -6) {
return __("Recently read");
- } else if ($id < -10) {
- $label_id = -$id - 11;
+ } else if ($id < LABEL_BASE_INDEX) {
+ $label_id = feed_to_label_id($id);
$result = db_query($link, "SELECT caption FROM ttrss_labels2 WHERE id = '$label_id'");
if (db_num_rows($result) == 1) {
return db_fetch_result($result, 0, "caption");
$view_query_part = " ";
} else if ($feed != -1) {
- if (get_pref($link, "SORT_HEADLINES_BY_FEED_DATE", $owner_uid)) {
- $a_date_sort_field = "updated";
- } else {
- $a_date_sort_field = "date_entered";
- }
+ $unread = getFeedUnread($link, $feed, $cat_view);
- if (get_pref($link, 'REVERSE_HEADLINES', $owner_uid)) {
- $a_order_by = "$a_date_sort_field";
- } else {
- $a_order_by = "$a_date_sort_field DESC";
- }
+ if ($cat_view && $feed > 0 && $include_children)
+ $unread += getCategoryChildrenUnread($link, $feed);
- if (!$override_order) {
- $override_order = "unread DESC, $a_order_by";
- }
-
- if (!$ignore_vfeed_group && ($is_cat || $feed_id < 0) &&
- get_pref($link, 'VFEED_GROUP_BY_FEED', $owner_uid)) {
-
- $override_order = "ttrss_feeds.title, $override_order";
- }
+ if ($unread > 0)
+ $view_query_part = " unread = true AND ";
}
}
$view_query_part = " published = true AND ";
}
- if ($view_mode == "unread") {
+ if ($view_mode == "unread" && $feed != -6) {
$view_query_part = " unread = true AND ";
}
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
$allow_archived = true;
- if (!$override_order) $override_order = "last_marked DESC, updated DESC";
+ if (!$override_order) {
+ if (get_pref($link, 'REVERSE_HEADLINES', $owner_uid)) {
+ $override_order = "date_entered";
+ } else {
+ $override_order = "last_marked DESC, date_entered DESC";
+ }
+ }
} else if ($feed == -2) { // published virtual feed OR labels category
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
$allow_archived = true;
- if (!$override_order) $override_order = "last_published DESC, updated DESC";
+ if (!$override_order) {
+ if (get_pref($link, 'REVERSE_HEADLINES', $owner_uid)) {
+ $override_order = "date_entered";
+ } else {
+ $override_order = "last_published DESC, date_entered DESC";
+ }
+ }
+
} else {
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
} else if ($feed == -4) { // all articles virtual feed
$query_strategy_part = "true";
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
- } else if ($feed <= -10) { // labels
- $label_id = -$feed - 11;
+ } else if ($feed <= LABEL_BASE_INDEX) { // labels
+ $label_id = feed_to_label_id($feed);
$query_strategy_part = "label_id = '$label_id' AND
ttrss_labels2.id = ttrss_user_labels2.label_id AND
$order_by = "score DESC, $order_by";
}
+ if ($view_mode == "unread_first") {
+ $order_by = "unread DESC, $order_by";
+ }
+
if ($override_order) {
$order_by = $override_order;
}
break;
}
+ if (isset($rule['inverse'])) $qpart = "NOT ($qpart)";
+
if (isset($rule["feed_id"]) && $rule["feed_id"] > 0) {
$qpart .= " AND feed_id = " . db_escape_string($link, $rule["feed_id"]);
}
$qpart .= " AND $cat_qpart";
}
- if (isset($rule['inverse'])) $qpart = "NOT ($qpart)";
-
array_push($query, "($qpart)");
}
}
}
+ function label_to_feed_id($label) {
+ return LABEL_BASE_INDEX - 1 - abs($label);
+ }
+
+ function feed_to_label_id($feed) {
+ return LABEL_BASE_INDEX - 1 + abs($feed);
+ }
+
?>