diff options
Diffstat (limited to 'db/itemmapper.php')
-rw-r--r-- | db/itemmapper.php | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/db/itemmapper.php b/db/itemmapper.php index 16d717963..6033832a0 100644 --- a/db/itemmapper.php +++ b/db/itemmapper.php @@ -129,15 +129,21 @@ class ItemMapper extends NewsMapper { public function readFeed($feedId, $highestItemId, $time, $userId){ - $sql = 'UPDATE `*PREFIX*news_items` ' . - 'SET `status` = `status` & ? ' . - ', `last_modified` = ? ' . - 'WHERE `feed_id` = ? ' . - 'AND `id` <= ? ' . - 'AND EXISTS (' . - 'SELECT * FROM `*PREFIX*news_feeds` ' . - 'WHERE `user_id` = ? ' . - 'AND `id` = ? ) '; + $sql = 'UPDATE `*PREFIX*news_items` + SET `status` = `status` & ?, + `last_modified` = ? + WHERE `id` IN ( + SELECT `b`.`id` FROM `*PREFIX*news_items` `a`, + `*PREFIX*news_items` `b` + WHERE `a`.`feed_id` = ? + AND `a`.`id` <= ? + AND `a`.`fingerprint` = `b`.`fingerprint` + AND EXISTS ( + SELECT `id` FROM `*PREFIX*news_feeds` + WHERE `user_id` = ? + AND `id` = ? + ) + )'; $params = [~StatusFlag::UNREAD, $time, $feedId, $highestItemId, $userId, $feedId]; |