From fe08299ec46eb8df2988c788ced2c019743bee6a Mon Sep 17 00:00:00 2001 From: wn_ Date: Sun, 5 Mar 2023 19:14:08 +0000 Subject: Replace special feed and category numbers with constants. --- classes/feeds.php | 142 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 92 insertions(+), 50 deletions(-) (limited to 'classes/feeds.php') diff --git a/classes/feeds.php b/classes/feeds.php index b4b20d2fc..a7bfbe9d6 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -2,8 +2,52 @@ require_once "colors.php"; class Feeds extends Handler_Protected { - const NEVER_GROUP_FEEDS = [ -6, 0 ]; - const NEVER_GROUP_BY_DATE = [ -2, -1, -3 ]; + /** special feed for archived articles */ + const FEED_ARCHIVED = 0; + + /** special feed for starred articles */ + const FEED_STARRED = -1; + + /** special feed for published articles */ + const FEED_PUBLISHED = -2; + + /** special feed for archived articles */ + const FEED_FRESH = -3; + + /** special feed for all articles */ + const FEED_ALL = -4; + + /** + * a special case feed used to display auxiliary information when there's nothing to load (e.g. no stuff in fresh feed) + * + * TODO: Remove this and 'Feeds::_generate_dashboard_feed()'? It only seems to be used if 'Feeds::view()' (also potentially removable) + * gets passed the ID. + */ + const FEED_NOTHING = -5; + + /** special feed for recently read articles */ + const FEED_RECENTLY_READ = -6; + + /** special feed for error scenarios (e.g. feed not found) */ + const FEED_ERROR = -7; + + /** special "category" for uncategorized articles */ + const CATEGORY_UNCATEGORIZED = 0; + + /** special category for "special" articles (e.g. Starred, Published, Archived, plugin-provided, etc.) */ + const CATEGORY_SPECIAL = -1; + + /** special category for labels */ + const CATEGORY_LABELS = -2; + + /** special category for all feeds, excluding virtual feeds (e.g. labels and such) */ + const CATEGORY_ALL_EXCEPT_VIRTUAL = -3; + + /** special category for all feeds, including virtual feeds (e.g. labels and such) */ + const CATEGORY_ALL = -4; + + const NEVER_GROUP_FEEDS = [ Feeds::FEED_RECENTLY_READ, Feeds::FEED_ARCHIVED ]; + const NEVER_GROUP_BY_DATE = [ Feeds::FEED_PUBLISHED, Feeds::FEED_STARRED, Feeds::FEED_FRESH ]; /** @var int|float int on 64-bit, float on 32-bit */ private $viewfeed_timestamp; @@ -205,7 +249,7 @@ class Feeds extends Handler_Protected { // normalize archived feed if ($line['feed_id'] === null) { - $line['feed_id'] = 0; + $line['feed_id'] = Feeds::FEED_ARCHIVED; $line["feed_title"] = __("Archived articles"); } @@ -478,10 +522,7 @@ class Feeds extends Handler_Protected { if (is_numeric($feed)) $feed = (int) $feed; - /* Feed -5 is a special case: it is used to display auxiliary information - * when there's nothing to load - e.g. no stuff in fresh feed */ - - if ($feed == -5) { + if ($feed == Feeds::FEED_NOTHING) { print json_encode($this->_generate_dashboard_feed()); return; } @@ -566,7 +607,7 @@ class Feeds extends Handler_Protected { private function _generate_dashboard_feed(): array { $reply = array(); - $reply['headlines']['id'] = -5; + $reply['headlines']['id'] = Feeds::FEED_NOTHING; $reply['headlines']['is_cat'] = false; $reply['headlines']['toolbar'] = ''; @@ -610,7 +651,7 @@ class Feeds extends Handler_Protected { private function _generate_error_feed(string $error): array { $reply = array(); - $reply['headlines']['id'] = -7; + $reply['headlines']['id'] = Feeds::FEED_ERROR; $reply['headlines']['is_cat'] = false; $reply['headlines']['toolbar'] = ''; @@ -827,7 +868,9 @@ class Feeds extends Handler_Protected { if ($feed_id >= 0) { - if ($feed_id > 0) { + if ($feed_id == Feeds::CATEGORY_UNCATEGORIZED) { + $cat_qpart = "cat_id IS NULL"; + } else { $children = self::_get_child_cats($feed_id, $owner_uid); array_push($children, $feed_id); $children = array_map("intval", $children); @@ -835,8 +878,6 @@ class Feeds extends Handler_Protected { $children = join(",", $children); $cat_qpart = "cat_id IN ($children)"; - } else { - $cat_qpart = "cat_id IS NULL"; } $sth = $pdo->prepare("UPDATE ttrss_user_entries @@ -847,7 +888,7 @@ class Feeds extends Handler_Protected { (SELECT id FROM ttrss_feeds WHERE $cat_qpart) AND $date_qpart AND $search_qpart) as tmp)"); $sth->execute([$owner_uid]); - } else if ($feed_id == -2) { + } else if ($feed_id == Feeds::CATEGORY_LABELS) { $sth = $pdo->prepare("UPDATE ttrss_user_entries SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*) @@ -867,7 +908,7 @@ class Feeds extends Handler_Protected { } else if ($feed_id < 0 && $feed_id > LABEL_BASE_INDEX) { // special, like starred - if ($feed_id == -1) { + if ($feed_id == Feeds::FEED_STARRED) { $sth = $pdo->prepare("UPDATE ttrss_user_entries SET unread = false, last_read = NOW() WHERE ref_id IN (SELECT id FROM @@ -876,7 +917,7 @@ class Feeds extends Handler_Protected { $sth->execute([$owner_uid]); } - if ($feed_id == -2) { + if ($feed_id == Feeds::FEED_PUBLISHED) { $sth = $pdo->prepare("UPDATE ttrss_user_entries SET unread = false, last_read = NOW() WHERE ref_id IN (SELECT id FROM @@ -885,7 +926,7 @@ class Feeds extends Handler_Protected { $sth->execute([$owner_uid]); } - if ($feed_id == -3) { + if ($feed_id == Feeds::FEED_FRESH) { $intl = (int) get_pref(Prefs::FRESH_ARTICLE_MAX_AGE); @@ -904,7 +945,7 @@ class Feeds extends Handler_Protected { $sth->execute([$owner_uid]); } - if ($feed_id == -4) { + if ($feed_id == Feeds::FEED_ALL) { $sth = $pdo->prepare("UPDATE ttrss_user_entries SET unread = false, last_read = NOW() WHERE ref_id IN (SELECT id FROM @@ -973,7 +1014,7 @@ class Feeds extends Handler_Protected { } else { return 0; } - } else if ($n_feed == -6) { + } else if ($n_feed == Feeds::FEED_RECENTLY_READ) { return 0; // tags } else if ($feed != "0" && $n_feed == 0) { @@ -989,11 +1030,11 @@ class Feeds extends Handler_Protected { // Handle 'SUM()' returning null if there are no results return $row["count"] ?? 0; - } else if ($n_feed == -1) { + } else if ($n_feed == Feeds::FEED_STARRED) { $match_part = "marked = true"; - } else if ($n_feed == -2) { + } else if ($n_feed == Feeds::FEED_PUBLISHED) { $match_part = "published = true"; - } else if ($n_feed == -3) { + } else if ($n_feed == Feeds::FEED_FRESH) { $match_part = "unread = true AND score >= 0"; $intl = (int) get_pref(Prefs::FRESH_ARTICLE_MAX_AGE, $owner_uid); @@ -1006,11 +1047,11 @@ class Feeds extends Handler_Protected { $need_entries = true; - } else if ($n_feed == -4) { + } else if ($n_feed == Feeds::FEED_ALL) { $match_part = "true"; } else if ($n_feed >= 0) { - if ($n_feed != 0) { + if ($n_feed != Feeds::FEED_ARCHIVED) { $match_part = sprintf("feed_id = %d", $n_feed); } else { $match_part = "feed_id IS NULL"; @@ -1191,17 +1232,17 @@ class Feeds extends Handler_Protected { */ static function _get_icon(int $id) { switch ($id) { - case 0: + case Feeds::FEED_ARCHIVED: return "archive"; - case -1: + case Feeds::FEED_STARRED: return "star"; - case -2: + case Feeds::FEED_PUBLISHED: return "rss_feed"; - case -3: + case Feeds::FEED_FRESH: return "whatshot"; - case -4: + case Feeds::FEED_ALL: return "inbox"; - case -6: + case Feeds::FEED_RECENTLY_READ: return "restore"; default: if ($id < LABEL_BASE_INDEX) { @@ -1264,17 +1305,17 @@ class Feeds extends Handler_Protected { if ($cat) { return self::_get_cat_title($id); - } else if ($id == -1) { + } else if ($id == Feeds::FEED_STARRED) { return __("Starred articles"); - } else if ($id == -2) { + } else if ($id == Feeds::FEED_PUBLISHED) { return __("Published articles"); - } else if ($id == -3) { + } else if ($id == Feeds::FEED_FRESH) { return __("Fresh articles"); - } else if ($id == -4) { + } else if ($id == Feeds::FEED_ALL) { return __("All articles"); - } else if ($id === 0) { + } else if ($id === Feeds::FEED_ARCHIVED) { return __("Archived articles"); - } else if ($id == -6) { + } else if ($id == Feeds::FEED_RECENTLY_READ) { return __("Recently read"); } else if ($id < LABEL_BASE_INDEX) { @@ -1350,9 +1391,9 @@ class Feeds extends Handler_Protected { if ($row = $sth->fetch()) { return (int) $row["unread"]; } - } else if ($cat == -1) { + } else if ($cat == Feeds::CATEGORY_SPECIAL) { return 0; - } else if ($cat == -2) { + } else if ($cat == Feeds::CATEGORY_LABELS) { $sth = $pdo->prepare("SELECT COUNT(DISTINCT article_id) AS unread FROM ttrss_user_entries ue, ttrss_user_labels2 l @@ -1407,11 +1448,11 @@ class Feeds extends Handler_Protected { static function _get_cat_title(int $cat_id): string { switch ($cat_id) { - case 0: + case Feeds::CATEGORY_UNCATEGORIZED: return __("Uncategorized"); - case -1: + case Feeds::CATEGORY_SPECIAL: return __("Special"); - case -2: + case Feeds::CATEGORY_LABELS: return __("Labels"); default: $cat = ORM::for_table('ttrss_feed_categories') @@ -1526,6 +1567,7 @@ class Feeds extends Handler_Protected { if ($search) { $view_query_part = " "; } else if ($feed != -1) { + // not Feeds::FEED_STARRED or Feeds::CATEGORY_SPECIAL $unread = Feeds::_get_counters($feed, $cat_view, true); @@ -1550,7 +1592,7 @@ class Feeds extends Handler_Protected { $view_query_part = " published = true AND "; } - if ($view_mode == "unread" && $feed != -6) { + if ($view_mode == "unread" && $feed != Feeds::FEED_RECENTLY_READ) { $view_query_part = " unread = true AND "; } @@ -1594,13 +1636,13 @@ class Feeds extends Handler_Protected { } else { $query_strategy_part = "feed_id = " . $pdo->quote((string)$feed); } - } else if ($feed == 0 && !$cat_view) { // archive virtual feed + } else if ($feed == Feeds::FEED_ARCHIVED && !$cat_view) { // archive virtual feed $query_strategy_part = "feed_id IS NULL"; $allow_archived = true; - } else if ($feed == 0 && $cat_view) { // uncategorized + } else if ($feed == Feeds::CATEGORY_UNCATEGORIZED && $cat_view) { // uncategorized $query_strategy_part = "cat_id IS NULL AND feed_id IS NOT NULL"; $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else if ($feed == -1) { // starred virtual feed + } else if ($feed == -1) { // starred virtual feed, Feeds::FEED_STARRED or Feeds::CATEGORY_SPECIAL $query_strategy_part = "marked = true"; $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; $allow_archived = true; @@ -1609,7 +1651,7 @@ class Feeds extends Handler_Protected { $override_order = "last_marked DESC, date_entered DESC, updated DESC"; } - } else if ($feed == -2) { // published virtual feed OR labels category + } else if ($feed == -2) { // published virtual feed (Feeds::FEED_PUBLISHED) OR labels category (Feeds::CATEGORY_LABELS) if (!$cat_view) { $query_strategy_part = "published = true"; @@ -1629,7 +1671,7 @@ class Feeds extends Handler_Protected { ttrss_user_labels2.article_id = ref_id"; } - } else if ($feed == -6) { // recently read + } 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") { @@ -1644,7 +1686,7 @@ class Feeds extends Handler_Protected { if (!$override_order) $override_order = "last_read DESC"; - } else if ($feed == -3) { // fresh virtual feed + } else if ($feed == Feeds::FEED_FRESH) { // fresh virtual feed $query_strategy_part = "unread = true AND score >= 0"; $intl = (int) get_pref(Prefs::FRESH_ARTICLE_MAX_AGE, $owner_uid); @@ -1656,7 +1698,7 @@ class Feeds extends Handler_Protected { } $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - } else if ($feed == -4) { // all articles virtual feed + } else if ($feed == Feeds::FEED_ALL) { // all articles virtual feed $allow_archived = true; $query_strategy_part = "true"; $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; @@ -1771,7 +1813,7 @@ class Feeds extends Handler_Protected { $first_id_query_strategy_part = $query_strategy_part; - if ($feed == -3) + if ($feed == Feeds::FEED_FRESH) $first_id_query_strategy_part = "true"; if (Config::get(Config::DB_TYPE) == "pgsql") { @@ -1785,7 +1827,7 @@ class Feeds extends Handler_Protected { } // except for Labels category - if (get_pref(Prefs::HEADLINES_NO_DISTINCT, $owner_uid) && !($feed == -2 && $cat_view)) { + if (get_pref(Prefs::HEADLINES_NO_DISTINCT, $owner_uid) && !($feed == Feeds::CATEGORY_LABELS && $cat_view)) { $distinct_qpart = ""; } -- cgit v1.2.3 From b14a8a76ebdf41adc7b8e0e95db1decb1a3d95f6 Mon Sep 17 00:00:00 2001 From: wn_ Date: Tue, 7 Mar 2023 15:45:07 +0000 Subject: Change 'FEED_NOTHING' to 'FEED_DASHBOARD'. --- classes/feeds.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'classes/feeds.php') diff --git a/classes/feeds.php b/classes/feeds.php index a7bfbe9d6..002a9eae7 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -23,7 +23,7 @@ class Feeds extends Handler_Protected { * TODO: Remove this and 'Feeds::_generate_dashboard_feed()'? It only seems to be used if 'Feeds::view()' (also potentially removable) * gets passed the ID. */ - const FEED_NOTHING = -5; + const FEED_DASHBOARD = -5; /** special feed for recently read articles */ const FEED_RECENTLY_READ = -6; @@ -522,7 +522,7 @@ class Feeds extends Handler_Protected { if (is_numeric($feed)) $feed = (int) $feed; - if ($feed == Feeds::FEED_NOTHING) { + if ($feed == Feeds::FEED_DASHBOARD) { print json_encode($this->_generate_dashboard_feed()); return; } @@ -607,7 +607,7 @@ class Feeds extends Handler_Protected { private function _generate_dashboard_feed(): array { $reply = array(); - $reply['headlines']['id'] = Feeds::FEED_NOTHING; + $reply['headlines']['id'] = Feeds::FEED_DASHBOARD; $reply['headlines']['is_cat'] = false; $reply['headlines']['toolbar'] = ''; -- cgit v1.2.3