diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-20 19:05:56 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-20 19:06:17 +0100 |
commit | 8f215ec03ba57e51dbbfef004069fb1e63c8fca1 (patch) | |
tree | 21bc3a85b59d05054f5834714b5ce80ab01745dc | |
parent | eacd2a1755137d3016dad7177c06dc57ca033ccb (diff) |
tests
-rw-r--r-- | db/entity.php~ | 36 | ||||
-rw-r--r-- | db/feedmapper.php | 270 | ||||
-rw-r--r-- | db/item.php~ | 84 | ||||
-rw-r--r-- | db/itemmapper.php~ | 493 | ||||
-rw-r--r-- | db/newsmapper.php | 4 | ||||
-rw-r--r-- | db/newsmapper.php~ | 53 | ||||
-rw-r--r-- | doc/mapper spec.md | 9 | ||||
-rw-r--r-- | doc/mapper spec.md~ | 15 | ||||
-rw-r--r-- | js/Makefile | 1 | ||||
-rw-r--r-- | news.kdev4 | 3 | ||||
-rw-r--r-- | templates/part.subscribelet.php~ | 19 | ||||
-rw-r--r-- | tests/db/FeedMapperTest.php | 102 | ||||
-rw-r--r-- | tests/db/ItemMapperTest.php | 3 | ||||
-rw-r--r-- | tests/db/ItemMapperTest.php~ | 141 | ||||
-rw-r--r-- | tests/db/NewsMapperTest.php~ | 50 |
15 files changed, 137 insertions, 1146 deletions
diff --git a/db/entity.php~ b/db/entity.php~ deleted file mode 100644 index 9adab3b7f..000000000 --- a/db/entity.php~ +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Copyright -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Db; - -abstract class Entity { - - public function fromRow($row){ - foreach($row as $key => $value){ - $this->$key = $value; - } - } - -}
\ No newline at end of file diff --git a/db/feedmapper.php b/db/feedmapper.php index 62a7d41f5..9eb85c3fe 100644 --- a/db/feedmapper.php +++ b/db/feedmapper.php @@ -1,264 +1,48 @@ <?php + /** -* ownCloud - News app +* ownCloud - News * * @author Alessandro Cosentino -* Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com> +* @author Bernhard Posselt +* @copyright 2012 Alessandro Cosentino cosenal@gmail.com +* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. * -* This file is licensed under the Affero General Public License version 3 or later. -* See the COPYING-README file +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OCA\News; - -/** - * This class maps a feed to an entry in the feeds table of the database. - */ -class FeedMapper { - - const tableName = '*PREFIX*news_feeds'; - private $userid; - - public function __construct($userid = null) { - if ($userid !== null) { - $this->userid = $userid; - } - else { - $this->userid = \OCP\USER::getUser(); - } - } - - /** - * @brief - * @param row a row from the feeds table of the database - * @returns an object of the class OCA\News\Feed - */ - public function fromRow($row) { - $url = $row['url']; - $title = $row['title']; - $id = $row['id']; - $folderid = $row['folder_id']; - $feed = new Feed($url, $title, null, $id); - $favicon = $row['favicon_link']; - $feed->setFavicon($favicon); - $feed->setFolderId($folderid); - - return $feed; - } - - /** - * @brief - * @returns - */ - public function findAll() { - $query = 'SELECT * FROM ' . self::tableName . ' WHERE user_id = ?'; - $stmt = \OCP\DB::prepare($query); - $result = $stmt->execute(array($this->userid)); - - $feeds = array(); - while($row = $result->fetchRow()){ - $feed = $this->fromRow($row); - array_push($feeds, $feed); - } - - return $feeds; - } - - /** - * @brief returns the number of feeds that a user has - * @returns the number of feeds that a user has - */ - public function feedCount() { - $query = 'SELECT COUNT(*) AS size FROM ' . self::tableName . ' WHERE user_id = ?'; - $stmt = \OCP\DB::prepare($query); - $result = $stmt->execute(array($this->userid))->fetchRow(); - return $result['size']; - } - - - /** - * @brief Retrieve a feed from the database - * @param id The id of the feed in the database table. - * @returns - */ - public function findById($id) { - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?'); - $result = $stmt->execute(array($id)); - if(!$row = $result->fetchRow()) - return null; - $feed = self::fromRow($row); - return $feed; - } - - /** - * @brief Retrieve all the feeds contained in the folder $folderid - * @param folderid The id of the folder in the database table. - * @returns a list of feeds - */ - public function findByFolderId($folderid) { - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE user_id = ? AND folder_id = ?'); - $result = $stmt->execute(array($this->userid, $folderid)); - $feeds = array(); - while ($row = $result->fetchRow()) { - $feed = self::fromRow($row); - $feeds[] = $feed; - } - return $feeds; - } - - - /** - * @brief Retrieve a feed and all its items from the database - * @param id The id of the feed in the database table. - * @returns an instance of OCA\News\Feed - */ - public function findWithItems($id) { - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?'); - $result = $stmt->execute(array($id)); - $row = $result->fetchRow(); +namespace OCA\News\Db; - $feed = self::fromRow($row); - $itemMapper = new ItemMapper(); - $items = $itemMapper->findById($id); - $feed->setItems($items); - return $feed; - } +class FeedMapper extends NewsMapper { - /** - * @brief Find the id of a feed and all its items from the database - * @param url url of the feed - * @return id of the feed corresponding to the url passed as parameters - * null - if there is no such feed - */ - public function findIdFromUrl($url) { - $url_hash = md5($url); - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE url_hash = ?'); - $result = $stmt->execute(array($url_hash)); - $row = $result->fetchRow(); - $id = null; - if ($row != null) { - $id = $row['id']; - } - return $id; - } - public function mostRecent() { - //FIXME: does something like SELECT TOP 1 * exists in pear/mdb2 ?? - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' ORDER BY lastmodified'); - $result = $stmt->execute(); - $row = $result->fetchRow(); - $id = null; - if ($row != null) { - $id = $row['id']; - } - return $id; + public function __construct(API $api) { + parent::__construct($api, 'news_feeds'); } - /** - * @brief Save the feed and all its items into the database - * @param feed the feed to be saved - * @returns The id of the feed in the database table. - */ - //TODO: handle error case - public function save(Feed $feed, $folderid) { - $url = $feed->getUrl(); - $url_hash = md5($url); - - $title = $feed->getTitle(); - if(empty($title)) { - $l = \OC_L10N::get('news'); - $title = $l->t('no title'); - } - - $favicon = $feed->getFavicon(); - - //FIXME: Detect when feed contains already a database id - $feedid = $this->findIdFromUrl($url); - if ($feedid === null) { - $query = \OCP\DB::prepare(" - INSERT INTO " . self::tableName . - "(url, url_hash, title, favicon_link, folder_id, user_id, added, lastmodified) - VALUES (?, ?, ?, ?, ?, ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()) - "); - - $params=array( - $url, - $url_hash, - $title, - $favicon, - $folderid, - $this->userid - ); - $query->execute($params); - - $feedid = \OCP\DB::insertid(self::tableName); - } - else { - //update the db. it needs to be done, since it might be the first save after a full fetch - $stmt = \OCP\DB::prepare(' - UPDATE ' . self::tableName . - ' SET title = ? , favicon_link = ? , lastmodified = UNIX_TIMESTAMP() , folder_id = ? - WHERE id = ? - '); - - $params=array( - $title, - $favicon, - $folderid, - $feedid - ); - $stmt->execute($params); - } - $feed->setId($feedid); - $itemMapper = new ItemMapper(); + public function find($id, $userId){ + $sql = 'SELECT * FROM `*dbprefix*news_feeds` ' . + 'WHERE `id` = ? ' . + 'AND `user_id` = ?'; - $items = $feed->getItems(); - if ($items !== null) { - foreach($items as $item) { - $itemMapper->save($item, $feedid); - } - } - - return $feedid; - } - - - public function deleteById($id) { - if ($id == null) { - return false; - } - $stmt = \OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE id = ? AND user_id = ?'); - - $result = $stmt->execute(array($id, $this->userid)); - - $itemMapper = new ItemMapper(); - //TODO: handle the value that the execute returns - $itemMapper->deleteAll($id); - - return true; + return $this->findRow($sql, $id, $userId); } - public function delete(Feed $feed) { - $id = $feed->getId(); - return deleteById($id); - } - public function deleteAll($folderid) { - if ($folderid == null) { - return false; - } - $stmt = \OCP\DB::prepare('SELECT id FROM ' . self::tableName . ' WHERE folder_id = ? AND user_id = ?'); - $result = $stmt->execute(array($folderid, $this->userid)); - while ($row = $result->fetchRow()) { - if(!self::deleteById($row['id'])) - return false; - } - - return true; - } -} +}
\ No newline at end of file diff --git a/db/item.php~ b/db/item.php~ deleted file mode 100644 index 8c4ef2b4a..000000000 --- a/db/item.php~ +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Cosentino -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Db; - -use \OCA\AppFramework\Db\Entity; - - -class Item extends Entity { - - public $guidHash; - public $guid; - public $url; - public $title; - public $author; - public $pubDate; - public $body; - public $enclosureMime; - public $enclosureLink; - public $feedId; - public $status; - public $feedTitle; - public $lastModified; - -======= public function setRead() { - $this->markFieldUpdated('status'); - $this->status &= ~StatusFlag::UNREAD; - } - - public function isRead() { - return !(($this->status & StatusFlag::UNREAD) === StatusFlag::UNREAD); - } - - public function setUnread() { - $this->markFieldUpdated('status'); - $this->status |= StatusFlag::UNREAD; - } - - public function isUnread() { - return !$this->isRead(); - } - - public function setStarred() { - $this->markFieldUpdated('status'); - $this->status |= StatusFlag::STARRED; - } - - public function isStarred() { - return ($this->status & StatusFlag::STARRED) === StatusFlag::STARRED; - } - - public function setUnstarred() { - $this->markFieldUpdated('status'); - $this->status &= ~StatusFlag::STARRED; - } - - public function isUnstarred() { - return !$this->isStarred(); - } - -} - diff --git a/db/itemmapper.php~ b/db/itemmapper.php~ deleted file mode 100644 index 0bf9b4d87..000000000 --- a/db/itemmapper.php~ +++ /dev/null @@ -1,493 +0,0 @@ -<?php -/** -* ownCloud - News app -* -* @author Alessandro Cosentino -* Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com> -* -* This file is licensed under the Affero General Public License version 3 or later. -* See the COPYING-README file -* -*/ - -namespace OCA\News\Db; - -use \OCA\AppFramework\Db\DoesNotExistException; -use \OCA\AppFramework\Db\MultipleObjectsReturnedException; -use \OCA\AppFramework\Db\Mapper; -use \OCA\AppFramework\Core\API; - -class ItemMapper extends NewsMapper { - - public function __construct(API $api){ - parent::__construct($api, 'news_items'); - } - - protected function findAllRows($sql, $params) { - $result = $this->execute($sql, $params); - $items = array(); - - while($row = $result->fetchRow()){ - $item = new Item(); - $item->fromRow($row); - - array_push($items, $item); - } - - return $items; - } - - public function findAllFromFeed($feedId, $userId){ - $sql = 'SELECT * FROM `*PREFIX*news_items` ' . - 'WHERE user_id = ? ' . - 'AND feed_id = ?'; - - $params = array($feedId, $userId); - return $this->findAllRows($sql, $params); - - - } - /* - request: get all items of a folder of a user (unread and read) - SELECT * FROM items - JOIN feeds - ON feed.id = feed_id - WHERE user_id = ? AND status = ? AND feed.folder_id = ? - (AND id < ? LIMIT ?) - (AND items.lastmodified >= ?) - */ - - - - public function find($id, $userId){ - $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' . - 'JOIN `*dbprefix*news_feeds` ' . - 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' . - 'WHERE `*dbprefix*news_items`.`id` = ? ' . - 'AND `*dbprefix*news_feeds`.`user_id` = ? '; - - $row = $this->findRow($sql, $id, $userId); - - $item = new Item(); - $item->fromRow($row); - - return $item; - } - - public function findAllFromFolder($status, $feedId, $userId){ - - } - -} - - -/** - * This class maps an item to a row of the items table in the database. - * It follows the Data Mapper pattern (see http://martinfowler.com/eaaCatalog/dataMapper.html). - */ -/* -class ItemMapper { - - const tableName = '*PREFIX*news_items'; - private $userid; - - public function __construct($userid = null) { - if ($userid !== null) { - $this->userid = $userid; - } - else { - $this->userid = \OCP\USER::getUser(); - } - } - - - * @brief - * @param row a row from the items table of the database - * @returns an object of the class OC_News_Item - * - public function fromRow($row) { - $url = $row['url']; - $title = $row['title']; - $guid = $row['guid']; - $body = $row['body']; - $id = $row['id']; - - $item = new Item($url, $title, $guid, $body, $id); - $item->setStatus($row['status']); - $item->setAuthor($row['author']); - $item->setFeedId($row['feed_id']); - $item->setDate(Utils::dbtimestampToUnixtime($row['pub_date'])); - - $feedmapper = new FeedMapper($this->userid); - $feed = $feedmapper->findById($row['feed_id']); - $item->setFeedTitle($feed->getTitle()); - - if($row['enclosure_mime'] !== null && $row['enclosure_link'] !== null) { - $enclosure = new Enclosure(); - $enclosure->setMimeType($row['enclosure_mime']); - $enclosure->setLink($row['enclosure_link']); - $item->setEnclosure($enclosure); - } - - return $item; - } - - /** - * @brief Retrieve all the item corresponding to a feed from the database - * @param feedid The id of the feed in the database table. - * - public function findByFeedId($feedid) { - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE feed_id = ? ORDER BY pub_date DESC'); - $result = $stmt->execute(array($feedid)); - - $items = array(); - while ($row = $result->fetchRow()) { - $item = $this->fromRow($row); - $items[] = $item; - } - - return $items; - } - - - /** - * @brief Retrieve all the items corresponding to a feed from the database with a particular status - * @param feedid The id of the feed in the database table. - * @param status one of the constants defined in OCA\News\StatusFlag - * - public function findAllStatus($feedid, $status) { - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' - WHERE feed_id = ? - AND ((status & ?) > 0) - ORDER BY pub_date DESC'); - $result = $stmt->execute(array($feedid, $status)); - - $items = array(); - while ($row = $result->fetchRow()) { - $item = $this->fromRow($row); - $items[] = $item; - } - - return $items; - } - - /* - * @brief Retrieve all the items from the database with a particular status - * @param status one of the constants defined in OCA\News\StatusFlag - * - public function findEveryItemByStatus($status) { - $stmt = \OCP\DB::prepare('SELECT ' . self::tableName . '.* FROM ' . self::tableName . ' - JOIN '. FeedMapper::tableName .' ON - '. FeedMapper::tableName .'.id = ' . self::tableName . '.feed_id - WHERE '. FeedMapper::tableName .'.user_id = ? - AND ((' . self::tableName . '.status & ?) > 0) - ORDER BY ' . self::tableName . '.pub_date DESC'); - $result = $stmt->execute(array($this->userid, $status)); - - $items = array(); - while ($row = $result->fetchRow()) { - $item = $this->fromRow($row); - $items[] = $item; - } - - return $items; - } - - public function countAllStatus($feedid, $status) { - $stmt = \OCP\DB::prepare('SELECT COUNT(*) as size FROM ' . self::tableName . ' - WHERE feed_id = ? - AND ((status & ?) > 0)'); - $result=$stmt->execute(array($feedid, $status))->fetchRow(); - return $result['size']; - } - - /** - * @brief Count all the items from the database with a particular status - * @param status one of the constants defined in OCA\News\StatusFlag - * - public function countEveryItemByStatus($status) { - $stmt = \OCP\DB::prepare('SELECT COUNT(*) as size FROM ' . self::tableName . ' - JOIN '. FeedMapper::tableName .' ON - '. FeedMapper::tableName .'.id = ' . self::tableName . '.feed_id - WHERE '. FeedMapper::tableName .'.user_id = ? - AND ((' . self::tableName . '.status & ?) > 0)'); - $result = $stmt->execute(array($this->userid, $status))->fetchRow();; - - return $result['size']; - } - - public function findIdFromGuid($guid_hash, $guid, $feedid) { - $stmt = \OCP\DB::prepare(' - SELECT * FROM ' . self::tableName . ' - WHERE guid_hash = ? - AND feed_id = ? - '); - $result = $stmt->execute(array($guid_hash, $feedid)); - //TODO: if there is more than one row, falling back to comparing $guid - $row = $result->fetchRow(); - $id = null; - if ($row != null) { - $id = $row['id']; - } - return $id; - } - - - /** - * @brief marks all items read - * @param int $feedId: the id of the feed - * @param int $mostRecentItemId: every item with the same or lower id will - * be marked read - * - public function markAllRead($feedId, $mostRecentItemId){ - if($mostRecentItemId === 0){ - $stmt = \OCP\DB::prepare(' - UPDATE ' . self::tableName . - ' SET status = status & ? - WHERE - feed_id = ?'); - - $params = array( - ~StatusFlag::UNREAD, - $feedId - ); - } else { - $stmt = \OCP\DB::prepare(' - UPDATE ' . self::tableName . - ' SET status = status & ? - WHERE - feed_id = ? - AND - id <= ?'); - - $params = array( - ~StatusFlag::UNREAD, - $feedId, - $mostRecentItemId - ); - } - - $stmt->execute($params); - } - - - /** - * @brief Update the item after its status has changed - * @returns The item whose status has changed. - * - public function update(Item $item) { - - $itemid = $item->getId(); - $status = $item->getStatus(); - - $stmt = \OCP\DB::prepare(' - UPDATE ' . self::tableName . - ' SET status = ? - WHERE id = ? - '); - - $params=array( - $status, - $itemid - ); - - $result = $stmt->execute($params); - - - return true; - } - - /** - * @brief Save the feed and all its items into the database - * @returns The id of the feed in the database table. - * - public function save(Item $item, $feedid) { - $guid = $item->getGuid(); - $guid_hash = md5($guid); - - $status = $item->getStatus(); - - $itemid = $this->findIdFromGuid($guid_hash, $guid, $feedid); - - if ($itemid == null) { - $title = $item->getTitle(); - $body = $item->getBody(); - $author = $item->getAuthor(); - $enclosure_mime = null; - $enclosure_link = null; - - if($enclosure = $item->getEnclosure()) { - $enclosure_mime = $enclosure->getMimeType(); - $enclosure_link = $enclosure->getLink(); - } - - $stmt = \OCP\DB::prepare(' - INSERT INTO ' . self::tableName . - '(url, title, body, author, guid, guid_hash, pub_date, enclosure_mime, enclosure_link, feed_id, status) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - '); - - if(empty($title)) { - $l = \OC_L10N::get('news'); - $title = $l->t('no title'); - } - - if(empty($body)) { - $l = \OC_L10N::get('news'); - $body = $l->t('no body'); - } - - $pub_date = Utils::unixtimeToDbtimestamp($item->getDate()); - - $params=array( - $item->getUrl(), - $title, - $body, - $author, - $guid, - $guid_hash, - $pub_date, - $enclosure_mime, - $enclosure_link, - $feedid, - $status - ); - - $stmt->execute($params); - - $itemid = \OCP\DB::insertid(self::tableName); - } - else { - $this->update($item); - } - $item->setId($itemid); - return $itemid; - } - - /** - * @brief Retrieve an item from the database - * @param id The id of the item in the database table. - * - public function findById($id) { - - $stmt = \OCP\DB::prepare('SELECT ' . self::tableName . '.id AS id, ' . self::tableName . - '.url AS url, ' . self::tableName . '.title AS title, guid, body, status, author, feed_id, pub_date, enclosure_mime, enclosure_link' . - ' FROM ' . self::tableName . ' JOIN ' . FeedMapper::tableName . - ' ON ' . self::tableName . '.feed_id = ' . FeedMapper::tableName . '.id WHERE (' . self::tableName . - '.id = ? AND ' . FeedMapper::tableName . '.user_id = ? )'); - $result = $stmt->execute(array($id, $this->userid)); - - /* - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?'); - $result = $stmt->execute(array($id)); - * - $row = $result->fetchRow(); - - $item = $this->fromRow($row); - - return $item; - - } - - - /** - * @brief Permanently delete all items belonging to a feed from the database - * @param feedid The id of the feed that we wish to delete - * @return - * - public function deleteAll($feedid) { - if ($feedid == null) { - return false; - } - $stmt = \OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE feed_id = ?'); - - $result = $stmt->execute(array($feedid)); - - return $result; - } - - /** - * Returns the unread count - * @param $feedType the type of the feed - * @param $feedId the id of the feed or folder - * @return the unread count - * - public function getUnreadCount($feedType, $feedId){ - $unreadCount = 0; - - switch ($feedType) { - case FeedType::STARRED: - $unreadCount = $this->countEveryItemByStatus(StatusFlag::IMPORTANT); - break; - - case FeedType::SUBSCRIPTIONS: - $unreadCount = $this->countEveryItemByStatus(StatusFlag::UNREAD); - break; - - case FeedType::FOLDER: - $feedMapper = new FeedMapper($this->userid); - $feeds = $feedMapper->findByFolderId($feedId); - foreach($feeds as $feed){ - $unreadCount += $this->countAllStatus($feed->getId(), StatusFlag::UNREAD); - } - break; - - case FeedType::FEED: - $unreadCount = $this->countAllStatus($feedId, StatusFlag::UNREAD); - break; - } - - return (int)$unreadCount; - } - - - /** - * Returns all items - * @param $feedType the type of the feed - * @param $feedId the id of the feed or folder - * @param $showAll if true, it will also include unread items - * @return an array with all items - * - public function getItems($feedType, $feedId, $showAll){ - $items = array(); - - // starred or subscriptions - if ($feedType === FeedType::STARRED || $feedType === FeedType::SUBSCRIPTIONS) { - - if($feedType === FeedType::STARRED){ - $statusFlag = StatusFlag::IMPORTANT; - } - - if($feedType === FeedType::SUBSCRIPTIONS){ - $statusFlag = StatusFlag::UNREAD; - } - - $items = $this->findEveryItemByStatus($statusFlag); - - // feed - } elseif ($feedType === FeedType::FEED){ - - if($showAll) { - $items = $this->findByFeedId($feedId); - } else { - $items = $this->findAllStatus($feedId, StatusFlag::UNREAD); - } - - // folder - } elseif ($feedType === FeedType::FOLDER){ - $feedMapper = new FeedMapper($this->userid); - $feeds = $feedMapper->findByFolderId($feedId); - - foreach($feeds as $feed){ - if($showAll) { - $items = array_merge($items, $this->findByFeedId($feed->getId())); - } else { - $items = array_merge($items, - $this->findAllStatus($feed->getId(), StatusFlag::UNREAD)); - } - } - } - return $items; - } -} -*/
\ No newline at end of file diff --git a/db/newsmapper.php b/db/newsmapper.php index da928bd67..bc2cf5679 100644 --- a/db/newsmapper.php +++ b/db/newsmapper.php @@ -32,10 +32,12 @@ use \OCA\AppFramework\Core\API; abstract class NewsMapper extends Mapper { + public function __construct(API $api, $tableName) { parent::__construct($api, $tableName); } + protected function findRow($sql, $id, $userId){ $result = $this->execute($sql, array($id, $userId)); @@ -50,4 +52,6 @@ abstract class NewsMapper extends Mapper { return $row; } } + + }
\ No newline at end of file |