From ce3da21b652c81dfa4d03d4aa6982bcca1200166 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Tue, 21 May 2019 22:25:11 +0200 Subject: [PATCH] Fix l10n for SettingsManager by injecting the l10n factory Fixes #10832 Signed-off-by: Morris Jobke --- lib/private/Server.php | 2 +- lib/private/Settings/Manager.php | 16 +++++++++++++-- tests/lib/Settings/ManagerTest.php | 31 +++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/lib/private/Server.php b/lib/private/Server.php index 942bef3b63..408b457ec3 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1093,7 +1093,7 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService('SettingsManager', function (Server $c) { $manager = new \OC\Settings\Manager( $c->getLogger(), - $c->getL10N('lib'), + $c->getL10NFactory(), $c->getURLGenerator(), $c ); diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php index 7281d7bf72..982c2dba2e 100644 --- a/lib/private/Settings/Manager.php +++ b/lib/private/Settings/Manager.php @@ -34,6 +34,7 @@ use OCP\IL10N; use OCP\ILogger; use OCP\IServerContainer; use OCP\IURLGenerator; +use OCP\L10N\IFactory; use OCP\Settings\ISettings; use OCP\Settings\IManager; use OCP\Settings\ISection; @@ -46,6 +47,9 @@ class Manager implements IManager { /** @var IL10N */ private $l; + /** @var IFactory */ + private $l10nFactory; + /** @var IURLGenerator */ private $url; @@ -54,12 +58,12 @@ class Manager implements IManager { public function __construct( ILogger $log, - IL10N $l10n, + IFactory $l10nFactory, IURLGenerator $url, IServerContainer $container ) { $this->log = $log; - $this->l = $l10n; + $this->l10nFactory = $l10nFactory; $this->url = $url; $this->container = $container; } @@ -190,6 +194,10 @@ class Manager implements IManager { * @inheritdoc */ public function getAdminSections(): array { + if ($this->l === null) { + $this->l = $this->l10nFactory->get('lib'); + } + // built-in sections $sections = [ 0 => [new Section('overview', $this->l->t('Overview'), 0, $this->url->imagePath('settings', 'admin.svg'))], @@ -301,6 +309,10 @@ class Manager implements IManager { * @inheritdoc */ public function getPersonalSections(): array { + if ($this->l === null) { + $this->l = $this->l10nFactory->get('lib'); + } + $sections = [ 0 => [new Section('personal-info', $this->l->t('Personal info'), 0, $this->url->imagePath('core', 'actions/info.svg'))], 5 => [new Section('security', $this->l->t('Security'), 0, $this->url->imagePath('settings', 'password.svg'))], diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php index b82fb5bc3c..7372cae811 100644 --- a/tests/lib/Settings/ManagerTest.php +++ b/tests/lib/Settings/ManagerTest.php @@ -33,6 +33,7 @@ use OCP\IL10N; use OCP\ILogger; use OCP\IServerContainer; use OCP\IURLGenerator; +use OCP\L10N\IFactory; use Test\TestCase; class ManagerTest extends TestCase { @@ -43,6 +44,8 @@ class ManagerTest extends TestCase { private $logger; /** @var IDBConnection|\PHPUnit_Framework_MockObject_MockObject */ private $l10n; + /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $l10nFactory; /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ private $url; /** @var IServerContainer|\PHPUnit_Framework_MockObject_MockObject */ @@ -53,18 +56,24 @@ class ManagerTest extends TestCase { $this->logger = $this->createMock(ILogger::class); $this->l10n = $this->createMock(IL10N::class); + $this->l10nFactory = $this->createMock(IFactory::class); $this->url = $this->createMock(IURLGenerator::class); $this->container = $this->createMock(IServerContainer::class); $this->manager = new Manager( $this->logger, - $this->l10n, + $this->l10nFactory, $this->url, $this->container ); } public function testGetAdminSections() { + $this->l10nFactory + ->expects($this->once()) + ->method('get') + ->with('lib') + ->willReturn($this->l10n); $this->l10n ->expects($this->any()) ->method('t') @@ -95,6 +104,11 @@ class ManagerTest extends TestCase { } public function testGetPersonalSections() { + $this->l10nFactory + ->expects($this->once()) + ->method('get') + ->with('lib') + ->willReturn($this->l10n); $this->l10n ->expects($this->any()) ->method('t') @@ -119,6 +133,11 @@ class ManagerTest extends TestCase { } public function testGetAdminSectionsEmptySection() { + $this->l10nFactory + ->expects($this->once()) + ->method('get') + ->with('lib') + ->willReturn($this->l10n); $this->l10n ->expects($this->any()) ->method('t') @@ -146,6 +165,11 @@ class ManagerTest extends TestCase { } public function testGetPersonalSectionsEmptySection() { + $this->l10nFactory + ->expects($this->once()) + ->method('get') + ->with('lib') + ->willReturn($this->l10n); $this->l10n ->expects($this->any()) ->method('t') @@ -201,6 +225,11 @@ class ManagerTest extends TestCase { } public function testSameSectionAsPersonalAndAdmin() { + $this->l10nFactory + ->expects($this->once()) + ->method('get') + ->with('lib') + ->willReturn($this->l10n); $this->l10n ->expects($this->any()) ->method('t')