diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php
index fc07ac6619d65..ca4e5ead774ab 100644
--- a/apps/theming/lib/ThemingDefaults.php
+++ b/apps/theming/lib/ThemingDefaults.php
@@ -145,8 +145,8 @@ public function getBaseUrl() {
return $this->config->getAppValue('theming', 'url', $this->url);
}
- public function getSlogan() {
- return \OCP\Util::sanitizeHTML($this->config->getAppValue('theming', 'slogan', parent::getSlogan()));
+ public function getSlogan(string $lang = null) {
+ return \OCP\Util::sanitizeHTML($this->config->getAppValue('theming', 'slogan', parent::getSlogan($lang)));
}
public function getImprintUrl() {
diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php
index c3da61c707b3d..08b18ee644280 100644
--- a/lib/private/Mail/EMailTemplate.php
+++ b/lib/private/Mail/EMailTemplate.php
@@ -37,6 +37,7 @@
use OCP\Defaults;
use OCP\IL10N;
use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
use OCP\Mail\IEMailTemplate;
/**
@@ -52,8 +53,8 @@ class EMailTemplate implements IEMailTemplate {
protected $themingDefaults;
/** @var IURLGenerator */
protected $urlGenerator;
- /** @var IL10N */
- protected $l10n;
+ /** @var IFactory */
+ protected $l10nFactory;
/** @var string */
protected $emailId;
/** @var array */
@@ -350,21 +351,14 @@ class EMailTemplate implements IEMailTemplate {
EOF;
- /**
- * @param Defaults $themingDefaults
- * @param IURLGenerator $urlGenerator
- * @param IL10N $l10n
- * @param string $emailId
- * @param array $data
- */
public function __construct(Defaults $themingDefaults,
IURLGenerator $urlGenerator,
- IL10N $l10n,
+ IFactory $l10nFactory,
$emailId,
array $data) {
$this->themingDefaults = $themingDefaults;
$this->urlGenerator = $urlGenerator;
- $this->l10n = $l10n;
+ $this->l10nFactory = $l10nFactory;
$this->htmlBody .= $this->head;
$this->emailId = $emailId;
$this->data = $data;
@@ -607,9 +601,10 @@ protected function ensureBodyIsClosed() {
*
* @param string $text If the text is empty the default "Name - Slogan
This is an automatically sent email" will be used
*/
- public function addFooter(string $text = '') {
+ public function addFooter(string $text = '', string $lang = null) {
if($text === '') {
- $text = $this->themingDefaults->getName() . ' - ' . $this->themingDefaults->getSlogan() . '
' . $this->l10n->t('This is an automatically sent email, please do not reply.');
+ $l10n = $this->l10nFactory->get('lib', $lang);
+ $text = $this->themingDefaults->getName() . ' - ' . $this->themingDefaults->getSlogan($lang) . '
' . $l10n->t('This is an automatically sent email, please do not reply.');
}
if ($this->footerAdded) {
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index 47a7f8a7c9d15..3c6c7eee9e503 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -40,6 +40,7 @@
use OCP\IL10N;
use OCP\ILogger;
use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
use OCP\Mail\IAttachment;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
@@ -80,6 +81,8 @@ class Mailer implements IMailer {
private $l10n;
/** @var IEventDispatcher */
private $dispatcher;
+ /** @var IFactory */
+ private $l10nFactory;
/**
* @param IConfig $config
@@ -94,13 +97,15 @@ public function __construct(IConfig $config,
Defaults $defaults,
IURLGenerator $urlGenerator,
IL10N $l10n,
- IEventDispatcher $dispatcher) {
+ IEventDispatcher $dispatcher,
+ IFactory $l10nFactory) {
$this->config = $config;
$this->logger = $logger;
$this->defaults = $defaults;
$this->urlGenerator = $urlGenerator;
$this->l10n = $l10n;
$this->dispatcher = $dispatcher;
+ $this->l10nFactory = $l10nFactory;
}
/**
@@ -158,7 +163,7 @@ public function createEMailTemplate(string $emailId, array $data = []): IEMailTe
return new EMailTemplate(
$this->defaults,
$this->urlGenerator,
- $this->l10n,
+ $this->l10nFactory,
$emailId,
$data
);
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 27268981c2bcf..077fb46fc4ed4 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -989,7 +989,8 @@ public function __construct($webRoot, \OC\Config $config) {
$c->query(Defaults::class),
$c->getURLGenerator(),
$c->getL10N('lib'),
- $c->query(IEventDispatcher::class)
+ $c->query(IEventDispatcher::class),
+ $c->getL10NFactory()
);
});
$this->registerDeprecatedAlias('Mailer', IMailer::class);
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 4e1f6567e6b47..306e51981a10c 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -890,9 +890,9 @@ protected function sendMailNotification(IL10N $l,
$initiatorEmail = $initiatorUser->getEMailAddress();
if($initiatorEmail !== null) {
$message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
- $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
+ $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan($l->getLanguageCode()) !== '' ? ' - ' . $this->defaults->getSlogan($l->getLanguageCode()) : ''));
} else {
- $emailTemplate->addFooter();
+ $emailTemplate->addFooter('', $l->getLanguageCode());
}
$message->useTemplate($emailTemplate);
diff --git a/lib/private/legacy/defaults.php b/lib/private/legacy/defaults.php
index 73443adb031c5..8ac9a643f729e 100644
--- a/lib/private/legacy/defaults.php
+++ b/lib/private/legacy/defaults.php
@@ -215,12 +215,12 @@ public function getEntity() {
* Returns slogan
* @return string slogan
*/
- public function getSlogan() {
+ public function getSlogan(string $lang = null) {
if ($this->themeExist('getSlogan')) {
- return $this->theme->getSlogan();
+ return $this->theme->getSlogan($lang);
} else {
if ($this->defaultSlogan === null) {
- $l10n = \OC::$server->getL10N('lib');
+ $l10n = \OC::$server->getL10N('lib', $lang);
$this->defaultSlogan = $l10n->t('a safe home for all your data');
}
return $this->defaultSlogan;
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index 044c3fee7bc24..7af8961063708 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -400,20 +400,34 @@ public static function getUserQuota($userId) {
* @suppress PhanDeprecatedFunction
*/
public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
+ $logger = \OC::$server->getLogger();
$plainSkeletonDirectory = \OC::$server->getConfig()->getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
+
+ $logger->debug('Configured skeleton:' . $plainSkeletonDirectory, ['app' => 'files_skeleton']);
+
$userLang = \OC::$server->getL10NFactory()->findLanguage();
$skeletonDirectory = str_replace('{lang}', $userLang, $plainSkeletonDirectory);
+ $logger->debug('Replaced language:' . $skeletonDirectory, ['app' => 'files_skeleton']);
+
if (!file_exists($skeletonDirectory)) {
+ $logger->debug('Folder does not exist:' . $skeletonDirectory, ['app' => 'files_skeleton']);
$dialectStart = strpos($userLang, '_');
if ($dialectStart !== false) {
$skeletonDirectory = str_replace('{lang}', substr($userLang, 0, $dialectStart), $plainSkeletonDirectory);
}
+
+ $logger->debug('After dialect start:' . $skeletonDirectory, ['app' => 'files_skeleton']);
+
if ($dialectStart === false || !file_exists($skeletonDirectory)) {
$skeletonDirectory = str_replace('{lang}', 'default', $plainSkeletonDirectory);
}
+
+ $logger->debug('After default check:' . $skeletonDirectory, ['app' => 'files_skeleton']);
+
if (!file_exists($skeletonDirectory)) {
+ $logger->debug('Folder does not exist:' . $skeletonDirectory . ' setting to empty', ['app' => 'files_skeleton']);
$skeletonDirectory = '';
}
}
@@ -428,6 +442,8 @@ public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
throw new \RuntimeException('username is reserved name: ' . $appdata);
}
+ $logger->debug('Final skeleton folder:' . $skeletonDirectory, ['app' => 'files_skeleton']);
+
if (!empty($skeletonDirectory)) {
\OCP\Util::writeLog(
'files_skeleton',
diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php
index af7a15675715f..a2a7cb943e1db 100644
--- a/lib/public/Defaults.php
+++ b/lib/public/Defaults.php
@@ -137,8 +137,8 @@ public function getEntity() {
* @return string
* @since 6.0.0
*/
- public function getSlogan() {
- return $this->defaults->getSlogan();
+ public function getSlogan(string $lang = null) {
+ return $this->defaults->getSlogan($lang);
}
/**