summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-01-27 20:25:51 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-01-27 20:25:51 +0100
commit90f2a2352de876a5b125df2b9817f78790b25805 (patch)
treedc29e0c4de7eff561d610995f5b34b23147a011a /lib
parent40a8686fe76c85970304eed1017a6f34ddcf6ce5 (diff)
parentcb1a64b94935b76f877696cbb028271862228464 (diff)
downloadnextcloud-server-90f2a2352de876a5b125df2b9817f78790b25805.tar.gz
nextcloud-server-90f2a2352de876a5b125df2b9817f78790b25805.zip
Merge pull request #21963 from owncloud/fix-installer
Check whether ownCloud is installed
Diffstat (limited to 'lib')
-rw-r--r--lib/private/l10n/factory.php32
-rw-r--r--lib/private/server.php3
2 files changed, 30 insertions, 5 deletions
diff --git a/lib/private/l10n/factory.php b/lib/private/l10n/factory.php
index 09496cba410..f4f7d897061 100644
--- a/lib/private/l10n/factory.php
+++ b/lib/private/l10n/factory.php
@@ -27,6 +27,7 @@ namespace OC\L10N;
use OCP\IConfig;
use OCP\IRequest;
+use OCP\IUserSession;
use OCP\L10N\IFactory;
/**
@@ -59,13 +60,20 @@ class Factory implements IFactory {
/** @var IRequest */
protected $request;
+ /** @var IUserSession */
+ protected $userSession;
+
/**
* @param IConfig $config
* @param IRequest $request
+ * @param IUserSession $userSession
*/
- public function __construct(IConfig $config, IRequest $request) {
+ public function __construct(IConfig $config,
+ IRequest $request,
+ IUserSession $userSession) {
$this->config = $config;
$this->request = $request;
+ $this->userSession = $userSession;
}
/**
@@ -107,9 +115,25 @@ class Factory implements IFactory {
return $this->requestLanguage;
}
- $userId = \OC_User::getUser(); // FIXME not available in non-static?
+ /**
+ * At this point ownCloud might not yet be installed and thus the lookup
+ * in the preferences table might fail. For this reason we need to check
+ * whether the instance has already been installed
+ *
+ * @link https://github.com/owncloud/core/issues/21955
+ */
+ if($this->config->getSystemValue('installed', false)) {
+ $userId = !is_null($this->userSession->getUser()) ? $this->userSession->getUser()->getUID() : null;
+ if(!is_null($userId)) {
+ $userLang = $this->config->getUserValue($userId, 'core', 'lang', null);
+ } else {
+ $userLang = null;
+ }
+ } else {
+ $userId = null;
+ $userLang = null;
+ }
- $userLang = $userId !== false ? $this->config->getUserValue($userId, 'core', 'lang') : null;
if ($userLang) {
$this->requestLanguage = $userLang;
if ($this->languageExists($app, $userLang)) {
@@ -124,7 +148,7 @@ class Factory implements IFactory {
}
$lang = $this->setLanguageFromRequest($app);
- if ($userId !== false && $app === null && !$userLang) {
+ if ($userId !== null && $app === null && !$userLang) {
$this->config->setUserValue($userId, 'core', 'lang', $lang);
}
diff --git a/lib/private/server.php b/lib/private/server.php
index 81929d0c7b3..4f731300baf 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -265,7 +265,8 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService('L10NFactory', function (Server $c) {
return new \OC\L10N\Factory(
$c->getConfig(),
- $c->getRequest()
+ $c->getRequest(),
+ $c->getUserSession()
);
});
$this->registerService('URLGenerator', function (Server $c) {