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 | |
parent | 523f5304be09223b3b57a9df0452123e90f627e3 (diff) |
selecting folders works
Diffstat (limited to 'controllers')
-rw-r--r-- | controllers/controller.php | 15 | ||||
-rw-r--r-- | controllers/news.controller.php | 95 |
2 files changed, 104 insertions, 6 deletions
diff --git a/controllers/controller.php b/controllers/controller.php index 06234e8f4..82f60df76 100644 --- a/controllers/controller.php +++ b/controllers/controller.php @@ -16,11 +16,12 @@ class Controller { protected $userId; protected $trans; - + public function __construct(){ $this->userId = \OCP\USER::getUser(); $this->trans = \OC_L10N::get('news'); + $this->safeParams = array(); } @@ -68,10 +69,12 @@ class Controller { * The following values are always assigned: userId, trans * @param $arguments an array with arguments in $templateVar => $content * @param $template the name of the template + * @param $safeParams template parameters which should not be escaped * @param $fullPage if true, it will render a full page, otherwise only a part * defaults to true */ - protected function render($template, $arguments=array(), $fullPage=true){ + protected function render($template, $arguments=array(), $safeParams=array(), + $fullPage=true){ if($fullPage){ $template = new \OCP\Template('news', $template, 'user'); @@ -80,7 +83,12 @@ class Controller { } foreach($arguments as $key => $value){ - $template->assign($key, $value); + if(array_key_exists($key, $safeParams)) { + $template->assign($key, $value, false); + } else { + $template->assign($key, $value, false); + } + } $template->assign('userId', $this->userId); @@ -88,6 +96,7 @@ class Controller { $template->printPage(); } + } ?>
\ No newline at end of file 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'); |