diff options
-rw-r--r-- | appinfo/routes.php | 67 | ||||
-rw-r--r-- | db/foldermapper.php | 5 | ||||
-rw-r--r-- | external_api/folder.php | 37 | ||||
-rw-r--r-- | folder.bl.php | 26 |
4 files changed, 98 insertions, 37 deletions
diff --git a/appinfo/routes.php b/appinfo/routes.php index 1427d4443..095e03f83 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -26,7 +26,7 @@ require_once \OC_App::getAppPath('news') . '/appinfo/bootstrap.php'; function callController($controllerName, $methodName, $urlParams, $disableAdminCheck=true, $isAjax=false){ $container = createDIContainer(); - + // run security checks $security = $container['Security']; runSecurityChecks($security, $isAjax, $disableAdminCheck); @@ -60,7 +60,7 @@ function callAjaxController($controllerName, $methodName, $urlParams, $disableAd */ function runSecurityChecks($security, $isAjax=false, $disableAdminCheck=true){ if($disableAdminCheck){ - $security->setIsAdminCheck(false); + $security->setIsAdminCheck(false); } if($isAjax){ @@ -80,19 +80,19 @@ function runSecurityChecks($security, $isAjax=false, $disableAdminCheck=true){ * Normal Routes */ $this->create('news_index', '/')->action( - function($params){ + function($params){ callController('NewsController', 'index', $params, true); } ); $this->create('news_index_feed', '/feed/{feedid}')->action( - function($params){ + function($params){ callController('NewsController', 'index', $params, true); } ); $this->create('news_export_opml', '/export/opml')->action( - function($params){ + function($params){ callController('NewsController', 'exportOPML', $params, true); } ); @@ -102,13 +102,13 @@ $this->create('news_export_opml', '/export/opml')->action( * AJAX Routes */ $this->create('news_ajax_init', '/ajax/init')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'init', $params); } ); $this->create('news_ajax_setshowall', '/ajax/setshowall')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'setShowAll', $params); } ); @@ -118,25 +118,25 @@ $this->create('news_ajax_setshowall', '/ajax/setshowall')->action( * Folders */ $this->create('news_ajax_collapsefolder', '/ajax/collapsefolder')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'collapseFolder', $params); } ); $this->create('news_ajax_changefoldername', '/ajax/changefoldername')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'changeFolderName', $params); } ); $this->create('news_ajax_createfolder', '/ajax/createfolder')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'createFolder', $params); } ); $this->create('news_ajax_deletefolder', '/ajax/deletefolder')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'deleteFolder', $params); } ); @@ -146,31 +146,31 @@ $this->create('news_ajax_deletefolder', '/ajax/deletefolder')->action( * Feeds */ $this->create('news_ajax_loadfeed', '/ajax/loadfeed')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'loadFeed', $params); } ); $this->create('news_ajax_deletefeed', '/ajax/deletefeed')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'deleteFeed', $params); } ); $this->create('news_ajax_movefeedtofolder', '/ajax/movefeedtofolder')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'moveFeedToFolder', $params); } ); $this->create('news_ajax_updatefeed', '/ajax/updatefeed')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'updateFeed', $params); } ); $this->create('news_ajax_createfeed', '/ajax/createfeed')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'createFeed', $params); } ); @@ -180,13 +180,13 @@ $this->create('news_ajax_createfeed', '/ajax/createfeed')->action( * Items */ $this->create('news_ajax_setitemstatus', '/ajax/setitemstatus')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'setItemStatus', $params); } ); $this->create('news_ajax_setallitemsread', '/ajax/setallitemsread')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'setAllItemsRead', $params); } ); @@ -196,7 +196,7 @@ $this->create('news_ajax_setallitemsread', '/ajax/setallitemsread')->action( * Import stuff */ $this->create('news_ajax_importOPML', '/import')->action( - function($params){ + function($params){ callAjaxController('NewsAjaxController', 'uploadOPML', $params); } ); @@ -205,13 +205,13 @@ $this->create('news_ajax_importOPML', '/import')->action( /** * External API */ - -/** + +/** * Feed API */ \OCP\API::register( - 'get', '/news/feeds', + 'get', '/news/feeds', function($urlParams) { $container = createDIContainer(); return $container['FeedApi']->getAll($urlParams); @@ -219,7 +219,7 @@ $this->create('news_ajax_importOPML', '/import')->action( 'news', \OC_API::USER_AUTH ); \OCP\API::register( - 'get', '/news/feeds/{feedid}', + 'get', '/news/feeds/{feedid}', function($urlParams) { $container = createDIContainer(); return $container['FeedApi']->getById($urlParams); @@ -227,7 +227,7 @@ $this->create('news_ajax_importOPML', '/import')->action( 'news', \OC_API::USER_AUTH ); \OCP\API::register( - 'post', '/news/feeds/create', + 'post', '/news/feeds/create', function($urlParams) { $container = createDIContainer(); return $container['FeedApi']->create($urlParams); @@ -235,7 +235,7 @@ $this->create('news_ajax_importOPML', '/import')->action( 'news', \OC_API::USER_AUTH ); -/** +/** * Folder API */ @@ -247,7 +247,6 @@ $this->create('news_ajax_importOPML', '/import')->action( }, 'news', \OC_API::USER_AUTH ); - \OCP\API::register( 'post', '/news/folders/create', function($urlParams) { @@ -255,4 +254,20 @@ $this->create('news_ajax_importOPML', '/import')->action( return $container['FolderApi']->create($urlParams); }, 'news', \OC_API::USER_AUTH +); +\OCP\API::register( + 'get', '/news/folders/{folderid}/delete', + function($urlParams) { + $container = createDIContainer(); + return $container['FolderApi']->delete($urlParams); + }, + 'news', \OC_API::USER_AUTH +); +\OCP\API::register( + 'post', '/news/folders/{folderid}/modify', + function($urlParams) { + $container = createDIContainer(); + return $container['FolderApi']->modify($urlParams); + }, + 'news', \OC_API::USER_AUTH );
\ No newline at end of file diff --git a/db/foldermapper.php b/db/foldermapper.php index 52504ea6e..d9040b50b 100644 --- a/db/foldermapper.php +++ b/db/foldermapper.php @@ -53,7 +53,7 @@ class FolderMapper { return $folderlist; } - + /** * @brief Returns the forest (list of trees) of folders children of $parentid * @param @@ -111,6 +111,9 @@ class FolderMapper { $result = $stmt->execute(array($this->userid, $id)); $row = $result->fetchRow(); + if(!$row) + return null; + $folder = new Folder($row['name'], $row['id']); $folder->setOpened($row['opened']); diff --git a/external_api/folder.php b/external_api/folder.php index 66e5f3915..68c8ff523 100644 --- a/external_api/folder.php +++ b/external_api/folder.php @@ -13,22 +13,47 @@ class FolderApi { public function getAll() { $folders = $this->bl->getAll(); $serializedFolders = array(); - - //TODO: check the behaviour for nested folders + + //TODO: check the behaviour for nested folders foreach ($folders as $folder) { $serializedFolders[] = $folder->jsonSerialize(); } return new \OC_OCS_Result($serializedFolders); } - + public function create() { - $name = $_POST['name']; $parentId = $_POST['parentid']; - + $this->bl->create($name, $parentId); - + return new \OC_OCS_Result(); } + + public function delete($params) { + $id = $params['folderid']; + if(!is_numeric($id)) + return new \OC_OCS_Result(null,999,'Invalid input! folderid must be an integer'); + + if($this->bl->delete($id)) + return new \OC_OCS_Result(); + else + return new \OC_OCS_Result(null,999,'Could not delete folder'); + } + + public function modify($params) { + $id = $params['folderid']; + if(!is_numeric($id)) + return new \OC_OCS_Result(null,999,'Invalid input! folderid must be an integer'.$id); + + $name = $_POST['name']; + $parentId = $_POST['parentid']; + $opened = $_POST['opened']; + + if($this->bl->modify($id, $name, $parentid, $opened)) + return new \OC_OCS_Result(); + else + return new \OC_OCS_Result(null,999,'Could not modify folder'); + } } diff --git a/folder.bl.php b/folder.bl.php index 722baf8fc..85c386d90 100644 --- a/folder.bl.php +++ b/folder.bl.php @@ -7,14 +7,32 @@ class FolderBl { public function __construct($folderMapper){ $this->folderMapper = $folderMapper; } - + public function getAll() { - return $this->folderMapper->getAll(); + return $this->folderMapper->getAll(); } - + public function create($name, $parentId) { //TODO: change the setparentid in the model class Folder $folder = new Folder($name, null, null); - return $this->folderMapper->save($folder); + return $this->folderMapper->save($folder); + } + + public function delete($folderid) { + return $this->folderMapper->deleteById($folderid); + } + + public function modify($folderid, $name = null, $parent = null, $opened = null) { + $folder = $this->folderMapper->find($folderid); + if(!$folder) + return false; + + if($name) + $folder->setName($name); + if($parent) + $folder->setParentId($parent); + if($opened) + $folder->setOpened($opened); + return $this->folderMapper->update($folder); } } |