diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2012-10-13 04:47:35 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2012-10-13 04:47:35 +0200 |
commit | 4b5f94b435b4756e3aa9e1a3fad3820ce1389ba8 (patch) | |
tree | 88b016195f4dbcf2deb6993d6ec029df7a05db8c /controllers/news.controller.php | |
parent | 523f5304be09223b3b57a9df0452123e90f627e3 (diff) |
selecting folders works
Diffstat (limited to 'controllers/news.controller.php')
-rw-r--r-- | controllers/news.controller.php | 95 |
1 files changed, 92 insertions, 3 deletions
diff --git a/controllers/news.controller.php b/controllers/news.controller.php index 9695e85d1..ba3005b01 100644 --- a/controllers/news.controller.php +++ b/controllers/news.controller.php @@ -61,8 +61,8 @@ class NewsController extends Controller { $itemMapper = new ItemMapper($this->userId); // always show the last viewed feed on reload - $lastViewedFeedId = $this->getUserValue('lastViewedFeed'); - $lastViewedFeedType = $this->getUserValue('lastViewedFeedType'); + $lastViewedFeedId = (int)$this->getUserValue('lastViewedFeed'); + $lastViewedFeedType = (int)$this->getUserValue('lastViewedFeedType'); $showAll = $this->getUserValue('showAll'); if( $lastViewedFeedId === null || $lastViewedFeedType === null) { @@ -84,6 +84,7 @@ class NewsController extends Controller { $feeds = $folderMapper->childrenOfWithFeeds(0); $folderForest = $folderMapper->childrenOf(0); //retrieve all the folders $starredCount = $itemMapper->countEveryItemByStatus(StatusFlag::IMPORTANT); + $items = $this->getItems($lastViewedFeedType, $lastViewedFeedId, $showAll); $params = array( 'allfeeds' => $feeds, @@ -92,12 +93,100 @@ class NewsController extends Controller { 'lastViewedFeedId' => $lastViewedFeedId, 'lastViewedFeedType' => $lastViewedFeedType, 'starredCount' => $starredCount, + 'items' => $items ); - $this->render('main', $params); + $this->render('main', $params, array('items' => true)); } + /** + * 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(); + $itemMapper = new ItemMapper($this->userId); + + // starred or subscriptions + if ($feedType == FeedType::STARRED || $feedId == FeedType::SUBSCRIPTIONS) { + + if($feedType === FeedType::STARRED){ + $statusFlag = StatusFlag::IMPORTANT; + } + + if($feedType === FeedType::SUBSCRIPTIONS){ + $statusFlag = StatusFlag::UNREAD; + } + + $items = $itemMapper->findEveryItemByStatus($status); + + // feed + } elseif ($feedType === FeedType::FEED){ + + if($showAll) { + $items = $itemMapper->findByFeedId($feedId); + } else { + $items = $itemMapper->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, $itemMapper->findByFeedId($feed->getId())); + } else { + $items = array_merge($items, + $itemMapper->findAllStatus($feed->getId(), StatusFlag::UNREAD)); + } + } + } + + return $items; + } + + + /** + * 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 getItemUnreadCount($feedType, $feedId){ + $unreadCount = 0; + $itemMapper = new ItemMapper($this->userId); + + switch ($feedType) { + case FeedType::STARRED: + $unreadCount = $itemMapper->countAllStatus($feedId, StatusFlag::IMPORTANT); + break; + + case FeedType::SUBSCRIPTIONS: + $unreadCount = $itemMapper->countEveryItemByStatus(StatusFlag::UNREAD); + break; + + case FeedType::FOLDER: + $feedMapper = new FeedMapper($this->userId); + $feeds = $feedMapper->findByFolderId($feedId); + foreach($feeds as $feed){ + $unreadCount += $itemMapper->countAllStatus($feed->getId(), StatusFlag::UNREAD); + } + break; + + case FeedType::FEED: + $unreadCount = $itemMapper->countAllStatus($feedId, StatusFlag::UNREAD); + break; + } + + return $unreadCount; + } + public function javascriptTests(){ $this->add3rdPartyScript('jasmine-1.2.0/jasmine.js'); $this->add3rdPartyStyle('jasmine-1.2.0/jasmine.css'); |