diff --git a/app/models/item.php b/app/models/item.php index 936e35a..61d88af 100644 --- a/app/models/item.php +++ b/app/models/item.php @@ -24,20 +24,25 @@ function change_item_status($user_id, $item_id, $status) ->table(TABLE) ->eq('user_id', $user_id) ->eq('id', $item_id) - ->save(array('status' => $status)); + ->update(array('status' => $status)); } -function change_items_status($user_id, $current_status, $new_status) +function change_items_status($user_id, $current_status, $new_status, $before = null) { if (! in_array($new_status, array(STATUS_READ, STATUS_UNREAD, STATUS_REMOVED))) { return false; } - return Database::getInstance('db') + $query = Database::getInstance('db') ->table(TABLE) ->eq('user_id', $user_id) - ->eq('status', $current_status) - ->save(array('status' => $new_status)); + ->eq('status', $current_status); + + if ($before !== null) { + $query->lte('updated', $before); + } + + return $query->update(array('status' => $new_status)); } function change_item_ids_status($user_id, array $item_ids, $status) @@ -54,7 +59,7 @@ function change_item_ids_status($user_id, array $item_ids, $status) ->table(TABLE) ->eq('user_id', $user_id) ->in('id', $item_ids) - ->save(array('status' => $status)); + ->update(array('status' => $status)); } function update_feed_items($user_id, $feed_id, array $items, $rtl = false) diff --git a/fever/index.php b/fever/index.php index f927159..f553f0c 100644 --- a/fever/index.php +++ b/fever/index.php @@ -243,13 +243,22 @@ route('write_groups', function () { list($user, $authenticated, $response) = auth(); if ($authenticated && ctype_digit($_POST['id']) && ctype_digit($_POST['before'])) { - Model\ItemGroup\change_items_status( - $user['id'], - $_POST['id'], - Model\Item\STATUS_UNREAD, - Model\Item\STATUS_READ, - $_POST['before'] - ); + if ($_POST['id'] == 0) { + Model\Item\change_items_status( + $user['id'], + Model\Item\STATUS_UNREAD, + Model\Item\STATUS_READ, + $_POST['before'] + ); + } else { + Model\ItemGroup\change_items_status( + $user['id'], + $_POST['id'], + Model\Item\STATUS_UNREAD, + Model\Item\STATUS_READ, + $_POST['before'] + ); + } } response($response);