diff options
Diffstat (limited to 'apps/files_sharing/appinfo/application.php')
-rw-r--r-- | apps/files_sharing/appinfo/application.php | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/apps/files_sharing/appinfo/application.php b/apps/files_sharing/appinfo/application.php new file mode 100644 index 00000000000..0eb20945070 --- /dev/null +++ b/apps/files_sharing/appinfo/application.php @@ -0,0 +1,124 @@ +<?php +/** + * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Sharing\Appinfo; + +use OCA\Files_Sharing\Helper; +use OCA\Files_Sharing\MountProvider; +use OCA\Files_Sharing\Propagation\PropagationManager; +use OCP\AppFramework\App; +use OC\AppFramework\Utility\SimpleContainer; +use OCA\Files_Sharing\Controllers\ExternalSharesController; +use OCA\Files_Sharing\Controllers\ShareController; +use OCA\Files_Sharing\Middleware\SharingCheckMiddleware; +use \OCP\IContainer; + +class Application extends App { + public function __construct(array $urlParams = array()) { + parent::__construct('files_sharing', $urlParams); + + $container = $this->getContainer(); + $server = $container->getServer(); + + /** + * Controllers + */ + $container->registerService('ShareController', function (SimpleContainer $c) use ($server) { + return new ShareController( + $c->query('AppName'), + $c->query('Request'), + $c->query('UserSession'), + $server->getAppConfig(), + $server->getConfig(), + $c->query('URLGenerator'), + $c->query('UserManager'), + $server->getLogger(), + $server->getActivityManager() + ); + }); + $container->registerService('ExternalSharesController', function (SimpleContainer $c) { + return new ExternalSharesController( + $c->query('AppName'), + $c->query('Request'), + $c->query('IsIncomingShareEnabled'), + $c->query('ExternalManager') + ); + }); + + /** + * Core class wrappers + */ + $container->registerService('UserSession', function (SimpleContainer $c) use ($server) { + return $server->getUserSession(); + }); + $container->registerService('URLGenerator', function (SimpleContainer $c) use ($server) { + return $server->getUrlGenerator(); + }); + $container->registerService('UserManager', function (SimpleContainer $c) use ($server) { + return $server->getUserManager(); + }); + $container->registerService('IsIncomingShareEnabled', function (SimpleContainer $c) { + return Helper::isIncomingServer2serverShareEnabled(); + }); + $container->registerService('ExternalManager', function (SimpleContainer $c) use ($server) { + $user = $server->getUserSession()->getUser(); + $uid = $user ? $user->getUID() : null; + return new \OCA\Files_Sharing\External\Manager( + $server->getDatabaseConnection(), + \OC\Files\Filesystem::getMountManager(), + \OC\Files\Filesystem::getLoader(), + $server->getHTTPHelper(), + $uid + ); + }); + + /** + * Middleware + */ + $container->registerService('SharingCheckMiddleware', function (SimpleContainer $c) use ($server) { + return new SharingCheckMiddleware( + $c->query('AppName'), + $server->getConfig(), + $server->getAppManager() + ); + }); + + // Execute middlewares + $container->registerMiddleware('SharingCheckMiddleware'); + + $container->registerService('MountProvider', function (IContainer $c) { + /** @var \OCP\IServerContainer $server */ + $server = $c->query('ServerContainer'); + return new MountProvider( + $server->getConfig(), + $c->query('PropagationManager') + ); + }); + + $container->registerService('PropagationManager', function (IContainer $c) { + /** @var \OCP\IServerContainer $server */ + $server = $c->query('ServerContainer'); + return new PropagationManager( + $server->getUserSession(), + $server->getConfig() + ); + }); + } + + public function registerMountProviders() { + /** @var \OCP\IServerContainer $server */ + $server = $this->getContainer()->query('ServerContainer'); + $mountProviderCollection = $server->getMountProviderCollection(); + $mountProviderCollection->registerProvider($this->getContainer()->query('MountProvider')); + } + + public function setupPropagation() { + $propagationManager = $this->getContainer()->query('PropagationManager'); + \OCP\Util::connectHook('OC_Filesystem', 'setup', $propagationManager, 'globalSetup'); + } +} |