From c8d3f8fb4681f6993f1c9389e507df0724f56579 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Tue, 26 Mar 2013 18:04:02 +0100 Subject: added casting information for data objects --- db/feedmapper.php | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) (limited to 'db/feedmapper.php') diff --git a/db/feedmapper.php b/db/feedmapper.php index 05fa729b4..d84cebad1 100644 --- a/db/feedmapper.php +++ b/db/feedmapper.php @@ -39,11 +39,17 @@ class FeedMapper extends Mapper implements IMapper { public function find($id, $userId){ - $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' . - 'WHERE `id` = ? ' . - 'AND `user_id` = ?'; + $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' . + 'FROM `*PREFIX*news_feeds` `feeds` ' . + 'LEFT JOIN `*PREFIX*news_items` `items` ' . + 'ON `feeds`.`id` = `items`.`feed_id` ' . + 'AND (`items`.`status` & ?) > 0 ' . + 'WHERE `feeds`.`id` = ? ' . + 'AND `feeds`.`user_id` = ? ' . + 'GROUP BY `feeds`.`id`'; + $params = array(StatusFlag::UNREAD, $id, $userId); - $row = $this->findOneQuery($sql, array($id, $userId)); + $row = $this->findOneQuery($sql, $params); $feed = new Feed(); $feed->fromRow($row); @@ -68,12 +74,12 @@ class FeedMapper extends Mapper implements IMapper { public function findAllFromUser($userId){ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' . 'FROM `*PREFIX*news_feeds` `feeds` ' . - 'LEFT OUTER JOIN `*PREFIX*news_items` `items` ' . + 'LEFT JOIN `*PREFIX*news_items` `items` ' . 'ON `feeds`.`id` = `items`.`feed_id` ' . - 'WHERE (`items`.`status` & ?) > 0 ' . - 'AND `feeds`.`user_id` = ? ' . - 'GROUP BY `items`.`feed_id`'; - $params = array($userId); + 'AND (`items`.`status` & ?) > 0 ' . + 'WHERE `feeds`.`user_id` = ? ' . + 'GROUP BY `feeds`.`id`'; + $params = array(StatusFlag::UNREAD, $userId); return $this->findAllRows($sql, $params); } @@ -87,10 +93,15 @@ class FeedMapper extends Mapper implements IMapper { public function findByUrlHash($hash, $userId){ - $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' . - 'WHERE `url_hash` = ? ' . - 'AND `user_id` = ?'; - $params = array($hash, $userId); + $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' . + 'FROM `*PREFIX*news_feeds` `feeds` ' . + 'LEFT JOIN `*PREFIX*news_items` `items` ' . + 'ON `feeds`.`id` = `items`.`feed_id` ' . + 'AND (`items`.`status` & ?) > 0 ' . + 'WHERE `feeds`.`url_hash` = ? ' . + 'AND `feeds`.`user_id` = ? ' . + 'GROUP BY `feeds`.`id`'; + $params = array(StatusFlag::UNREAD, $hash, $userId); $row = $this->findOneQuery($sql, $params); $feed = new Feed(); -- cgit v1.2.3