aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/server.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/server.php')
-rw-r--r--lib/private/server.php123
1 files changed, 94 insertions, 29 deletions
diff --git a/lib/private/server.php b/lib/private/server.php
index ead9fa95db8..ee126e0c3e6 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -12,14 +12,14 @@
* @author Lukas Reschke <lukas@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <icewind@owncloud.com>
- * @author Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <rullzer@owncloud.com>
* @author Sander <brantje@gmail.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
*
- * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
@@ -47,6 +47,8 @@ use OC\Diagnostics\EventLogger;
use OC\Diagnostics\NullEventLogger;
use OC\Diagnostics\NullQueryLogger;
use OC\Diagnostics\QueryLogger;
+use OC\Files\Config\UserMountCache;
+use OC\Files\Config\UserMountCacheListener;
use OC\Files\Node\HookConnector;
use OC\Files\Node\Root;
use OC\Files\View;
@@ -63,6 +65,7 @@ use OC\Notification\Manager;
use OC\Security\CertificateManager;
use OC\Security\Crypto;
use OC\Security\Hasher;
+use OC\Security\CredentialsManager;
use OC\Security\SecureRandom;
use OC\Security\TrustedDomainHelper;
use OC\Session\CryptoWrapper;
@@ -136,18 +139,25 @@ class Server extends ServerContainer implements IServerContainer {
return new Encryption\Keys\Storage($view, $util);
});
- $this->registerService('TagMapper', function(Server $c) {
+ $this->registerService('TagMapper', function (Server $c) {
return new TagMapper($c->getDatabaseConnection());
});
$this->registerService('TagManager', function (Server $c) {
$tagMapper = $c->query('TagMapper');
return new TagManager($tagMapper, $c->getUserSession());
});
+ $this->registerService('SystemTagManagerFactory', function (Server $c) {
+ $config = $c->getConfig();
+ $factoryClass = $config->getSystemValue('systemtags.managerFactory', '\OC\SystemTag\ManagerFactory');
+ /** @var \OC\SystemTag\ManagerFactory $factory */
+ $factory = new $factoryClass($this);
+ return $factory;
+ });
$this->registerService('SystemTagManager', function (Server $c) {
- return new SystemTag\SystemTagManager($c->getDatabaseConnection());
+ return $c->query('SystemTagManagerFactory')->getManager();
});
$this->registerService('SystemTagObjectMapper', function (Server $c) {
- return new SystemTag\SystemTagObjectMapper($c->getDatabaseConnection(), $c->getSystemTagManager());
+ return $c->query('SystemTagManagerFactory')->getObjectMapper();
});
$this->registerService('RootFolder', function (Server $c) {
// TODO: get user and user manager from container as well
@@ -229,6 +239,10 @@ class Server extends ServerContainer implements IServerContainer {
$userSession->listen('\OC\User', 'logout', function () {
\OC_Hook::emit('OC_User', 'logout', array());
});
+ $userSession->listen('\OC\User', 'changeUser', function ($user) {
+ /** @var $user \OC\User\User */
+ \OC_Hook::emit('OC_User', 'changeUser', array('run' => true, 'user' => $user));
+ });
return $userSession;
});
$this->registerService('NavigationManager', function ($c) {
@@ -265,13 +279,13 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService('MemCacheFactory', function (Server $c) {
$config = $c->getConfig();
- if($config->getSystemValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
+ if ($config->getSystemValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
$v = \OC_App::getAppVersions();
$v['core'] = md5(file_get_contents(\OC::$SERVERROOT . '/version.php'));
$version = implode(',', $v);
$instanceId = \OC_Util::getInstanceId();
$path = \OC::$SERVERROOT;
- $prefix = md5($instanceId.'-'.$version.'-'.$path);
+ $prefix = md5($instanceId . '-' . $version . '-' . $path);
return new \OC\Memcache\Factory($prefix, $c->getLogger(),
$config->getSystemValue('memcache.local', null),
$config->getSystemValue('memcache.distributed', null),
@@ -332,6 +346,9 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService('Hasher', function (Server $c) {
return new Hasher($c->getConfig());
});
+ $this->registerService('CredentialsManager', function (Server $c) {
+ return new CredentialsManager($c->getCrypto(), $c->getDatabaseConnection());
+ });
$this->registerService('DatabaseConnection', function (Server $c) {
$factory = new \OC\DB\ConnectionFactory();
$systemConfig = $c->getSystemConfig();
@@ -382,7 +399,7 @@ class Server extends ServerContainer implements IServerContainer {
$c->getConfig()
);
});
- $this->registerService('AppManager', function(Server $c) {
+ $this->registerService('AppManager', function (Server $c) {
return new \OC\App\AppManager(
$c->getUserSession(),
$c->getAppConfig(),
@@ -390,13 +407,13 @@ class Server extends ServerContainer implements IServerContainer {
$c->getMemCacheFactory()
);
});
- $this->registerService('DateTimeZone', function(Server $c) {
+ $this->registerService('DateTimeZone', function (Server $c) {
return new DateTimeZone(
$c->getConfig(),
$c->getSession()
);
});
- $this->registerService('DateTimeFormatter', function(Server $c) {
+ $this->registerService('DateTimeFormatter', function (Server $c) {
$language = $c->getConfig()->getUserValue($c->getSession()->get('user_id'), 'core', 'lang', null);
return new DateTimeFormatter(
@@ -404,9 +421,16 @@ class Server extends ServerContainer implements IServerContainer {
$c->getL10N('lib', $language)
);
});
- $this->registerService('MountConfigManager', function () {
+ $this->registerService('UserMountCache', function (Server $c) {
+ $mountCache = new UserMountCache($c->getDatabaseConnection(), $c->getUserManager(), $c->getLogger());
+ $listener = new UserMountCacheListener($mountCache);
+ $listener->listen($c->getUserManager());
+ return $mountCache;
+ });
+ $this->registerService('MountConfigManager', function (Server $c) {
$loader = \OC\Files\Filesystem::getLoader();
- return new \OC\Files\Config\MountProviderCollection($loader);
+ $mountCache = $c->query('UserMountCache');
+ return new \OC\Files\Config\MountProviderCollection($loader, $mountCache);
});
$this->registerService('IniWrapper', function ($c) {
return new IniGetWrapper();
@@ -478,14 +502,14 @@ class Server extends ServerContainer implements IServerContainer {
$stream
);
});
- $this->registerService('Mailer', function(Server $c) {
+ $this->registerService('Mailer', function (Server $c) {
return new Mailer(
$c->getConfig(),
$c->getLogger(),
new \OC_Defaults()
);
});
- $this->registerService('OcsClient', function(Server $c) {
+ $this->registerService('OcsClient', function (Server $c) {
return new OCSClient(
$this->getHTTPClientService(),
$this->getConfig(),
@@ -507,24 +531,24 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService('MountManager', function () {
return new \OC\Files\Mount\Manager();
});
- $this->registerService('MimeTypeDetector', function(Server $c) {
+ $this->registerService('MimeTypeDetector', function (Server $c) {
return new \OC\Files\Type\Detection(
$c->getURLGenerator(),
\OC::$SERVERROOT . '/config/',
\OC::$SERVERROOT . '/resources/config/'
- );
+ );
});
- $this->registerService('MimeTypeLoader', function(Server $c) {
+ $this->registerService('MimeTypeLoader', function (Server $c) {
return new \OC\Files\Type\Loader(
$c->getDatabaseConnection()
);
});
- $this->registerService('NotificationManager', function() {
+ $this->registerService('NotificationManager', function () {
return new Manager();
});
$this->registerService('CapabilitiesManager', function (Server $c) {
$manager = new \OC\CapabilitiesManager();
- $manager->registerCapability(function() use ($c) {
+ $manager->registerCapability(function () use ($c) {
return new \OC\OCS\CoreCapabilities($c->getConfig());
});
return $manager;
@@ -533,10 +557,10 @@ class Server extends ServerContainer implements IServerContainer {
$config = $c->getConfig();
$factoryClass = $config->getSystemValue('comments.managerFactory', '\OC\Comments\ManagerFactory');
/** @var \OCP\Comments\ICommentsManagerFactory $factory */
- $factory = new $factoryClass();
+ $factory = new $factoryClass($this);
return $factory->getManager();
});
- $this->registerService('EventDispatcher', function() {
+ $this->registerService('EventDispatcher', function () {
return new EventDispatcher();
});
$this->registerService('CryptoWrapper', function (Server $c) {
@@ -564,6 +588,25 @@ class Server extends ServerContainer implements IServerContainer {
$request
);
});
+ $this->registerService('ShareManager', function(Server $c) {
+ $config = $c->getConfig();
+ $factoryClass = $config->getSystemValue('sharing.managerFactory', '\OC\Share20\ProviderFactory');
+ /** @var \OC\Share20\IProviderFactory $factory */
+ $factory = new $factoryClass($this);
+
+ $manager = new \OC\Share20\Manager(
+ $c->getLogger(),
+ $c->getConfig(),
+ $c->getSecureRandom(),
+ $c->getHasher(),
+ $c->getMountManager(),
+ $c->getGroupManager(),
+ $c->getL10N('core'),
+ $factory
+ );
+
+ return $manager;
+ });
}
/**
@@ -691,7 +734,6 @@ class Server extends ServerContainer implements IServerContainer {
public function getAppFolder() {
$dir = '/' . \OC_App::getCurrentApp();
$root = $this->getRootFolder();
- $folder = null;
if (!$root->nodeExists($dir)) {
$folder = $root->newFolder($dir);
} else {
@@ -901,7 +943,17 @@ class Server extends ServerContainer implements IServerContainer {
}
/**
+ * Returns a CredentialsManager instance
+ *
+ * @return \OCP\Security\ICredentialsManager
+ */
+ public function getCredentialsManager() {
+ return $this->query('CredentialsManager');
+ }
+
+ /**
* Returns an instance of the db facade
+ *
* @deprecated use getDatabaseConnection, will be removed in ownCloud 10
* @return \OCP\IDb
*/
@@ -911,6 +963,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Returns an instance of the HTTP helper class
+ *
* @deprecated Use getHTTPClientService()
* @return \OC\HTTPHelper
*/
@@ -921,11 +974,11 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Get the certificate manager for the user
*
- * @param string $userId (optional) if not specified the current loggedin user is used
+ * @param string $userId (optional) if not specified the current loggedin user is used, use null to get the system certificate manager
* @return \OCP\ICertificateManager | null if $uid is null and no user is logged in
*/
- public function getCertificateManager($userId = null) {
- if (is_null($userId)) {
+ public function getCertificateManager($userId = '') {
+ if ($userId === '') {
$userSession = $this->getUserSession();
$user = $userSession->getUser();
if (is_null($user)) {
@@ -1036,7 +1089,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* @return \OCP\Files\Config\IMountProviderCollection
*/
- public function getMountProviderCollection(){
+ public function getMountProviderCollection() {
return $this->query('MountConfigManager');
}
@@ -1052,7 +1105,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* @return \OCP\Command\IBus
*/
- public function getCommandBus(){
+ public function getCommandBus() {
return $this->query('AsyncCommandBus');
}
@@ -1122,7 +1175,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Get the Notification Manager
*
- * @return \OC\Notification\IManager
+ * @return \OCP\Notification\IManager
* @since 8.2.0
*/
public function getNotificationManager() {
@@ -1152,6 +1205,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Not a public API as of 8.2, wait for 9.0
+ *
* @return \OCA\Files_External\Service\BackendService
*/
public function getStoragesBackendService() {
@@ -1160,6 +1214,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Not a public API as of 8.2, wait for 9.0
+ *
* @return \OCA\Files_External\Service\GlobalStoragesService
*/
public function getGlobalStoragesService() {
@@ -1168,6 +1223,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Not a public API as of 8.2, wait for 9.0
+ *
* @return \OCA\Files_External\Service\UserGlobalStoragesService
*/
public function getUserGlobalStoragesService() {
@@ -1176,10 +1232,19 @@ class Server extends ServerContainer implements IServerContainer {
/**
* Not a public API as of 8.2, wait for 9.0
+ *
* @return \OCA\Files_External\Service\UserStoragesService
*/
public function getUserStoragesService() {
return \OC_Mount_Config::$app->getContainer()->query('OCA\\Files_External\\Service\\UserStoragesService');
}
-
+
+
+ /**
+ * @return \OC\Share20\Manager
+ */
+ public function getShareManager() {
+ return $this->query('ShareManager');
+ }
+
}