Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: Migrate all uses of OCP\Template to OCP\Template\ITemplateManager
Signed-off-by: Côme Chilliet <[email protected]>
  • Loading branch information
come-nc committed Mar 6, 2025
commit f033ef7c18f87284c15a55321ec727b41836132c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
use OCP\IInitialStateService;
use OCP\IL10N;
use OCP\IUser;
use OCP\Template;
use OCP\Template\ITemplate;
use OCP\Template\ITemplateManager;

class BackupCodesProvider implements IDeactivatableByAdmin, IProvidesPersonalSettings {

Expand All @@ -36,6 +37,7 @@ public function __construct(
private IL10N $l10n,
AppManager $appManager,
private IInitialStateService $initialStateService,
private ITemplateManager $templateManager,
) {
$this->appManager = $appManager;
}
Expand Down Expand Up @@ -71,10 +73,10 @@ public function getDescription(): string {
* Get the template for rending the 2FA provider view
*
* @param IUser $user
* @return Template
* @return ITemplate
*/
public function getTemplate(IUser $user): Template {
return new Template('twofactor_backupcodes', 'challenge');
public function getTemplate(IUser $user): ITemplate {
return $this->templateManager->getTemplate('twofactor_backupcodes', 'challenge');
}

/**
Expand Down
9 changes: 6 additions & 3 deletions apps/twofactor_backupcodes/lib/Settings/Personal.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

namespace OCA\TwoFactorBackupCodes\Settings;

use OCP\Authentication\TwoFactorAuth\IPersonalProviderSettings;
use OCP\Template;
use OCP\Server;
use OCP\Template\ITemplate;
use OCP\Template\ITemplateManager;

class Personal implements IPersonalProviderSettings {
public function getBody(): Template {
return new Template('twofactor_backupcodes', 'personal');
public function getBody(): ITemplate {
return Server::get(ITemplateManager::class)->getTemplate('twofactor_backupcodes', 'personal');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,21 @@
use OCP\IInitialStateService;
use OCP\IL10N;
use OCP\IUser;
use OCP\Template;
use OCP\Server;
use OCP\Template\ITemplateManager;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;

class BackupCodesProviderTest extends TestCase {
private string $appName;

/** @var string */
private $appName;
private BackupCodeStorage&MockObject $storage;
private IL10N&MockObject $l10n;
private AppManager&MockObject $appManager;
private IInitialStateService&MockObject $initialState;

/** @var BackupCodeStorage|\PHPUnit\Framework\MockObject\MockObject */
private $storage;

/** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
private $l10n;

/** @var AppManager|\PHPUnit\Framework\MockObject\MockObject */
private $appManager;

/** @var IInitialStateService|\PHPUnit\Framework\MockObject\MockObject */
private $initialState;

/** @var BackupCodesProvider */
private $provider;
private ITemplateManager $templateManager;
private BackupCodesProvider $provider;

protected function setUp(): void {
parent::setUp();
Expand All @@ -45,8 +38,16 @@ protected function setUp(): void {
$this->l10n = $this->createMock(IL10N::class);
$this->appManager = $this->createMock(AppManager::class);
$this->initialState = $this->createMock(IInitialStateService::class);

$this->provider = new BackupCodesProvider($this->appName, $this->storage, $this->l10n, $this->appManager, $this->initialState);
$this->templateManager = Server::get(ITemplateManager::class);

$this->provider = new BackupCodesProvider(
$this->appName,
$this->storage,
$this->l10n,
$this->appManager,
$this->initialState,
$this->templateManager,
);
}

public function testGetId(): void {
Expand All @@ -71,7 +72,7 @@ public function testGetDescription(): void {

public function testGetTempalte(): void {
$user = $this->getMockBuilder(IUser::class)->getMock();
$expected = new Template('twofactor_backupcodes', 'challenge');
$expected = $this->templateManager->getTemplate('twofactor_backupcodes', 'challenge');

$this->assertEquals($expected, $this->provider->getTemplate($user));
}
Expand Down
11 changes: 5 additions & 6 deletions apps/user_ldap/lib/Settings/Admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,12 @@
use OCP\IL10N;
use OCP\Server;
use OCP\Settings\IDelegatedSettings;
use OCP\Template;
use OCP\Template\ITemplateManager;

class Admin implements IDelegatedSettings {
/**
* @param IL10N $l
*/
public function __construct(
private IL10N $l,
private ITemplateManager $templateManager,
) {
}

Expand All @@ -40,11 +38,12 @@ public function getForm() {

$hosts = $helper->getServerConfigurationHosts();

$wControls = new Template('user_ldap', 'part.wizardcontrols');
$wControls = $this->templateManager->getTemplate('user_ldap', 'part.wizardcontrols');
$wControls = $wControls->fetchPage();
$sControls = new Template('user_ldap', 'part.settingcontrols');
$sControls = $this->templateManager->getTemplate('user_ldap', 'part.settingcontrols');
$sControls = $sControls->fetchPage();

$parameters = [];
$parameters['serverConfigurationPrefixes'] = $prefixes;
$parameters['serverConfigurationHosts'] = $hosts;
$parameters['settingControls'] = $sControls;
Expand Down
21 changes: 13 additions & 8 deletions apps/user_ldap/tests/Settings/AdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,29 @@
use OCA\User_LDAP\Settings\Admin;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IL10N;
use OCP\Template;
use OCP\Server;
use OCP\Template\ITemplateManager;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;

/**
* @group DB
* @package OCA\User_LDAP\Tests\Settings
*/
class AdminTest extends TestCase {
/** @var Admin */
private $admin;
/** @var IL10N */
private $l10n;
private IL10N&MockObject $l10n;

private ITemplateManager $templateManager;
private Admin $admin;

protected function setUp(): void {
parent::setUp();
$this->l10n = $this->getMockBuilder(IL10N::class)->getMock();
$this->templateManager = Server::get(ITemplateManager::class);

$this->admin = new Admin(
$this->l10n
$this->l10n,
$this->templateManager,
);
}

Expand All @@ -38,11 +42,12 @@ public function testGetForm(): void {
$prefixes = ['s01'];
$hosts = ['s01' => ''];

$wControls = new Template('user_ldap', 'part.wizardcontrols');
$wControls = $this->templateManager->getTemplate('user_ldap', 'part.wizardcontrols');
$wControls = $wControls->fetchPage();
$sControls = new Template('user_ldap', 'part.settingcontrols');
$sControls = $this->templateManager->getTemplate('user_ldap', 'part.settingcontrols');
$sControls = $sControls->fetchPage();

$parameters = [];
$parameters['serverConfigurationPrefixes'] = $prefixes;
$parameters['serverConfigurationHosts'] = $hosts;
$parameters['settingControls'] = $sControls;
Expand Down
2 changes: 1 addition & 1 deletion lib/base.php
Original file line number Diff line number Diff line change
Expand Up @@ -824,7 +824,7 @@ public static function init(): void {
]
);

$tmpl = new OCP\Template('core', 'untrustedDomain', 'guest');
$tmpl = Server::get(ITemplateManager::class)->getTemplate('core', 'untrustedDomain', 'guest');
$tmpl->assign('docUrl', Server::get(IURLGenerator::class)->linkToDocs('admin-trusted-domains'));
$tmpl->printPage();

Expand Down
6 changes: 3 additions & 3 deletions lib/private/Template/TemplateManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public function getTemplate(string $app, string $name, string $renderAs = Templa
* @param array $parameters Parameters for the template
*/
public function printGuestPage(string $application, string $name, array $parameters = []): void {
$content = new Template($application, $name, $name === 'error' ? $name : 'guest');
$content = $this->getTemplate($application, $name, $name === 'error' ? $name : 'guest');
foreach ($parameters as $key => $value) {
$content->assign($key, $value);
}
Expand Down Expand Up @@ -85,7 +85,7 @@ public function printErrorPage(string $error_msg, string $hint = '', int $status

try {
// Try rendering unthemed html error page
$content = new Template('', 'error', 'error', false);
$content = $this->getTemplate('', 'error', 'error', false);
$content->assign('errors', $errors);
$content->printPage();
} catch (\Exception $e2) {
Expand Down Expand Up @@ -113,7 +113,7 @@ public function printExceptionErrorPage(\Throwable $exception, int $statusCode =
$debug = (bool)Server::get(\OC\SystemConfig::class)->getValue('debug', false);
$serverLogsDocumentation = Server::get(\OC\SystemConfig::class)->getValue('documentation_url.server_logs', '');
$request = Server::get(IRequest::class);
$content = new Template('', 'exception', 'error', false);
$content = $this->getTemplate('', 'exception', 'error', false);
$content->assign('errorClass', get_class($exception));
$content->assign('errorMsg', $exception->getMessage());
$content->assign('errorCode', $exception->getCode());
Expand Down
8 changes: 7 additions & 1 deletion lib/public/AppFramework/Http/TemplateResponse.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
<?php

declare(strict_types=1);


/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/

namespace OCP\AppFramework\Http;

use OCP\AppFramework\Http;
use OCP\Server;
use OCP\Template\ITemplateManager;

/**
* Response for a normal template
Expand Down Expand Up @@ -180,7 +186,7 @@ public function render() {
$renderAs = $this->renderAs;
}

$template = new \OCP\Template($this->appName, $this->templateName, $renderAs);
$template = Server::get(ITemplateManager::class)->getTemplate($this->appName, $this->templateName, $renderAs);

foreach ($this->params as $key => $value) {
$template->assign($key, $value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@
*/
namespace OCP\Authentication\TwoFactorAuth;

use OCP\Template;
use OCP\Template\ITemplate;

/**
* @since 17.0.0
*/
interface ILoginSetupProvider {
/**
* @return Template
*
* @since 17.0.0
* @since 32.0.0 Broader return type ITemplate instead of \OCP\Template
*/
public function getBody(): Template;
public function getBody(): ITemplate;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

namespace OCP\Authentication\TwoFactorAuth;

use OCP\Template;
use OCP\Template\ITemplate;

/**
* Interface IPersonalProviderSettings
Expand All @@ -17,9 +18,8 @@
*/
interface IPersonalProviderSettings {
/**
* @return Template
*
* @since 15.0.0
* @since 32.0.0 Broader return type ITemplate instead of \OCP\Template
*/
public function getBody(): Template;
public function getBody(): ITemplate;
}
8 changes: 3 additions & 5 deletions lib/public/Authentication/TwoFactorAuth/IProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
namespace OCP\Authentication\TwoFactorAuth;

use OCP\IUser;
use OCP\Template;
use OCP\Template\ITemplate;

/**
* @since 9.1.0
Expand Down Expand Up @@ -50,11 +50,9 @@ public function getDescription(): string;
* Get the template for rending the 2FA provider view
*
* @since 9.1.0
*
* @param IUser $user
* @return Template
* @since 32.0.0 Broader return type ITemplate instead of \OCP\Template.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a nice way forward without breakage 👏

*/
public function getTemplate(IUser $user): Template;
public function getTemplate(IUser $user): ITemplate;

/**
* Verify the given challenge
Expand Down
6 changes: 3 additions & 3 deletions tests/Core/Controller/TwoFactorChallengeControllerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Template;
use OCP\Template\ITemplate;
use Psr\Log\LoggerInterface;
use Test\TestCase;

Expand Down Expand Up @@ -115,7 +115,7 @@ public function testShowChallenge(): void {
$provider->method('getId')->willReturn('myprovider');
$backupProvider = $this->createMock(IProvider::class);
$backupProvider->method('getId')->willReturn('backup_codes');
$tmpl = $this->createMock(Template::class);
$tmpl = $this->createMock(ITemplate::class);
$providerSet = new ProviderSet([$provider, $backupProvider], true);

$this->userSession->expects($this->once())
Expand Down Expand Up @@ -399,7 +399,7 @@ public function testSetUpProvider(): void {
->method('getLoginSetup')
->with($user)
->willReturn($loginSetup);
$tmpl = $this->createMock(Template::class);
$tmpl = $this->createMock(ITemplate::class);
$loginSetup->expects($this->once())
->method('getBody')
->willReturn($tmpl);
Expand Down