From f822a8e56c747a168e69c73d8519d8b08b3ae809 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Mar 2013 09:40:07 +0400 Subject: [PATCH] experimentally rebase labels; make base index configurable --- classes/feeds.php | 6 ++--- classes/pref/feeds.php | 6 ++--- include/functions.php | 34 +++++++++++++++++++---------- include/labels.php | 2 +- js/FeedTree.js | 4 ++-- js/functions.js | 11 ++++++++++ js/viewfeed.js | 3 ++- plugins/mobile/mobile-functions.php | 2 +- 8 files changed, 45 insertions(+), 23 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index 89ebd4a0..2c45da2d 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -700,7 +700,7 @@ class Feeds extends Handler_Protected { $message = __("No starred articles found to display."); break; default: - if ($feed < -10) { + if ($feed < LABEL_BASE_INDEX) { $message = __("No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter."); } else { $message = __("No articles found to display."); @@ -777,8 +777,8 @@ class Feeds extends Handler_Protected { $result = false; - if ($feed < -10) { - $label_feed = -11-$feed; + if ($feed < LABEL_BASE_INDEX) { + $label_feed = feed_to_label_id($feed); $result = db_query($this->link, "SELECT id FROM ttrss_labels2 WHERE id = '$label_feed' AND owner_uid = " . $_SESSION['uid']); } else if (!$cat_view && is_numeric($feed) && $feed > 0) { diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index ca4ae344..a6811f3f 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -134,7 +134,7 @@ class Pref_Feeds extends Handler_Protected { while ($line = db_fetch_assoc($result)) { - $label_id = -$line['id'] - 11; + $label_id = label_to_feed_id($line['id']); $feed = $this->feedlist_init_feed($label_id, false, 0); @@ -1700,8 +1700,8 @@ class Pref_Feeds extends Handler_Protected { ccache_remove($link, $id, $owner_uid); } else { - label_remove($link, -11-$id, $owner_uid); - ccache_remove($link, -11-$id, $owner_uid); + label_remove($link, feed_to_label_id($id), $owner_uid); + //ccache_remove($link, $id, $owner_uid); don't think labels are cached } } diff --git a/include/functions.php b/include/functions.php index a9c7d95f..e926c034 100644 --- a/include/functions.php +++ b/include/functions.php @@ -2,6 +2,8 @@ define('EXPECTED_CONFIG_VERSION', 26); define('SCHEMA_VERSION', 108); + define('LABEL_BASE_INDEX', -1024); + $fetch_last_error = false; $pluginhost = false; @@ -1034,7 +1036,7 @@ 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 @@ -1085,9 +1087,9 @@ 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() @@ -1334,9 +1336,9 @@ $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); @@ -1446,7 +1448,7 @@ while ($line = db_fetch_assoc($result)) { - $id = -$line["id"] - 11; + $id = label_to_feed_id($line["id"]); $label_name = $line["caption"]; $count = $line["unread"]; @@ -1753,7 +1755,7 @@ 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 @@ -1791,7 +1793,7 @@ 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")) @@ -1816,8 +1818,8 @@ 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"); @@ -2389,8 +2391,8 @@ } 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 @@ -4155,4 +4157,12 @@ } } + 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); + } + ?> diff --git a/include/labels.php b/include/labels.php index 75936007..5ac8794d 100644 --- a/include/labels.php +++ b/include/labels.php @@ -158,7 +158,7 @@ /* Remove access key for the label */ - $ext_id = -11 - $id; + $ext_id = LABEL_BASE_INDEX - 1 - $id; db_query($link, "DELETE FROM ttrss_access_keys WHERE feed_id = '$ext_id' AND owner_uid = $owner_uid"); diff --git a/js/FeedTree.js b/js/FeedTree.js index e0b068f1..620efdbf 100644 --- a/js/FeedTree.js +++ b/js/FeedTree.js @@ -106,7 +106,7 @@ dojo.declare("fox.FeedTree", dijit.Tree, { var id = args.item.id[0]; var bare_id = parseInt(id.substr(id.indexOf(':')+1)); - if (bare_id < -10) { + if (bare_id < _label_base_index) { var span = dojo.doc.createElement('span'); var fg_color = args.item.fg_color[0]; var bg_color = args.item.bg_color[0]; @@ -380,7 +380,7 @@ dojo.declare("fox.FeedTree", dijit.Tree, { var node = tree._itemNodesMap[id]; if (node) { - if (hide && unread == 0 && (bare_id > 0 || bare_id < -10 || !show_special)) { + if (hide && unread == 0 && (bare_id > 0 || bare_id < _label_base_index || !show_special)) { Effect.Fade(node[0].rowNode, {duration : 0.3, queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }}); } else { diff --git a/js/functions.js b/js/functions.js index a9367da6..fcf82a8e 100644 --- a/js/functions.js +++ b/js/functions.js @@ -2,6 +2,7 @@ var notify_silent = false; var loading_progress = 0; var sanity_check_done = false; var init_params = {}; +var _label_base_index = -1024; Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap( function (callOriginal, options) { @@ -1986,3 +1987,13 @@ function htmlspecialchars_decode (string, quote_style) { return string; } + + +function label_to_feed_id(label) { + return _label_base_index - 1 - Math.abs(label); +} + +function feed_to_label_id(feed) { + return _label_base_index - 1 + Math.abs(feed); +} + diff --git a/js/viewfeed.js b/js/viewfeed.js index 794e9495..cc14461f 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1920,7 +1920,7 @@ function initHeadlinesMenu() { var bare_id = id.substr(id.indexOf(":")+1); var name = label.name[0]; - bare_id = -11-bare_id; + bare_id = feed_to_label_id(bare_id); labelAddMenu.addChild(new dijit.MenuItem({ label: name, @@ -2120,3 +2120,4 @@ function displayArticleUrl(id) { exception_error("changeScore", e); } } + diff --git a/plugins/mobile/mobile-functions.php b/plugins/mobile/mobile-functions.php index 8c2ab88c..8e5cb701 100644 --- a/plugins/mobile/mobile-functions.php +++ b/plugins/mobile/mobile-functions.php @@ -207,7 +207,7 @@ while ($line = db_fetch_assoc($result)) { - $id = -$line["id"] - 11; + $id = label_to_feed_id($line["id"]); $unread = getFeedUnread($link, $id); $title = $line["caption"]; -- 2.39.2