diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-05-24 13:06:09 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-05-24 13:06:22 +0200 |
commit | d529559942841d455c917845d1f06c6d98e77cf4 (patch) | |
tree | 4599f5c13399764f8b61c91eb24b67533b1659da /db/itemmapper.php | |
parent | 7ed7b4ff808bfc335c86365e4266432f643be3af (diff) |
dont use table in subselect of mark read query to not fail on mysql, fixes #173
Diffstat (limited to 'db/itemmapper.php')
-rw-r--r-- | db/itemmapper.php | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/db/itemmapper.php b/db/itemmapper.php index 11f917270..99b315111 100644 --- a/db/itemmapper.php +++ b/db/itemmapper.php @@ -117,14 +117,12 @@ class ItemMapper extends Mapper implements IMapper { public function readAll($highestItemId, $userId) { $sql = 'UPDATE `*PREFIX*news_items` ' . 'SET `status` = `status` & ? ' . - 'WHERE `id` IN (' . - 'SELECT `items`.`id` FROM `*PREFIX*news_items` `items` ' . - 'JOIN `*PREFIX*news_feeds` `feeds` ' . - 'ON `feeds`.`id` = `items`.`feed_id` '. - 'AND `items`.`id` <= ? ' . - 'AND `feeds`.`user_id` = ? ' . - ') '; - $params = array(~StatusFlag::UNREAD, $highestItemId, $userId); + 'WHERE `feed_id` IN (' . + 'SELECT `id` FROM `*PREFIX*news_feeds` ' . + 'WHERE `user_id` = ? ' . + ') '. + 'AND `id` <= ?'; + $params = array(~StatusFlag::UNREAD, $userId, $highestItemId); $this->execute($sql, $params); } @@ -132,15 +130,13 @@ class ItemMapper extends Mapper implements IMapper { public function readFolder($folderId, $highestItemId, $userId) { $sql = 'UPDATE `*PREFIX*news_items` ' . 'SET `status` = `status` & ? ' . - 'WHERE `id` IN (' . - 'SELECT `items`.`id` FROM `*PREFIX*news_items` `items` ' . - 'JOIN `*PREFIX*news_feeds` `feeds` ' . - 'ON `feeds`.`id` = `items`.`feed_id` '. - 'AND `feeds`.`folder_id` = ? ' . - 'AND `items`.`id` <= ? ' . - 'AND `feeds`.`user_id` = ? ' . - ') '; - $params = array(~StatusFlag::UNREAD, $folderId, $highestItemId, $userId); + 'WHERE `feed_id` IN (' . + 'SELECT `id` FROM `*PREFIX*news_feeds` ' . + 'WHERE `folder_id` = ? ' . + 'AND `user_id` = ? ' . + ') '. + 'AND `id` <= ?'; + $params = array(~StatusFlag::UNREAD, $folderId, $userId, $highestItemId); $this->execute($sql, $params); } |