diff --git a/controllers/bookmark.php b/controllers/bookmark.php index f63d7cc..50558df 100644 --- a/controllers/bookmark.php +++ b/controllers/bookmark.php @@ -37,8 +37,17 @@ Router\get_action('bookmark', function() { Router\get_action('bookmarks', function() { $offset = Request\int_param('offset', 0); - $nb_items = Model\Item\count_bookmarks(); - $items = Model\Item\get_bookmarks($offset, Model\Config\get('items_per_page')); + $group_id = Request\int_param('group_id', null); + $feed_ids = array(); + if (! is_null($group_id)) { + $feed_ids = Model\Group\get_feeds_by_group($group_id); + } + $nb_items = Model\Item\count_bookmarks($feed_ids); + $items = Model\Item\get_bookmarks( + $offset, + Model\Config\get('items_per_page'), + $feed_ids + ); Response\html(Template\layout('bookmarks', array( 'favicons' => Model\Favicon\get_item_favicons($items), @@ -47,6 +56,7 @@ Router\get_action('bookmarks', function() { 'direction' => '', 'display_mode' => Model\Config\get('items_display_mode'), 'item_title_link' => Model\Config\get('item_title_link'), + 'group_id' => $group_id, 'items' => $items, 'nb_items' => $nb_items, 'offset' => $offset, @@ -54,6 +64,7 @@ Router\get_action('bookmarks', function() { 'nothing_to_read' => Request\int_param('nothing_to_read'), 'nb_unread_items' => Model\Item\count_by_status('unread'), 'menu' => 'bookmarks', + 'groups' => Model\Group\get_all(), 'title' => t('Bookmarks').' ('.$nb_items.')' ))); }); diff --git a/controllers/history.php b/controllers/history.php index 0d91d96..43ce8d1 100644 --- a/controllers/history.php +++ b/controllers/history.php @@ -4,16 +4,23 @@ Router\get_action('history', function() { $offset = Request\int_param('offset', 0); - $nb_items = Model\Item\count_by_status('read'); + $group_id = Request\int_param('group_id', null); + $feed_ids = array(); + if (! is_null($group_id)) { + $feed_ids = Model\Group\get_feeds_by_group($group_id); + } + $items = Model\Item\get_all_by_status( 'read', - array(), + $feed_ids, $offset, Model\Config\get('items_per_page'), 'updated', Model\Config\get('items_sorting_direction') ); + $nb_items = Model\Item\count_by_status('read', $feed_ids); + Response\html(Template\layout('history', array( 'favicons' => Model\Favicon\get_item_favicons($items), 'original_marks_read' => Model\Config\get('original_marks_read'), @@ -22,20 +29,23 @@ Router\get_action('history', function() { 'direction' => '', 'display_mode' => Model\Config\get('items_display_mode'), 'item_title_link' => Model\Config\get('item_title_link'), + 'group_id' => $group_id, 'nb_items' => $nb_items, 'nb_unread_items' => Model\Item\count_by_status('unread'), 'offset' => $offset, 'items_per_page' => Model\Config\get('items_per_page'), 'nothing_to_read' => Request\int_param('nothing_to_read'), 'menu' => 'history', + 'groups' => Model\Group\get_all(), 'title' => t('History').' ('.$nb_items.')' ))); }); // Confirmation box to flush history Router\get_action('confirm-flush-history', function() { - + $group_id = Request\int_param('group_id', null); Response\html(Template\layout('confirm_flush_items', array( + 'group_id' => $group_id, 'nb_unread_items' => Model\Item\count_by_status('unread'), 'menu' => 'history', 'title' => t('Confirmation') @@ -44,7 +54,11 @@ Router\get_action('confirm-flush-history', function() { // Flush history Router\get_action('flush-history', function() { - - Model\Item\mark_all_as_removed(); + $group_id = Request\int_param('group_id', null); + if (!is_null($group_id)) { + Model\Item\mark_group_as_removed($group_id); + } else { + Model\Item\mark_all_as_removed(); + } Response\redirect('?action=history'); }); diff --git a/models/item.php b/models/item.php index 5ab8736..d9e65ca 100644 --- a/models/item.php +++ b/models/item.php @@ -131,17 +131,18 @@ function count_by_status($status, $feed_ids = array()) } // Get the number of bookmarks -function count_bookmarks() +function count_bookmarks($feed_ids = array()) { return Database::getInstance('db') ->table('items') ->eq('bookmark', 1) + ->in('feed_id', $feed_ids) ->in('status', array('read', 'unread')) ->count(); } // Get all bookmarks -function get_bookmarks($offset = null, $limit = null) +function get_bookmarks($offset = null, $limit = null, $feed_ids = array()) { return Database::getInstance('db') ->table('items') @@ -163,6 +164,7 @@ function get_bookmarks($offset = null, $limit = null) 'feeds.rtl' ) ->join('feeds', 'id', 'feed_id') + ->in('feed_id', $feed_ids) ->in('status', array('read', 'unread')) ->eq('bookmark', 1) ->orderBy('updated', Config\get('items_sorting_direction')) @@ -376,6 +378,19 @@ function mark_group_as_read($group_id) ->update(array('status' => 'read')); } +// Mark all items of a group as removed +function mark_group_as_removed($group_id) +{ + $feed_ids = Group\get_feeds_by_group($group_id); + + return Database::getInstance('db') + ->table('items') + ->eq('status', 'read') + ->eq('bookmark', 0) + ->in('feed_id', $feed_ids) + ->save(array('status' => 'removed', 'content' => '')); +} + // Mark all read items to removed after X days function autoflush_read() { diff --git a/templates/bookmarks.php b/templates/bookmarks.php index 66c1fed..364e919 100644 --- a/templates/bookmarks.php +++ b/templates/bookmarks.php @@ -1,9 +1,21 @@ - +

@@ -24,7 +36,7 @@ )) ?> - $menu, 'nb_items' => $nb_items, 'items_per_page' => $items_per_page, 'offset' => $offset, 'order' => $order, 'direction' => $direction)) ?> + $menu, 'nb_items' => $nb_items, 'items_per_page' => $items_per_page, 'offset' => $offset, 'order' => $order, 'direction' => $direction, 'group_id' => $group_id)) ?> diff --git a/templates/confirm_flush_items.php b/templates/confirm_flush_items.php index 8a64d60..c554bba 100644 --- a/templates/confirm_flush_items.php +++ b/templates/confirm_flush_items.php @@ -5,6 +5,6 @@

- - + +
\ No newline at end of file diff --git a/templates/history.php b/templates/history.php index f71dd53..1e7a1e9 100644 --- a/templates/history.php +++ b/templates/history.php @@ -4,8 +4,20 @@ @@ -27,7 +39,7 @@ )) ?> - $menu, 'nb_items' => $nb_items, 'items_per_page' => $items_per_page, 'offset' => $offset, 'order' => $order, 'direction' => $direction)) ?> + $menu, 'nb_items' => $nb_items, 'items_per_page' => $items_per_page, 'offset' => $offset, 'order' => $order, 'direction' => $direction, 'group_id' => $group_id)) ?> diff --git a/templates/paging.php b/templates/paging.php index 2c56b3a..40634d9 100644 --- a/templates/paging.php +++ b/templates/paging.php @@ -1,6 +1,6 @@
0): ?> - « + «   $items_per_page): ?>