summaryrefslogtreecommitdiffstats
path: root/db
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-16 17:16:42 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-16 17:16:42 +0200
commit42ca456a059b7bb228a37a60cd82f141fe927e54 (patch)
tree68073a46c82031050ffb46891a96680c3e20aeb4 /db
parent43ca6673b479695a84c77bc48bd27655ed6c93b9 (diff)
fix bug that prevented marking read if the highestitemid was 0
Diffstat (limited to 'db')
-rw-r--r--db/itemmapper.php16
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);
}