summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2013-03-02 19:50:33 +0100
committerAlessandro Cosentino <cosenal@gmail.com>2013-03-02 19:50:33 +0100
commit4902253e9c8aac706091c6337391153b02923689 (patch)
tree3012e106d477a83e718ea42741c445895922df8e
parent165540d34652fb895cb7f29c818fb3427bfba8c4 (diff)
prototype for business layer for feed
-rw-r--r--appinfo/bootstrap.php11
-rw-r--r--appinfo/routes.php12
-rw-r--r--controller/feedcontroller.php55
-rw-r--r--controller/foldercontroller.php2
-rw-r--r--db/feed.php10
-rw-r--r--db/folder.php5
-rw-r--r--db/foldermapper.php2
-rw-r--r--external_api/feed.php19
-rw-r--r--external_api/folder.php9
-rw-r--r--feed.bl.php14
-rw-r--r--folder.bl.php4
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();
}
}