aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/appinfo/application.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/appinfo/application.php')
-rw-r--r--apps/files_sharing/appinfo/application.php124
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');
+ }
+}