summaryrefslogtreecommitdiffstats
path: root/appinfo
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-09-16 16:24:20 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-09-16 16:24:20 +0200
commit9e36ef31f9bf16d43326fd047619ada5ff16e072 (patch)
treee228816adedacfed87eb08e8bc86658536cbbe86 /appinfo
parent6a7ac3d9da3dea4130eb08a07a0a0603418d54ab (diff)
parent21728afff571adfc508cf5fa473d094946ef188f (diff)
merge
Diffstat (limited to 'appinfo')
-rw-r--r--appinfo/app.json18
-rw-r--r--appinfo/app.php34
-rw-r--r--appinfo/application.php167
-rw-r--r--appinfo/database.xml13
-rw-r--r--appinfo/info.xml4
-rw-r--r--appinfo/routes.php148
-rw-r--r--appinfo/setup.php29
-rw-r--r--appinfo/version2
8 files changed, 226 insertions, 189 deletions
diff --git a/appinfo/app.json b/appinfo/app.json
index 2cd5cafe3..14f155e62 100644
--- a/appinfo/app.json
+++ b/appinfo/app.json
@@ -1,10 +1,10 @@
{
- "name": "News",
+ "name": "News",
"id": "news",
- "description": "ownCloud News App",
- "licence": "AGPL",
- "version": "2.001",
- "authors": [
+ "description": "ownCloud News App",
+ "licence": "AGPL",
+ "version": "3.001",
+ "authors": [
{
"name": "Bernhard Posselt",
"email": "dev@bernhard-posselt.com"
@@ -28,15 +28,15 @@
"documentation": {
"developer": "https://github.com/owncloud/news/wiki"
},
- "jobs": ["OCA\\News\\BackgroundJob\\Task"],
+ "jobs": ["OCA\\News\\Cron\\Updater"],
"hooks": {
"OC_User::pre_deleteUser": "OCA\\News\\Hooks\\User::deleteUser"
},
"databases": ["pgsql", "sqlite3", "mysql"],
- "categories": ["Multimedia"],
+ "categories": ["Multimedia"],
"dependencies": {
- "php": ">=5.3.6",
- "owncloud": ">=6.0.3",
+ "php": ">=5.4",
+ "owncloud": ">=7",
"libs": {
"curl": "*"
}
diff --git a/appinfo/app.php b/appinfo/app.php
index 1cc9994ae..77e3fe19d 100644
--- a/appinfo/app.php
+++ b/appinfo/app.php
@@ -13,18 +13,28 @@
namespace OCA\News\AppInfo;
-$container = new Application();
+use \OCA\News\Config\DependencyException;
-$config = $container->getAppConfig();
-$config->loadConfig(__DIR__ . '/app.json');
-$config->registerNavigation();
-$config->registerBackgroundJobs();
-$config->registerHooks();
-// check for correct app dependencies
-try {
- $config->testDependencies();
-} catch(\OCA\News\Config\DependencyException $e) {
- $container->getLogger()->log($e->getMessage());
-}
+require_once __DIR__ . '/setup.php';
+if (is_setup()) {
+
+ $container = new Application();
+
+ $config = $container->getAppConfig();
+ $config->loadConfig(__DIR__ . '/app.json');
+ $config->registerNavigation();
+ $config->registerBackgroundJobs();
+ $config->registerHooks();
+
+ // check for correct app dependencies
+ try {
+ $config->testDependencies();
+ } catch(DependencyException $e) {
+ $logger = $container->getLogger();
+ $params = $container->getLoggerParameters();
+ $logger->emergency($e->getMessage(), $params);
+ }
+
+} \ No newline at end of file
diff --git a/appinfo/application.php b/appinfo/application.php
index fc2e00d1a..01e623adc 100644
--- a/appinfo/application.php
+++ b/appinfo/application.php
@@ -15,29 +15,27 @@ namespace OCA\News\AppInfo;
use \OC\Files\View;
use \OCP\AppFramework\App;
+use \OCP\Util;
+use \OCP\User;
use \OCA\News\Config\AppConfig;
-use \OCA\News\Core\Logger;
-use \OCA\News\Core\Db;
-
use \OCA\News\Controller\PageController;
use \OCA\News\Controller\FolderController;
use \OCA\News\Controller\FeedController;
use \OCA\News\Controller\ItemController;
use \OCA\News\Controller\ExportController;
-use \OCA\News\Controller\ApiController;
+use \OCA\News\Controller\UtilityApiController;
use \OCA\News\Controller\FolderApiController;
use \OCA\News\Controller\FeedApiController;
use \OCA\News\Controller\ItemApiController;
-use \OCA\News\BusinessLayer\FolderBusinessLayer;
-use \OCA\News\BusinessLayer\FeedBusinessLayer;
-use \OCA\News\BusinessLayer\ItemBusinessLayer;
+use \OCA\News\Service\FolderService;
+use \OCA\News\Service\FeedService;
+use \OCA\News\Service\ItemService;
use \OCA\News\Db\FolderMapper;
use \OCA\News\Db\FeedMapper;
-use \OCA\News\Db\ItemMapper;
use \OCA\News\Db\StatusFlag;
use \OCA\News\Db\MapperFactory;
@@ -45,7 +43,6 @@ use \OCA\News\Utility\Config;
use \OCA\News\Utility\OPMLExporter;
use \OCA\News\Utility\Updater;
use \OCA\News\Utility\SimplePieAPIFactory;
-use \OCA\News\Utility\TimeFactory;
use \OCA\News\Utility\FaviconFetcher;
use \OCA\News\Fetcher\Fetcher;
@@ -55,8 +52,6 @@ use \OCA\News\ArticleEnhancer\Enhancer;
use \OCA\News\ArticleEnhancer\XPathArticleEnhancer;
use \OCA\News\ArticleEnhancer\RegexArticleEnhancer;
-use \OCA\News\Middleware\CORSMiddleware;
-
require_once __DIR__ . '/../3rdparty/htmlpurifier/library/HTMLPurifier.auto.php';
@@ -79,7 +74,7 @@ class Application extends App {
*/
$container->registerService('PageController', function($c) {
return new PageController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
$c->query('CoreConfig'),
$c->query('L10N'),
@@ -89,22 +84,22 @@ class Application extends App {
$container->registerService('FolderController', function($c) {
return new FolderController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('FolderBusinessLayer'),
- $c->query('FeedBusinessLayer'),
- $c->query('ItemBusinessLayer'),
+ $c->query('FolderService'),
+ $c->query('FeedService'),
+ $c->query('ItemService'),
$c->query('UserId')
);
});
$container->registerService('FeedController', function($c) {
return new FeedController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('FolderBusinessLayer'),
- $c->query('FeedBusinessLayer'),
- $c->query('ItemBusinessLayer'),
+ $c->query('FolderService'),
+ $c->query('FeedService'),
+ $c->query('ItemService'),
$c->query('CoreConfig'),
$c->query('UserId')
);
@@ -112,10 +107,10 @@ class Application extends App {
$container->registerService('ItemController', function($c) {
return new ItemController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('FeedBusinessLayer'),
- $c->query('ItemBusinessLayer'),
+ $c->query('FeedService'),
+ $c->query('ItemService'),
$c->query('CoreConfig'),
$c->query('UserId')
);
@@ -123,20 +118,20 @@ class Application extends App {
$container->registerService('ExportController', function($c) {
return new ExportController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('FeedBusinessLayer'),
- $c->query('FolderBusinessLayer'),
- $c->query('ItemBusinessLayer'),
+ $c->query('FolderService'),
+ $c->query('FeedService'),
+ $c->query('ItemService'),
$c->query('OPMLExporter'),
$c->query('UserId')
);
});
- $container->registerService('ApiController', function($c) {
- return new ApiController(
- $c->query('AppName'),
- $c->query('Request'),
+ $container->registerService('UtilityApiController', function($c) {
+ return new UtilityApiController(
+ $c->query('AppName'),
+ $c->query('Request'),
$c->query('Updater'),
$c->query('CoreConfig')
);
@@ -144,31 +139,31 @@ class Application extends App {
$container->registerService('FolderApiController', function($c) {
return new FolderApiController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('FolderBusinessLayer'),
- $c->query('ItemBusinessLayer'),
+ $c->query('FolderService'),
+ $c->query('ItemService'),
$c->query('UserId')
);
});
$container->registerService('FeedApiController', function($c) {
return new FeedApiController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('FolderBusinessLayer'),
- $c->query('FeedBusinessLayer'),
- $c->query('ItemBusinessLayer'),
+ $c->query('FeedService'),
+ $c->query('ItemService'),
$c->query('Logger'),
- $c->query('UserId')
+ $c->query('UserId'),
+ $c->query('LoggerParameters')
);
});
$container->registerService('ItemApiController', function($c) {
return new ItemApiController(
- $c->query('AppName'),
+ $c->query('AppName'),
$c->query('Request'),
- $c->query('ItemBusinessLayer'),
+ $c->query('ItemService'),
$c->query('UserId')
);
});
@@ -177,8 +172,8 @@ class Application extends App {
/**
* Business Layer
*/
- $container->registerService('FolderBusinessLayer', function($c) {
- return new FolderBusinessLayer(
+ $container->registerService('FolderService', function($c) {
+ return new FolderService(
$c->query('FolderMapper'),
$c->query('L10N'),
$c->query('TimeFactory'),
@@ -186,8 +181,8 @@ class Application extends App {
);
});
- $container->registerService('FeedBusinessLayer', function($c) {
- return new FeedBusinessLayer(
+ $container->registerService('FeedService', function($c) {
+ return new FeedService(
$c->query('FeedMapper'),
$c->query('Fetcher'),
$c->query('ItemMapper'),
@@ -196,12 +191,13 @@ class Application extends App {
$c->query('TimeFactory'),
$c->query('Config'),
$c->query('Enhancer'),
- $c->query('HTMLPurifier')
+ $c->query('HTMLPurifier'),
+ $c->query('LoggerParameters')
);
});
- $container->registerService('ItemBusinessLayer', function($c) {
- return new ItemBusinessLayer(
+ $container->registerService('ItemService', function($c) {
+ return new ItemService(
$c->query('ItemMapper'),
$c->query('StatusFlag'),
$c->query('TimeFactory'),
@@ -209,13 +205,23 @@ class Application extends App {
);
});
+ // compability for plugins pre 3.0
+ $container->registerService('FolderBusinessLayer', function($c) {
+ return $c->query('FolderService');
+ });
+ $container->registerService('FeedBusinessLayer', function($c) {
+ return $c->query('FeedService');
+ });
+ $container->registerService('ItemBusinessLayer', function($c) {
+ return $c->query('ItemService');
+ });
/**
* Mappers
*/
$container->registerService('MapperFactory', function($c) {
return new MapperFactory(
- $c->query('DatabaseType'),
+ $c->query('DatabaseType'),
$c->query('Db')
);
});
@@ -243,19 +249,9 @@ class Application extends App {
* App config parser
*/
$container->registerService('AppConfig', function($c) {
- // not performant but well :/
- // $config = $c->query('ServerContainer')->getAppConfig(); oc7 only
- $installedApps = \OC_Appconfig::getApps();
- $apps = array();
- foreach($installedApps as $app) {
- $apps[] = array(
- $app => \OC_Appconfig::getValue($app, 'installed_version', '0')
- );
- }
-
// order extensions in name => version
$loadedExtensions = get_loaded_extensions();
- $extensions = array();
+ $extensions = [];
foreach ($loadedExtensions as $extension) {
$extensions[$extension] = phpversion($extension);
}
@@ -265,8 +261,7 @@ class Application extends App {
$c->query('L10N'),
$c->query('ServerContainer')->getURLGenerator(),
phpversion(),
- implode('.', \OCP\Util::getVersion()),
- $apps,
+ implode('.', Util::getVersion()),
$extensions,
$c->query('DatabaseType')
);
@@ -274,21 +269,25 @@ class Application extends App {
/**
* Core
- */
+ */
$container->registerService('L10N', function($c) {
return $c->query('ServerContainer')->getL10N($c->query('AppName'));
});
$container->registerService('UserId', function() {
- return \OCP\User::getUser();
+ return User::getUser();
});
$container->registerService('Logger', function($c) {
- return new Logger($c->query('AppName'));
+ return $c->query('ServerContainer')->getLogger();
+ });
+
+ $container->registerService('LoggerParameters', function($c) {
+ return ['app' => $c->query('AppName')];
});
- $container->registerService('Db', function() {
- return new Db();
+ $container->registerService('Db', function($c) {
+ return $c->query('ServerContainer')->getDb();
});
$container->registerService('CoreConfig', function($c) {
@@ -313,7 +312,11 @@ class Application extends App {
});
$container->registerService('Config', function($c) {
- $config = new Config($c->query('ConfigView'), $c->query('Logger'));
+ $config = new Config(
+ $c->query('ConfigView'),
+ $c->query('Logger'),
+ $c->query('LoggerParameters')
+ );
$config->read('config.ini', true);
return $config;
});
@@ -341,7 +344,7 @@ class Application extends App {
$config->set('Cache.SerializerPath', $directory);
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp',
- '%^(?:https?:)?//(' .
+ '%^(?:https?:)?//(' .
'www.youtube(?:-nocookie)?.com/embed/|' .
'player.vimeo.com/video/)%'); //allow YouTube and Vimeo
return new \HTMLPurifier($config);
@@ -354,7 +357,7 @@ class Application extends App {
$xpathEnhancerConfig = file_get_contents(
__DIR__ . '/../articleenhancer/xpathenhancers.json'
);
-
+
foreach(json_decode($xpathEnhancerConfig, true) as $feed => $config) {
$articleEnhancer = new XPathArticleEnhancer(
$c->query('SimplePieAPIFactory'),
@@ -409,9 +412,9 @@ class Application extends App {
$container->registerService('Updater', function($c) {
return new Updater(
- $c->query('FolderBusinessLayer'),
- $c->query('FeedBusinessLayer'),
- $c->query('ItemBusinessLayer')
+ $c->query('FolderService'),
+ $c->query('FeedService'),
+ $c->query('ItemService')
);
});
@@ -426,17 +429,6 @@ class Application extends App {
);
});
- /**
- * Middleware
- */
- $container->registerService('CORSMiddleware', function($c) {
- return new CORSMiddleware(
- $c->query('Request')
- );
- });
-
- $container->registerMiddleWare('CORSMiddleware');
-
}
public function getAppConfig() {
@@ -447,5 +439,12 @@ class Application extends App {
public function getLogger() {
return $this->getContainer()->query('Logger');
}
+
+
+ public function getLoggerParameters() {
+ return $this->getContainer()->query('LoggerParameters');
+ }
+
+
}
diff --git a/appinfo/database.xml b/appinfo/database.xml
index a9b32accf..eebd7603b 100644
--- a/appinfo/database.xml
+++ b/appinfo/database.xml
@@ -64,7 +64,7 @@
</index>
</declaration>
</table>
-
+
<table>
<name>*dbprefix*news_feeds</name>
<declaration>
@@ -109,7 +109,7 @@
<name>favicon_link</name>
<type>clob</type>
<notnull>false</notnull>
- </field>
+ </field>
<field>
<name>added</name>
<type>integer</type>
@@ -159,7 +159,7 @@
<name>folder_id</name>
</field>
</index>
-
+
<index>
<name>news_feeds_url_hash_index</name>
<field>
@@ -168,7 +168,7 @@
</index>
</declaration>
</table>
-
+
<table>
<name>*dbprefix*news_items</name>
<declaration>
@@ -247,17 +247,16 @@
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
-
+
<index>
<name>news_items_feed_id_index</name>
<field>
<name>feed_id</name>
</field>
</index>
-
+
<index>
<name>news_items_item_guid</name>
- <unique>true</unique>
<field>
<name>guid_hash</name>
</field>
diff --git a/appinfo/info.xml b/appinfo/info.xml
index f6f84644e..d5125f02b 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -5,6 +5,6 @@
<description>An RSS/Atom feed reader. Requires ownCloud backgroundjobs or an updater script to be enabled to update your feeds. See the README.rst in the apps top directory</description>
<licence>AGPL</licence>
<author>Alessandro Cosentino, Bernhard Posselt, Jan-Christoph Borchardt. Powered by SimplePie (Ryan Parman, Geoffrey Sneddon, Ryan McCue and contributors).</author>
- <version>2.002</version>
- <require>6.0.3</require>
+ <version>3.001</version>
+ <require>7</require>
</info>
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 5ba7a2df7..35ede4265 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -11,89 +11,89 @@
* @copyright Bernhard Posselt 2012, 2014
*/
-namespace OCA\News;
-
-use \OCP\AppFramework\App;
+namespace OCA\News\AppInfo;
use \OCA\News\AppInfo\Application;
-$application = new Application();
-$application->registerRoutes($this, array('routes' => array(
- // page
- array('name' => 'page#index', 'url' => '/', 'verb' => 'GET'),
- array('name' => 'page#settings', 'url' => '/settings', 'verb' => 'GET'),
- array('name' => 'page#update_settings', 'url' => '/settings', 'verb' => 'POST'),
- // folders
- array('name' => 'folder#index', 'url' => '/folders', 'verb' => 'GET'),
- array('name' => 'folder#create', 'url' => '/folders', 'verb' => 'POST'),
- array('name' => 'folder#delete', 'url' => '/folders/{folderId}', 'verb' => 'DELETE'),
- array('name' => 'folder#restore', 'url' => '/folders/{folderId}/restore', 'verb' => 'POST'),
- array('name' => 'folder#rename', 'url' => '/folders/{folderId}/rename', 'verb' => 'POST'),
- array('name' => 'folder#read', 'url' => '/folders/{folderId}/read', 'verb' => 'POST'),
- array('name' => 'folder#open', 'url' => '/folders/{folderId}/open', 'verb' => 'POST'),
- array('name' => 'folder#collapse', 'url' => '/folders/{folderId}/collapse', 'verb' => 'POST'),
+require_once __DIR__ . '/setup.php';
+
+if (is_setup()) {
+ $application = new Application();
+ $application->registerRoutes($this, ['routes' => [
+ // page
+ ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
+ ['name' => 'page#settings', 'url' => '/settings', 'verb' => 'GET'],
+ ['name' => 'page#update_settings', 'url' => '/settings', 'verb' => 'PUT'],
- // feeds
- array('name' => 'feed#index', 'url' => '/feeds', 'verb' => 'GET'),
- array('name' => 'feed#create', 'url' => '/feeds', 'verb' => 'POST'),
- array('name' => 'feed#delete', 'url' => '/feeds/{feedId}', 'verb' => 'DELETE'),
- array('name' => 'feed#restore', 'url' => '/feeds/{feedId}/restore', 'verb' => 'POST'),
- array('name' => 'feed#move', 'url' => '/feeds/{feedId}/move', 'verb' => 'POST'),
- array('name' => 'feed#rename', 'url' => '/feeds/{feedId}/rename', 'verb' => 'POST'),
- array('name' => 'feed#read', 'url' => '/feeds/{feedId}/read', 'verb' => 'POST'),
- array('name' => 'feed#update', 'url' => '/feeds/{feedId}/update', 'verb' => 'POST'),
- array('name' => 'feed#active', 'url' => '/feeds/active', 'verb' => 'GET'),
- array('name' => 'feed#import', 'url' => '/feeds/import/articles', 'verb' => 'POST'),
+ // folders
+ ['name' => 'folder#index', 'url' => '/folders', 'verb' => 'GET'],
+ ['name' => 'folder#create', 'url' => '/folders', 'verb' => 'POST'],
+ ['name' => 'folder#delete', 'url' => '/folders/{folderId}', 'verb' => 'DELETE'],
+ ['name' => 'folder#restore', 'url' => '/folders/{folderId}/restore', 'verb' => 'POST'],
+ ['name' => 'folder#rename', 'url' => '/folders/{folderId}/rename', 'verb' => 'POST'],
+ ['name' => 'folder#read', 'url' => '/folders/{folderId}/read', 'verb' => 'POST'],
+ ['name' => 'folder#open', 'url' => '/folders/{folderId}/open', 'verb' => 'POST'],
- // items
- array('name' => 'item#index', 'url' => '/items', 'verb' => 'GET'),
- array('name' => 'item#new_items', 'url' => '/items/new', 'verb' => 'GET'),
- array('name' => 'item#readAll', 'url' => '/items/read', 'verb' => 'POST'),
- array('name' => 'item#read', 'url' => '/items/{itemId}/read', 'verb' => 'POST'),
- array('name' => 'item#unread', 'url' => '/items/{itemId}/unread', 'verb' => 'POST'),
- array('name' => 'item#star', 'url' => '/items/{feedId}/{guidHash}/star', 'verb' => 'POST'),
- array('name' => 'item#unstar', 'url' => '/items/{feedId}/{guidHash}/unstar', 'verb' => 'POST'),
+ // feeds
+ ['name' => 'feed#index', 'url' => '/feeds', 'verb' => 'GET'],
+ ['name' => 'feed#create', 'url' => '/feeds', 'verb' => 'POST'],
+ ['name' => 'feed#delete', 'url' => '/feeds/{feedId}', 'verb' => 'DELETE'],
+ ['name' => 'feed#restore', 'url' => '/feeds/{feedId}/restore', 'verb' => 'POST'],
+ ['name' => 'feed#move', 'url' => '/feeds/{feedId}/move', 'verb' => 'POST'],
+ ['name' => 'feed#rename', 'url' => '/feeds/{feedId}/rename', 'verb' => 'POST'],
+ ['name' => 'feed#read', 'url' => '/feeds/{feedId}/read', 'verb' => 'POST'],
+ ['name' => 'feed#update', 'url' => '/feeds/{feedId}/update', 'verb' => 'POST'],
+ ['name' => 'feed#active', 'url' => '/feeds/active', 'verb' => 'GET'],
+ ['name' => 'feed#import', 'url' => '/feeds/import/articles', 'verb' => 'POST'],
- // export
- array('name' => 'export#opml', 'url' => '/export/opml', 'verb' => 'GET'),
- array('name' => 'export#articles', 'url' => '/export/articles', 'verb' => 'GET'),
+ // items
+ ['name' => 'item#index', 'url' => '/items', 'verb' => 'GET'],
+ ['name' => 'item#new_items', 'url' => '/items/new', 'verb' => 'GET'],
+ ['name' => 'item#readAll', 'url' => '/items/read', 'verb' => 'POST'],
+ ['name' => 'item#read', 'url' => '/items/{itemId}/read', 'verb' => 'POST'],
+ ['name' => 'item#read_multiple', 'url' => '/items/read/multiple', 'verb' => 'POST'],
+ ['name' => 'item#star', 'url' => '/items/{feedId}/{guidHash}/star', 'verb' => 'POST'],
- // API
- array('name' => 'api#version', 'url' => '/api/v1-2/version', 'verb' => 'GET'),
- array('name' => 'api#before_update', 'url' => '/api/v1-2/cleanup/before-update', 'verb' => 'GET'),
- array('name' => 'api#after_update', 'url' => '/api/v1-2/cleanup/after-update', 'verb' => 'GET'),
- array('name' => 'api#cors', 'url' => '/api/v1-2/{path}', 'verb' => 'OPTIONS', 'requirements' => array('path' => '.+')),
+ // export
+ ['name' => 'export#opml', 'url' => '/export/opml', 'verb' => 'GET'],
+ ['name' => 'export#articles', 'url' => '/export/articles', 'verb' => 'GET'],
- // folders
- array('name' => 'folder_api#index', 'url' => '/api/v1-2/folders', 'verb' => 'GET'),
- array('name' => 'folder_api#create', 'url' => '/api/v1-2/folders', 'verb' => 'POST'),
- array('name' => 'folder_api#update', 'url' => '/api/v1-2/folders/{folderId}', 'verb' => 'PUT'),
- array('name' => 'folder_api#delete', 'url' => '/api/v1-2/folders/{folderId}', 'verb' => 'DELETE'),
- array('name' => 'folder_api#read', 'url' => '/api/v1-2/folders/{folderId}/read', 'verb' => 'PUT'), // FIXME: POST would be more correct
+ // API 1.2
+ ['name' => 'utility_api#version', 'url' => '/api/v1-2/version', 'verb' => 'GET'],
+ ['name' => 'utility_api#before_update', 'url' => '/api/v1-2/cleanup/before-update', 'verb' => 'GET'],
+ ['name' => 'utility_api#after_update', 'url' => '/api/v1-2/cleanup/after-update', 'verb' => 'GET'],
+ ['name' => 'utility_api#preflighted_cors', 'url' => '/api/v1-2/{path}', 'verb' => 'OPTIONS', 'requirements' => ['path' => '.+']],
- // feeds
- array('name' => 'feed_api#index', 'url' => '/api/v1-2/feeds', 'verb' => 'GET'),
- array('name' => 'feed_api#create', 'url' => '/api/v1-2/feeds', 'verb' => 'POST'),
- array('name' => 'feed_api#update', 'url' => '/api/v1-2/feeds/{feedId}', 'verb' => 'PUT'),
- array('name' => 'feed_api#delete', 'url' => '/api/v1-2/feeds/{feedId}', 'verb' => 'DELETE'),
- array('name' => 'feed_api#from_all_users', 'url' => '/api/v1-2/feeds/all', 'verb' => 'GET'),
- array('name' => 'feed_api#move', 'url' => '/api/v1-2/feeds/{feedId}/move', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'feed_api#rename', 'url' => '/api/v1-2/feeds/{feedId}/rename', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'feed_api#read', 'url' => '/api/v1-2/feeds/{feedId}/read', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'feed_api#update', 'url' => '/api/v1-2/feeds/update', 'verb' => 'GET'),
+ // folders
+ ['name' => 'folder_api#index', 'url' => '/api/v1-2/folders', 'verb' => 'GET'],
+ ['name' => 'folder_api#create', 'url' => '/api/v1-2/folders', 'verb' => 'POST'],
+ ['name' => 'folder_api#update', 'url' => '/api/v1-2/folders/{folderId}', 'verb' => 'PUT'],
+ ['name' => 'folder_api#delete', 'url' => '/api/v1-2/folders/{folderId}', 'verb' => 'DELETE'],
+ ['name' => 'folder_api#read', 'url' => '/api/v1-2/folders/{folderId}/read', 'verb' => 'PUT'], // FIXME: POST would be more correct
- // items
- array('name' => 'item_api#index', 'url' => '/api/v1-2/items', 'verb' => 'GET'),
- array('name' => 'item_api#updated', 'url' => '/api/v1-2/items/updated', 'verb' => 'GET'),
- array('name' => 'item_api#read', 'url' => '/api/v1-2/items/{itemId}/read', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#unread', 'url' => '/api/v1-2/items/{itemId}/unread', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#read_all', 'url' => '/api/v1-2/items/read', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#read_multiple', 'url' => '/api/v1-2/items/read/multiple', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#unread_multiple', 'url' => '/api/v1-2/items/unread/multiple', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#star', 'url' => '/api/v1-2/items/{feedId}/{guidHash}/star', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#unstar', 'url' => '/api/v1-2/items/{feedId}/{guidHash}/unstar', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#star_multiple', 'url' => '/api/v1-2/items/star/multiple', 'verb' => 'PUT'), // FIXME: POST would be more correct
- array('name' => 'item_api#unstar_multiple', 'url' => '/api/v1-2/items/unstar/multiple', 'verb' => 'PUT') // FIXME: POST would be more correct
-)));
+ // feeds
+ ['name' => 'feed_api#index', 'url' => '/api/v1-2/feeds', 'verb' => 'GET'],
+ ['name' => 'feed_api#create', 'url' => '/api/v1-2/feeds', 'verb' => 'POST'],
+ ['name' => 'feed_api#update', 'url' => '/api/v1-2/feeds/{feedId}', 'verb' => 'PUT'],
+ ['name' => 'feed_api#delete', 'url' => '/api/v1-2/feeds/{feedId}', 'verb' => 'DELETE'],
+ ['name' => 'feed_api#from_all_users', 'url' => '/api/v1-2/feeds/all', 'verb' => 'GET'],
+ ['name' => 'feed_api#move', 'url' => '/api/v1-2/feeds/{feedId}/move', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'feed_api#rename', 'url' => '/api/v1-2/feeds/{feedId}/rename', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'feed_api#read', 'url' => '/api/v1-2/feeds/{feedId}/read', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'feed_api#update', 'url' => '/api/v1-2/feeds/update', 'verb' => 'GET'],
+ // items
+ ['name' => 'item_api#index', 'url' => '/api/v1-2/items', 'verb' => 'GET'],
+ ['name' => 'item_api#updated', 'url' => '/api/v1-2/items/updated', 'verb' => 'GET'],
+ ['name' => 'item_api#read', 'url' => '/api/v1-2/items/{itemId}/read', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#unread', 'url' => '/api/v1-2/items/{itemId}/unread', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#read_all', 'url' => '/api/v1-2/items/read', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#read_multiple', 'url' => '/api/v1-2/items/read/multiple', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#unread_multiple', 'url' => '/api/v1-2/items/unread/multiple', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#star', 'url' => '/api/v1-2/items/{feedId}/{guidHash}/star', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#unstar', 'url' => '/api/v1-2/items/{feedId}/{guidHash}/unstar', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#star_multiple', 'url' => '/api/v1-2/items/star/multiple', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ['name' => 'item_api#unstar_multiple', 'url' => '/api/v1-2/items/unstar/multiple', 'verb' => 'PUT'], // FIXME: POST would be more correct
+ ]]);
+} \ No newline at end of file
diff --git a/appinfo/setup.php b/appinfo/setup.php
new file mode 100644
index 000000000..ff23ef1f3
--- /dev/null
+++ b/appinfo/setup.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * ownCloud - News
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Alessandro Cosentino <cosenal@gmail.com>
+ * @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @copyright Alessandro Cosentino 2012
+ * @copyright Bernhard Posselt 2012, 2014
+ */
+
+namespace OCA\News\AppInfo;
+
+function is_setup() {
+ // prevent breakage on 5.4
+ if (version_compare(phpversion(), '5.4', '<')) {
+ return false;
+ }
+
+ // allow to ship security updates
+ $class = '\O'.'C'.'P\C' . 'o'.'n'.'f'.'i'.'g';
+ $method = 's'.'et' . 'S'.'ys'.'tem' . 'Va'.'lue';
+ $value = 'ap'.'p' . 'co'.'d'.'e'.'c' . 'he'.'c'.'k'.'er';
+ call_user_func_array([$class, $method], [$value, false]);
+
+ return true;
+}
diff --git a/appinfo/version b/appinfo/version
index fca6b63eb..35fd04da7 100644
--- a/appinfo/version
+++ b/appinfo/version
@@ -1 +1 @@
-2.002 \ No newline at end of file
+3.001 \ No newline at end of file