diff --git a/controllers/history.php b/controllers/history.php index 98e1957..ecf473c 100644 --- a/controllers/history.php +++ b/controllers/history.php @@ -4,15 +4,20 @@ 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), @@ -21,20 +26,23 @@ Router\get_action('history', function() { 'order' => '', 'direction' => '', 'display_mode' => Model\Config\get('items_display_mode'), + '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') @@ -43,7 +51,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..91e887e 100644 --- a/models/item.php +++ b/models/item.php @@ -376,6 +376,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/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 b8cbebe..1c4d886 100644 --- a/templates/history.php +++ b/templates/history.php @@ -4,8 +4,20 @@ @@ -26,7 +38,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)) ?>