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); } /**