diff options
author | Bernhard Posselt <bernhard@posselt.at> | 2015-11-28 14:19:51 +0100 |
---|---|---|
committer | Bernhard Posselt <bernhard@posselt.at> | 2015-11-28 14:19:51 +0100 |
commit | 30e66657b8709e95240da4f252a3fce6797acfda (patch) | |
tree | 5fad4b3ed44675e72d26be22d4b914bf99f961b2 /db | |
parent | 911af7d64402f86383b13eac832c8bd9a6a0556e (diff) |
also read duplicate feed items read
Diffstat (limited to 'db')
-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]; |