diff options
Diffstat (limited to 'appinfo')
-rw-r--r-- | appinfo/app.php | 34 | ||||
-rw-r--r-- | appinfo/bootstrap.php | 110 | ||||
-rw-r--r-- | appinfo/routes.php | 202 | ||||
-rw-r--r-- | appinfo/version | 3 |
4 files changed, 324 insertions, 25 deletions
diff --git a/appinfo/app.php b/appinfo/app.php index 7825f4fc5..2f7c3d868 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -10,34 +10,22 @@ * */ -OC::$CLASSPATH['OCA\News\StatusFlag'] = 'apps/news/lib/item.php'; -OC::$CLASSPATH['OCA\News\Item'] = 'apps/news/lib/item.php'; -OC::$CLASSPATH['OCA\News\Collection'] = 'apps/news/lib/collection.php'; -OC::$CLASSPATH['OCA\News\Feed'] = 'apps/news/lib/feed.php'; -OC::$CLASSPATH['OCA\News\Folder'] = 'apps/news/lib/folder.php'; -OC::$CLASSPATH['OCA\News\FeedType'] = 'apps/news/lib/feedtypes.php'; +namespace OCA\News; -OC::$CLASSPATH['OCA\News\FeedMapper'] = 'apps/news/lib/feedmapper.php'; -OC::$CLASSPATH['OCA\News\ItemMapper'] = 'apps/news/lib/itemmapper.php'; -OC::$CLASSPATH['OCA\News\FolderMapper'] = 'apps/news/lib/foldermapper.php'; +require_once \OC_App::getAppPath('news') . '/appinfo/bootstrap.php'; -OC::$CLASSPATH['OCA\News\Utils'] = 'apps/news/lib/utils.php'; -OC::$CLASSPATH['OC_Search_Provider_News'] = 'apps/news/lib/search.php'; - -OC::$CLASSPATH['OCA\News\Backgroundjob'] = 'apps/news/lib/backgroundjob.php'; -OCP\Backgroundjob::addRegularTask( 'OCA\News\Backgroundjob', 'run' ); - -OC::$CLASSPATH['OCA\News\Share_Backend_News_Item'] = 'apps/news/lib/share/item.php'; - -OCP\App::addNavigationEntry( array( +\OCP\App::addNavigationEntry( array( 'id' => 'news', 'order' => 74, - 'href' => OC_Helper::linkTo( 'news', 'index.php' ), - 'icon' => OC_Helper::imagePath( 'news', 'icon.svg' ), - 'name' => OC_L10N::get('news')->t('News') + 'href' => \OC_Helper::linkToRoute('news_index'), + 'icon' => \OC_Helper::imagePath( 'news', 'icon.svg' ), + 'name' => \OC_L10N::get('news')->t('News') )); -OC_Search::registerProvider('OC_Search_Provider_News'); +\OC_Search::registerProvider('OC_Search_Provider_News'); + +\OCP\Backgroundjob::addRegularTask( 'OCA\News\Backgroundjob', 'run' ); +\OCP\Share::registerBackend('news_item', 'OCA\News\Share_Backend_News_Item'); + -OCP\Share::registerBackend('news_item', 'OCA\News\Share_Backend_News_Item'); diff --git a/appinfo/bootstrap.php b/appinfo/bootstrap.php new file mode 100644 index 000000000..03a9a79fc --- /dev/null +++ b/appinfo/bootstrap.php @@ -0,0 +1,110 @@ +<?php +/** +* ownCloud - News app +* +* @author Alessandro Copyright +* @author Bernhard Posselt +* @copyright 2012 Alessandro Cosentino cosenal@gmail.com +* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com +* +* This file is licensed under the Affero General Public License version 3 or later. +* See the COPYING-README file +* +*/ + +namespace OCA\News; + +\OC::$CLASSPATH['Pimple'] = 'apps/news/3rdparty/Pimple/Pimple.php'; + +\OC::$CLASSPATH['OC_Search_Provider_News'] = 'apps/news/lib/search.php'; +\OC::$CLASSPATH['OCA\News\Backgroundjob'] = 'apps/news/lib/backgroundjob.php'; +\OC::$CLASSPATH['OCA\News\Share_Backend_News_Item'] = 'apps/news/lib/share/item.php'; +\OC::$CLASSPATH['OCA\News\Utils'] = 'apps/news/lib/utils.php'; +\OC::$CLASSPATH['OCA\News\Security'] = 'apps/news/lib/security.php'; +\OC::$CLASSPATH['OCA\News\API'] = 'apps/news/lib/api.php'; +\OC::$CLASSPATH['OCA\News\Request'] = 'apps/news/lib/request.php'; +\OC::$CLASSPATH['OCA\News\TemplateResponse'] = 'apps/news/lib/response.php'; +\OC::$CLASSPATH['OCA\News\JSONResponse'] = 'apps/news/lib/response.php'; +\OC::$CLASSPATH['OCA\News\TextDownloadResponse'] = 'apps/news/lib/response.php'; +\OC::$CLASSPATH['OCA\News\Controller'] = 'apps/news/lib/controller.php'; + +\OC::$CLASSPATH['OCA\News\OPMLParser'] = 'apps/news/opmlparser.php'; +\OC::$CLASSPATH['OCA\News\OPMLExporter'] = 'apps/news/opmlexporter.php'; +\OC::$CLASSPATH['OCA\News\OPMLImporter'] = 'apps/news/opmlimporter.php'; + +\OC::$CLASSPATH['OCA\News\Enclosure'] = 'apps/news/db/enclosure.php'; +\OC::$CLASSPATH['OCA\News\FeedMapper'] = 'apps/news/db/feedmapper.php'; +\OC::$CLASSPATH['OCA\News\ItemMapper'] = 'apps/news/db/itemmapper.php'; +\OC::$CLASSPATH['OCA\News\FolderMapper'] = 'apps/news/db/foldermapper.php'; +\OC::$CLASSPATH['OCA\News\Folder'] = 'apps/news/db/folder.php'; +\OC::$CLASSPATH['OCA\News\Feed'] = 'apps/news/db/feed.php'; +\OC::$CLASSPATH['OCA\News\Item'] = 'apps/news/db/item.php'; +\OC::$CLASSPATH['OCA\News\Collection'] = 'apps/news/db/collection.php'; +\OC::$CLASSPATH['OCA\News\FeedType'] = 'apps/news/db/feedtype.php'; +\OC::$CLASSPATH['OCA\News\StatusFlag'] = 'apps/news/db/statusflag.php'; + +\OC::$CLASSPATH['OCA\News\NewsController'] = 'apps/news/controllers/news.controller.php'; +\OC::$CLASSPATH['OCA\News\NewsAjaxController'] = 'apps/news/controllers/news.ajax.controller.php'; + + +/** + * @return a new DI container with prefilled values for the news app + */ +function createDIContainer(){ + $newsContainer = new \Pimple(); + + /** + * CONSTANTS + */ + $newsContainer['AppName'] = 'news'; + + + /** + * CLASSES + */ + $newsContainer['API'] = $newsContainer->share(function($c){ + return new API($c['AppName']); + }); + + + $newsContainer['Request'] = $newsContainer->share(function($c){ + return new Request($_GET, $_POST, $_FILES); + }); + + + $newsContainer['Security'] = $newsContainer->share(function($c) { + return new Security($c['AppName']); + }); + + + /** + * MAPPERS + */ + $newsContainer['ItemMapper'] = $newsContainer->share(function($c){ + return new ItemMapper($c['API']->getUserId()); + }); + + $newsContainer['FeedMapper'] = $newsContainer->share(function($c){ + return new FeedMapper($c['API']->getUserId()); + }); + + $newsContainer['FolderMapper'] = $newsContainer->share(function($c){ + return new FolderMapper($c['API']->getUserId()); + }); + + + /** + * CONTROLLERS + */ + $newsContainer['NewsController'] = function($c){ + return new NewsController($c['Request'], $c['API'], $c['FeedMapper'], + $c['FolderMapper']); + }; + + $newsContainer['NewsAjaxController'] = function($c){ + return new NewsAjaxController($c['Request'], $c['API'], $c['FeedMapper'], + $c['FolderMapper'], $c['ItemMapper']); + }; + + return $newsContainer; +}
\ No newline at end of file diff --git a/appinfo/routes.php b/appinfo/routes.php new file mode 100644 index 000000000..21c1de90d --- /dev/null +++ b/appinfo/routes.php @@ -0,0 +1,202 @@ +<?php +/** +* ownCloud - News app +* +* @author Bernhard Posselt +* Copyright (c) 2012 - Bernhard Posselt <nukeawhale@gmail.com> +* +* This file is licensed under the Affero General Public License version 3 or later. +* See the COPYING-README file +* +*/ + +namespace OCA\News; + +require_once \OC_App::getAppPath('news') . '/appinfo/bootstrap.php'; + +/** + * Shortcut for calling a controller method and printing the result + * @param string $controllerName: the name of the controller under which it is + * stored in the DI container + * @param string $methodName: the method that you want to call + * @param array $urlParams: an array with variables extracted from the routes + * @param bool $disableAdminCheck: disables the check for adminuser rights + * @param bool $isAjax: if the request is an ajax request + */ +function callController($controllerName, $methodName, $urlParams, $disableAdminCheck=true, + $isAjax=false){ + $container = createDIContainer(); + + // run security checks + $security = $container['Security']; + runSecurityChecks($security, $isAjax, $disableAdminCheck); + + // call the controller and render the page + $controller = $container[$controllerName]; + $response = $controller->$methodName($urlParams); + echo $response->render(); +} + + +/** + * Shortcut for calling an ajax controller method and printing the result + * @param string $controllerName: the name of the controller under which it is + * stored in the DI container + * @param string $methodName: the method that you want to call + * @param array $urlParams: an array with variables extracted from the routes + * @param bool $disableAdminCheck: disables the check for adminuser rights + */ +function callAjaxController($controllerName, $methodName, $urlParams, $disableAdminCheck=true){ + callController($controllerName, $methodName, $urlParams, $disableAdminCheck, true); +} + + +/** + * Runs the security checks and exits on error + * @param Security $security: the security object + * @param bool $isAjax: if true, the ajax checks will be run, otherwise the normal + * checks + * @param bool $disableAdminCheck: disables the check for adminuser rights + */ +function runSecurityChecks($security, $isAjax=false, $disableAdminCheck=true){ + if($disableAdminCheck){ + $security->setIsAdminCheck(false); + } + + if($isAjax){ + $security->runAJAXChecks(); + } else { + $security->runChecks(); + } +} + + +/************************* + * Define your routes here + */ + + +/** + * Normal Routes + */ +$this->create('news_index', '/')->action( + function($params){ + callController('NewsController', 'index', $params, true); + } +); + +$this->create('news_index_feed', '/feed/{feedid}')->action( + function($params){ + callController('NewsController', 'index', $params, true); + } +); + +$this->create('news_export_opml', '/export/opml')->action( + function($params){ + callController('NewsController', 'exportOPML', $params, true); + } +); + + +/** + * AJAX Routes + */ +$this->create('news_ajax_init', '/ajax/init')->action( + function($params){ + callAjaxController('NewsAjaxController', 'init', $params); + } +); + +$this->create('news_ajax_setshowall', '/ajax/setshowall')->action( + function($params){ + callAjaxController('NewsAjaxController', 'setShowAll', $params); + } +); + + +/** + * Folders + */ +$this->create('news_ajax_collapsefolder', '/ajax/collapsefolder')->action( + function($params){ + callAjaxController('NewsAjaxController', 'collapseFolder', $params); + } +); + +$this->create('news_ajax_changefoldername', '/ajax/changefoldername')->action( + function($params){ + callAjaxController('NewsAjaxController', 'changeFolderName', $params); + } +); + +$this->create('news_ajax_createfolder', '/ajax/createfolder')->action( + function($params){ + callAjaxController('NewsAjaxController', 'createFolder', $params); + } +); + +$this->create('news_ajax_deletefolder', '/ajax/deletefolder')->action( + function($params){ + callAjaxController('NewsAjaxController', 'deleteFolder', $params); + } +); + + +/** + * Feeds + */ +$this->create('news_ajax_loadfeed', '/ajax/loadfeed')->action( + function($params){ + callAjaxController('NewsAjaxController', 'loadFeed', $params); + } +); + +$this->create('news_ajax_deletefeed', '/ajax/deletefeed')->action( + function($params){ + callAjaxController('NewsAjaxController', 'deleteFeed', $params); + } +); + +$this->create('news_ajax_movefeedtofolder', '/ajax/movefeedtofolder')->action( + function($params){ + callAjaxController('NewsAjaxController', 'moveFeedToFolder', $params); + } +); + +$this->create('news_ajax_updatefeed', '/ajax/updatefeed')->action( + function($params){ + callAjaxController('NewsAjaxController', 'updateFeed', $params); + } +); + +$this->create('news_ajax_createfeed', '/ajax/createfeed')->action( + function($params){ + callAjaxController('NewsAjaxController', 'createFeed', $params); + } +); + + +/** + * Items + */ +$this->create('news_ajax_setitemstatus', '/ajax/setitemstatus')->action( + function($params){ + callAjaxController('NewsAjaxController', 'setItemStatus', $params); + } +); + +$this->create('news_ajax_setallitemsread', '/ajax/setallitemsread')->action( + function($params){ + callAjaxController('NewsAjaxController', 'setAllItemsRead', $params); + } +); + + +/** + * Import stuff + */ +$this->create('news_ajax_importOPML', '/import')->action( + function($params){ + callAjaxController('NewsAjaxController', 'uploadOPML', $params); + } +); diff --git a/appinfo/version b/appinfo/version index a9212c01c..f5cce03c3 100644 --- a/appinfo/version +++ b/appinfo/version @@ -1,2 +1 @@ -7.6 - +7.6
\ No newline at end of file |