|
|
@@ -252,37 +252,29 @@ class FreshRSS_Context {
|
|
|
$found_current_get = false;
|
|
|
switch ($get[0]) {
|
|
|
case 'f':
|
|
|
- // We search the next feed with at least one unread article in
|
|
|
- // same category as the currend feed.
|
|
|
+ // We search the next unread feed with the following priorities: next in same category, or previous in same category, or next, or previous.
|
|
|
foreach (self::$categories as $cat) {
|
|
|
- if ($cat->id() != self::$current_get['category']) {
|
|
|
- // We look into the category of the current feed!
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
+ $sameCat = false;
|
|
|
foreach ($cat->feeds() as $feed) {
|
|
|
- if ($feed->id() == self::$current_get['feed']) {
|
|
|
- // Here is our current feed! Fine, the next one will
|
|
|
- // be a potential candidate.
|
|
|
+ if ($found_current_get) {
|
|
|
+ if ($feed->nbNotRead() > 0) {
|
|
|
+ $another_unread_id = $feed->id();
|
|
|
+ break 2;
|
|
|
+ }
|
|
|
+ } elseif ($feed->id() == self::$current_get['feed']) {
|
|
|
$found_current_get = true;
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if ($feed->nbNotRead() > 0) {
|
|
|
+ } elseif ($feed->nbNotRead() > 0) {
|
|
|
$another_unread_id = $feed->id();
|
|
|
- if ($found_current_get) {
|
|
|
- // We have found our current feed and now we
|
|
|
- // have an feed with unread articles. Leave the
|
|
|
- // loop!
|
|
|
- break;
|
|
|
- }
|
|
|
+ $sameCat = true;
|
|
|
}
|
|
|
}
|
|
|
- break;
|
|
|
+ if ($found_current_get && $sameCat) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // If no feed have been found, next_get is the current category.
|
|
|
- self::$next_get = empty($another_unread_id) ? 'c_' . self::$current_get['category'] : 'f_' . $another_unread_id;
|
|
|
+ // If there is no more unread feed, show main stream
|
|
|
+ self::$next_get = $another_unread_id == '' ? 'a' : 'f_' . $another_unread_id;
|
|
|
break;
|
|
|
case 'c':
|
|
|
// We search the next category with at least one unread article.
|
|
|
@@ -304,8 +296,8 @@ class FreshRSS_Context {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // No unread category? The main stream will be our destination!
|
|
|
- self::$next_get = empty($another_unread_id) ? 'a' : 'c_' . $another_unread_id;
|
|
|
+ // If there is no more unread category, show main stream
|
|
|
+ self::$next_get = $another_unread_id == '' ? 'a' : 'c_' . $another_unread_id;
|
|
|
break;
|
|
|
}
|
|
|
}
|