aboutsummaryrefslogtreecommitdiff
path: root/app/Models/Context.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2018-09-29 20:47:17 +0200
committerGravatar GitHub <noreply@github.com> 2018-09-29 20:47:17 +0200
commit8ee8a573f1f7e9cc45f9b3c46627d15670f14f3a (patch)
tree14200758ab43e4031f60b46b8c6e9018b43e53af /app/Models/Context.php
parent3ae1b57c9d2e23157be54e8fe9865b85872ff9e7 (diff)
Custom labels (#2027)
* First draft of custom tags https://github.com/FreshRSS/FreshRSS/issues/928 https://github.com/FreshRSS/FreshRSS/issues/1367 * SMALLINT to BIGINT for id_entry And uppercase SQL types * Fix layout for unreads * Start UI menu * Change menu order * Clean database helpers https://github.com/FreshRSS/FreshRSS/pull/2027#discussion_r217971535 * Travis rules do not understand PostgreSQL constants Grrr * Tag controller + UI * Add column attributes to tags * Use only favicon for now, for label * Fix styling for different themes * Constant for maximum InnoDB index length in Unicode https://github.com/FreshRSS/FreshRSS/pull/2027#discussion_r219052200 (I would have personnally prefered keeping the readability of a real value instead of a constant, in this case of many SQL fields) * Use FreshRSS_Factory::createCategoryDao * Add view of all articles containing any tag * Fix search in tags * Mark as read tags * Partial auto-update unread tags * More auto update tag unreads * Add tag deletion * Do not purge tagged articles * Minor comment * Fix SQLite and UI bug * Google Reader API support for user tags Add SQL check that tag names must be distinct from category names * whitespace * Add missing API for EasyRSS * Compatibility SQLite Problematic parentheses * Add SQL DISTINCT for cases with multiple tags * Fix for PostgreSQL PostgreSQL needs some additional type hint to avoid "could not determine data type of parameter $1" http://www.postgresql-archive.org/Could-not-determine-data-type-of-parameter-1-tp2171092p2171094.html
Diffstat (limited to 'app/Models/Context.php')
-rw-r--r--app/Models/Context.php46
1 files changed, 39 insertions, 7 deletions
diff --git a/app/Models/Context.php b/app/Models/Context.php
index 2ca8f80b0..60ec6ff77 100644
--- a/app/Models/Context.php
+++ b/app/Models/Context.php
@@ -8,6 +8,7 @@ class FreshRSS_Context {
public static $user_conf = null;
public static $system_conf = null;
public static $categories = array();
+ public static $tags = array();
public static $name = '';
public static $description = '';
@@ -25,6 +26,8 @@ class FreshRSS_Context {
'starred' => false,
'feed' => false,
'category' => false,
+ 'tag' => false,
+ 'tags' => false,
);
public static $next_get = 'a';
@@ -91,6 +94,14 @@ class FreshRSS_Context {
} else {
return 'c_' . self::$current_get['category'];
}
+ } elseif (self::$current_get['tag']) {
+ if ($array) {
+ return array('t', self::$current_get['tag']);
+ } else {
+ return 't_' . self::$current_get['tag'];
+ }
+ } elseif (self::$current_get['tags']) {
+ return 'T';
}
}
@@ -117,6 +128,10 @@ class FreshRSS_Context {
return self::$current_get['feed'] == $id;
case 'c':
return self::$current_get['category'] == $id;
+ case 't':
+ return self::$current_get['tag'] == $id;
+ case 'T':
+ return self::$current_get['tags'] || self::$current_get['tag'];
default:
return false;
}
@@ -130,6 +145,7 @@ class FreshRSS_Context {
* - s
* - f_<feed id>
* - c_<category id>
+ * - t_<tag id>
*
* $name and $get_unread attributes are also updated as $next_get
* Raise an exception if id or $get is invalid.
@@ -140,7 +156,7 @@ class FreshRSS_Context {
$nb_unread = 0;
if (empty(self::$categories)) {
- $catDAO = new FreshRSS_CategoryDAO();
+ $catDAO = FreshRSS_Factory::createCategoryDao();
self::$categories = $catDAO->listCategories();
}
@@ -166,12 +182,10 @@ class FreshRSS_Context {
if ($feed === null) {
$feedDAO = FreshRSS_Factory::createFeedDao();
$feed = $feedDAO->searchById($id);
-
if (!$feed) {
throw new FreshRSS_Context_Exception('Invalid feed: ' . $id);
}
}
-
self::$current_get['feed'] = $id;
self::$current_get['category'] = $feed->category();
self::$name = $feed->name();
@@ -182,19 +196,37 @@ class FreshRSS_Context {
// We try to find the corresponding category.
self::$current_get['category'] = $id;
if (!isset(self::$categories[$id])) {
- $catDAO = new FreshRSS_CategoryDAO();
+ $catDAO = FreshRSS_Factory::createCategoryDao();
$cat = $catDAO->searchById($id);
-
if (!$cat) {
throw new FreshRSS_Context_Exception('Invalid category: ' . $id);
}
} else {
$cat = self::$categories[$id];
}
-
self::$name = $cat->name();
self::$get_unread = $cat->nbNotRead();
break;
+ case 't':
+ // We try to find the corresponding tag.
+ self::$current_get['tag'] = $id;
+ if (!isset(self::$tags[$id])) {
+ $tagDAO = FreshRSS_Factory::createTagDao();
+ $tag = $tagDAO->searchById($id);
+ if (!$tag) {
+ throw new FreshRSS_Context_Exception('Invalid tag: ' . $id);
+ }
+ } else {
+ $tag = self::$tags[$id];
+ }
+ self::$name = $tag->name();
+ self::$get_unread = $tag->nbUnread();
+ break;
+ case 'T':
+ self::$current_get['tags'] = true;
+ self::$name = _t('index.menu.tags');
+ self::$get_unread = 0;
+ break;
default:
throw new FreshRSS_Context_Exception('Invalid getter: ' . $get);
}
@@ -211,7 +243,7 @@ class FreshRSS_Context {
self::$next_get = $get;
if (empty(self::$categories)) {
- $catDAO = new FreshRSS_CategoryDAO();
+ $catDAO = FreshRSS_Factory::createCategoryDao();
self::$categories = $catDAO->listCategories();
}