diff options
author | Alessandro Cosentino <cosenal@gmail.com> | 2013-03-02 19:50:33 +0100 |
---|---|---|
committer | Alessandro Cosentino <cosenal@gmail.com> | 2013-03-02 19:50:33 +0100 |
commit | 4902253e9c8aac706091c6337391153b02923689 (patch) | |
tree | 3012e106d477a83e718ea42741c445895922df8e | |
parent | 165540d34652fb895cb7f29c818fb3427bfba8c4 (diff) |
prototype for business layer for feed
-rw-r--r-- | appinfo/bootstrap.php | 11 | ||||
-rw-r--r-- | appinfo/routes.php | 12 | ||||
-rw-r--r-- | controller/feedcontroller.php | 55 | ||||
-rw-r--r-- | controller/foldercontroller.php | 2 | ||||
-rw-r--r-- | db/feed.php | 10 | ||||
-rw-r--r-- | db/folder.php | 5 | ||||
-rw-r--r-- | db/foldermapper.php | 2 | ||||
-rw-r--r-- | external_api/feed.php | 19 | ||||
-rw-r--r-- | external_api/folder.php | 9 | ||||
-rw-r--r-- | feed.bl.php | 14 | ||||
-rw-r--r-- | folder.bl.php | 4 |
11 files changed, 128 insertions, 15 deletions
diff --git a/appinfo/bootstrap.php b/appinfo/bootstrap.php index 4bebf20f8..e9628979b 100644 --- a/appinfo/bootstrap.php +++ b/appinfo/bootstrap.php @@ -47,8 +47,10 @@ namespace OCA\News; \OC::$CLASSPATH['OCA\News\NewsAjaxController'] = 'apps/news/controller/news.ajax.controller.php'; \OC::$CLASSPATH['OCA\News\FolderBL'] = 'apps/news/folder.bl.php'; +\OC::$CLASSPATH['OCA\News\FeedBL'] = 'apps/news/feed.bl.php'; \OC::$CLASSPATH['OCA\News\API_Folder'] = 'apps/news/external_api/folder.php'; +\OC::$CLASSPATH['OCA\News\API_Feed'] = 'apps/news/external_api/feed.php'; /** @@ -113,9 +115,14 @@ function createDIContainer(){ /** * BUSINESS LAYER OBJECTS */ - $newsContainer['FolderBL'] = function($c){ + $newsContainer['FolderBL'] = $newsContainer->share(function($c){ return new FolderBL($c['FolderMapper']); - }; + }); + + $newsContainer['FeedBL'] = $newsContainer->share(function($c){ + return new FeedBL($c['FeedMapper']); + }); + return $newsContainer; }
\ No newline at end of file diff --git a/appinfo/routes.php b/appinfo/routes.php index 9d232819a..57b8cb02e 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -203,12 +203,12 @@ $this->create('news_ajax_importOPML', '/import')->action( /** - * External API for folders + * External API */ \OCP\API::register( - 'get', - '/news/folders', - array('OCA\News\API_Folder ', 'getAll'), - 'news', - \OC_API::USER_AUTH + 'get', '/news/feeds', array('OCA\News\API_Feed', 'getAll'), 'news', \OC_API::USER_AUTH ); + +\OCP\API::register( + 'get', '/news/folders', array('OCA\News\API_Folder', 'getAll'), 'news', \OC_API::USER_AUTH +);
\ No newline at end of file diff --git a/controller/feedcontroller.php b/controller/feedcontroller.php new file mode 100644 index 000000000..4357d7682 --- /dev/null +++ b/controller/feedcontroller.php @@ -0,0 +1,55 @@ +<?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\Controller; + +use \OCA\AppFramework\Controller\Controller; +use \OCA\AppFramework\Core\API; +use \OCA\AppFramework\Http\Request; +use \OCA\AppFramework\Db\DoesNotExistException; +use \OCA\AppFramework\Db\MultipleObjectsReturnedException; + + +class FeedController extends Controller { + + + public function __construct(API $api, Request $request, $feedMapper){ + parent::__construct($api, $request); + $this->feedMapper = $feedMapper; + } + + + /** + * @IsAdminExemption + * @IsSubAdminExemption + * @Ajax + * + * Returns all feeds + */ + public function getAll(){ + $feeds = $this->feedMapper->findAll(); + return $this->renderJSON($feeds); + } +}
\ No newline at end of file diff --git a/controller/foldercontroller.php b/controller/foldercontroller.php index dcd6f9ca5..0f3ec83a2 100644 --- a/controller/foldercontroller.php +++ b/controller/foldercontroller.php @@ -3,7 +3,7 @@ /** * ownCloud - News * -* @author Alessandro Copyright +* @author Alessandro Cosentino * @author Bernhard Posselt * @copyright 2012 Alessandro Cosentino cosenal@gmail.com * @copyright 2012 Bernhard Posselt nukeawhale@gmail.com diff --git a/db/feed.php b/db/feed.php index 0f2e861b7..48f379a1b 100644 --- a/db/feed.php +++ b/db/feed.php @@ -71,5 +71,15 @@ class Feed extends Collection { public function getFolderId(){ return $this->folderId; } + + public function jsonSerialize(){ + //TODO: this is just for test + $encoding = array( + 'id' => $this->getId(), + 'url' => $this->getUrl(), + 'title' => $this->getTitle() + ); + return $encoding; + } } diff --git a/db/folder.php b/db/folder.php index 2e3c96a7c..23d33737f 100644 --- a/db/folder.php +++ b/db/folder.php @@ -71,6 +71,9 @@ class Folder extends Collection { return $this->children; } - + public function jsonSerialize() { + //TODO: this is just for test + return $this->name; + } }
\ No newline at end of file diff --git a/db/foldermapper.php b/db/foldermapper.php index 5c1cd1552..52504ea6e 100644 --- a/db/foldermapper.php +++ b/db/foldermapper.php @@ -60,7 +60,7 @@ class FolderMapper { * @returns */ public function getAll() { - return self::childrenOf(0); + return $this->childrenOf(0); } /** diff --git a/external_api/feed.php b/external_api/feed.php new file mode 100644 index 000000000..d23f77e01 --- /dev/null +++ b/external_api/feed.php @@ -0,0 +1,19 @@ +<?php + +namespace OCA\News; + +use \OCA\News\Controller\FeedController; + +class API_Feed { + + public static function getAll() { + $container = createDIContainer(); + $bl = $container['FeedBL']; + $feeds = $bl->getAll(); + $serializedFeeds = array(); + foreach ($feeds as $feed) { + $serializedFeeds[] = $feed->jsonSerialize(); + } + return new \OC_OCS_Result($serializedFeeds); + } +} diff --git a/external_api/folder.php b/external_api/folder.php index 5a3f70328..e2bbeb870 100644 --- a/external_api/folder.php +++ b/external_api/folder.php @@ -8,8 +8,13 @@ class API_Folder { public static function getAll() { $container = createDIContainer(); - $controller = $container['FolderBL']; - return \OC_OCS_Result($controller->getAll()); + $bl = $container['FolderBL']; + $folders = $bl->getAll(); + $serializedFolders = array(); + foreach ($folders as $folder) { + $serializedFolders[] = $folder->jsonSerialize(); + } + return new \OC_OCS_Result($serializedFolders); } } diff --git a/feed.bl.php b/feed.bl.php new file mode 100644 index 000000000..71507af98 --- /dev/null +++ b/feed.bl.php @@ -0,0 +1,14 @@ +<?php + +namespace OCA\News; + +class FeedBL { + + public function __construct($feedMapper){ + $this->feedMapper = $feedMapper; + } + + public function getAll() { + return $this->feedMapper->findAll(); + } +} diff --git a/folder.bl.php b/folder.bl.php index b008f1dde..ff1164c28 100644 --- a/folder.bl.php +++ b/folder.bl.php @@ -8,7 +8,7 @@ class FolderBL { $this->folderMapper = $folderMapper; } - public static function getAll() { - $folders = $this->folderMapper->getAll(); + public function getAll() { + return $this->folderMapper->getAll(); } } |