diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-16 17:16:42 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-16 17:16:42 +0200 |
commit | 42ca456a059b7bb228a37a60cd82f141fe927e54 (patch) | |
tree | 68073a46c82031050ffb46891a96680c3e20aeb4 /db | |
parent | 43ca6673b479695a84c77bc48bd27655ed6c93b9 (diff) |
fix bug that prevented marking read if the highestitemid was 0
Diffstat (limited to 'db')
-rw-r--r-- | db/itemmapper.php | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/db/itemmapper.php b/db/itemmapper.php index bffab6348..326d58a2d 100644 --- a/db/itemmapper.php +++ b/db/itemmapper.php @@ -115,16 +115,26 @@ class ItemMapper extends Mapper implements IMapper { public function readFeed($feedId, $highestItemId, $userId){ + // its 0 when the feed was not loaded or the loaded feed + // does not contain any items + if($highestItemId !== 0){ + $params = array(~StatusFlag::UNREAD, $feedId, $highestItemId, $userId, + $feedId); + $lowerSql = 'AND `id` <= ? '; + } else { + $lowerSql = ''; + $params = array(~StatusFlag::UNREAD, $feedId, $userId, $feedId); + } + $sql = 'UPDATE `*PREFIX*news_items` ' . 'SET `status` = `status` & ? ' . 'WHERE `feed_id` = ? ' . - 'AND `id` <= ? ' . + $lowerSql . 'AND EXISTS (' . 'SELECT * FROM `*PREFIX*news_feeds` ' . 'WHERE `user_id` = ? ' . 'AND `id` = ? ) '; - $params = array(~StatusFlag::UNREAD, $feedId, $highestItemId, $userId, - $feedId); + $this->execute($sql, $params); } |