summaryrefslogtreecommitdiffstats
path: root/db
diff options
context:
space:
mode:
authorBernhard Posselt <bernhard@posselt.at>2015-11-28 14:19:51 +0100
committerBernhard Posselt <bernhard@posselt.at>2015-11-28 14:19:51 +0100
commit30e66657b8709e95240da4f252a3fce6797acfda (patch)
tree5fad4b3ed44675e72d26be22d4b914bf99f961b2 /db
parent911af7d64402f86383b13eac832c8bd9a6a0556e (diff)
also read duplicate feed items read
Diffstat (limited to 'db')
-rw-r--r--db/itemmapper.php24
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];