From 42ca456a059b7bb228a37a60cd82f141fe927e54 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Tue, 16 Apr 2013 17:16:42 +0200 Subject: fix bug that prevented marking read if the highestitemid was 0 --- db/itemmapper.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'db') 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); } -- cgit v1.2.3