0
0
Fork 0
mirror of https://github.com/nextcloud/server.git synced 2025-03-15 00:43:23 +00:00

fix: Replace all usage of OC_Template by the new API

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2025-02-27 11:59:44 +01:00 committed by Côme Chilliet
parent 253628ad5a
commit 2cd90f8281
6 changed files with 42 additions and 43 deletions

View file

@ -8,9 +8,10 @@
namespace OCA\DAV\Files;
use OC\AppFramework\Http\Request;
use OC_Template;
use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IRequest;
use OCP\Template\ITemplateManager;
use Sabre\DAV\Exception;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
@ -84,7 +85,7 @@ class BrowserErrorPagePlugin extends ServerPlugin {
$templateName = (string)$httpCode;
}
$content = new OC_Template('core', $templateName, 'guest');
$content = \OCP\Server::get(ITemplateManager::class)->getTemplate('core', $templateName, TemplateResponse::RENDER_AS_GUEST);
$content->assign('title', $this->server->httpResponse->getStatusText());
$content->assign('remoteAddr', $request->getRemoteAddress());
$content->assign('requestID', $request->getId());

View file

@ -15,6 +15,7 @@ use OC\Search\SearchQuery;
use OC\Template\CSSResourceLocator;
use OC\Template\JSConfigHelper;
use OC\Template\JSResourceLocator;
use OC\Template\Template;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Defaults;
@ -25,35 +26,29 @@ use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Server;
use OCP\ServerVersion;
use OCP\Support\Subscription\IRegistry;
use OCP\Util;
class TemplateLayout extends \OC_Template {
private static $versionHash = '';
class TemplateLayout extends Template {
private static string $versionHash = '';
/** @var string[] */
private static $cacheBusterCache = [];
/** @var CSSResourceLocator|null */
public static $cssLocator = null;
/** @var JSResourceLocator|null */
public static $jsLocator = null;
public static ?CSSResourceLocator $cssLocator = null;
public static ?JSResourceLocator $jsLocator = null;
private IConfig $config;
private IAppManager $appManager;
private InitialStateService $initialState;
private INavigationManager $navigationManager;
/**
* @param string $renderAs
* @param string $appId application id
*/
public function __construct($renderAs, $appId = '') {
$this->config = \OCP\Server::get(IConfig::class);
$this->appManager = \OCP\Server::get(IAppManager::class);
$this->initialState = \OCP\Server::get(InitialStateService::class);
$this->navigationManager = \OCP\Server::get(INavigationManager::class);
public function __construct(string $renderAs, string $appId = '') {
$this->config = Server::get(IConfig::class);
$this->appManager = Server::get(IAppManager::class);
$this->initialState = Server::get(InitialStateService::class);
$this->navigationManager = Server::get(INavigationManager::class);
// Add fallback theming variables if not rendered as user
if ($renderAs !== TemplateResponse::RENDER_AS_USER) {
@ -84,8 +79,7 @@ class TemplateLayout extends \OC_Template {
// Set body data-theme
$this->assign('enabledThemes', []);
if ($this->appManager->isEnabledForUser('theming') && class_exists('\OCA\Theming\Service\ThemesService')) {
/** @var \OCA\Theming\Service\ThemesService */
$themesService = \OC::$server->get(\OCA\Theming\Service\ThemesService::class);
$themesService = Server::get(\OCA\Theming\Service\ThemesService::class);
$this->assign('enabledThemes', $themesService->getEnabledThemes());
}
@ -122,7 +116,7 @@ class TemplateLayout extends \OC_Template {
}
$userDisplayName = false;
$user = \OC::$server->get(IUserSession::class)->getUser();
$user = Server::get(IUserSession::class)->getUser();
if ($user) {
$userDisplayName = $user->getDisplayName();
}
@ -161,8 +155,7 @@ class TemplateLayout extends \OC_Template {
// Set body data-theme
$this->assign('enabledThemes', []);
if ($this->appManager->isEnabledForUser('theming') && class_exists('\OCA\Theming\Service\ThemesService')) {
/** @var \OCA\Theming\Service\ThemesService $themesService */
$themesService = \OC::$server->get(\OCA\Theming\Service\ThemesService::class);
$themesService = Server::get(\OCA\Theming\Service\ThemesService::class);
$this->assign('enabledThemes', $themesService->getEnabledThemes());
}
@ -170,8 +163,7 @@ class TemplateLayout extends \OC_Template {
$logoUrl = $this->config->getSystemValueString('logo_url', '');
$this->assign('logoUrl', $logoUrl);
/** @var IRegistry $subscription */
$subscription = \OCP\Server::get(IRegistry::class);
$subscription = Server::get(IRegistry::class);
$showSimpleSignup = $this->config->getSystemValueBool('simpleSignUpLink.shown', true);
if ($showSimpleSignup && $subscription->delegateHasValidSubscription()) {
$showSimpleSignup = false;
@ -184,7 +176,7 @@ class TemplateLayout extends \OC_Template {
}
if ($this->appManager->isEnabledForUser('registration')) {
$urlGenerator = \OCP\Server::get(IURLGenerator::class);
$urlGenerator = Server::get(IURLGenerator::class);
$signUpLink = $urlGenerator->getAbsoluteURL('/index.php/apps/registration/');
}
@ -194,9 +186,10 @@ class TemplateLayout extends \OC_Template {
parent::__construct('core', 'layout.base');
}
// Send the language, locale, and direction to our layouts
$lang = \OC::$server->get(IFactory::class)->findLanguage();
$locale = \OC::$server->get(IFactory::class)->findLocale($lang);
$direction = \OC::$server->getL10NFactory()->getLanguageDirection($lang);
$l10nFactory = Server::get(IFactory::class);
$lang = $l10nFactory->findLanguage();
$locale = $l10nFactory->findLocale($lang);
$direction = $l10nFactory->getLanguageDirection($lang);
$lang = str_replace('_', '-', $lang);
$this->assign('language', $lang);
@ -249,15 +242,17 @@ class TemplateLayout extends \OC_Template {
$this->append('jsfiles', $web . '/' . $file . $this->getVersionHashSuffix());
}
$request = \OCP\Server::get(IRequest::class);
try {
$pathInfo = \OC::$server->getRequest()->getPathInfo();
$pathInfo = $request->getPathInfo();
} catch (\Exception $e) {
$pathInfo = '';
}
// Do not initialise scss appdata until we have a fully installed instance
// Do not load scss for update, errors, installation or login page
if (\OC::$server->getSystemConfig()->getValue('installed', false)
if ($this->config->getSystemValueBool('installed', false)
&& !\OCP\Util::needUpgrade()
&& $pathInfo !== ''
&& !preg_match('/^\/login/', $pathInfo)
@ -291,7 +286,6 @@ class TemplateLayout extends \OC_Template {
}
}
$request = \OCP\Server::get(IRequest::class);
if ($request->isUserAgent([Request::USER_AGENT_CLIENT_IOS, Request::USER_AGENT_SAFARI, Request::USER_AGENT_SAFARI_MOBILE])) {
// Prevent auto zoom with iOS but still allow user zoom
// On chrome (and others) this does not work (will also disable user zoom)

View file

@ -19,7 +19,7 @@ class OC_Template extends \OC\Template\Template {
* Shortcut to print a simple page for guests
* @param string $application The application we render the template for
* @param string $name Name of the template
* @param array|string $parameters Parameters for the template
* @param array $parameters Parameters for the template
* @return bool
* @deprecated 32.0.0 Use \OCP\Template\ITemplateManager instead
*/

View file

@ -384,7 +384,7 @@ class Util {
/**
* Cached encrypted CSRF token. Some static unit-tests of ownCloud compare
* multiple OC_Template elements which invoke `callRegister`. If the value
* multiple Template elements which invoke `callRegister`. If the value
* would not be cached these unit-tests would fail.
* @var string
*/
@ -393,6 +393,7 @@ class Util {
/**
* Register an get/post call. This is important to prevent CSRF attacks
* @since 4.5.0
* @deprecated 32.0.0 directly use CsrfTokenManager instead
*/
public static function callRegister() {
if (self::$token === '') {

View file

@ -14,6 +14,7 @@ use OCP\App\IAppManager;
use OCP\IConfig;
use OCP\IRequest;
use OCP\Server;
use OCP\Template\ITemplateManager;
use OCP\Util;
use Psr\Log\LoggerInterface;
@ -92,9 +93,9 @@ try {
}
//show the user a detailed error page
Server::get(LoggerInterface::class)->error($ex->getMessage(), ['app' => 'public', 'exception' => $ex]);
OC_Template::printExceptionErrorPage($ex, $status);
Server::get(ITemplateManager::class)->printExceptionErrorPage($ex, $status);
} catch (Error $ex) {
//show the user a detailed error page
Server::get(LoggerInterface::class)->error($ex->getMessage(), ['app' => 'public', 'exception' => $ex]);
OC_Template::printExceptionErrorPage($ex, 500);
Server::get(ITemplateManager::class)->printExceptionErrorPage($ex, 500);
}

View file

@ -9,6 +9,8 @@ require_once __DIR__ . '/lib/versioncheck.php';
use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
use OCP\App\IAppManager;
use OCP\IRequest;
use OCP\Template\ITemplateManager;
use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\ServiceUnavailable;
use Sabre\DAV\Server;
@ -23,7 +25,7 @@ class RemoteException extends \Exception {
function handleException(Exception|Error $e): void {
try {
$request = \OC::$server->getRequest();
$request = \OCP\Server::get(IRequest::class);
// in case the request content type is text/xml - we assume it's a WebDAV request
$isXmlContentType = strpos($request->getHeader('Content-Type'), 'text/xml');
if ($isXmlContentType === 0) {
@ -31,7 +33,7 @@ function handleException(Exception|Error $e): void {
$server = new Server();
if (!($e instanceof RemoteException)) {
// we shall not log on RemoteException
$server->addPlugin(new ExceptionLoggerPlugin('webdav', \OC::$server->get(LoggerInterface::class)));
$server->addPlugin(new ExceptionLoggerPlugin('webdav', \OCP\Server::get(LoggerInterface::class)));
}
$server->on('beforeMethod:*', function () use ($e) {
if ($e instanceof RemoteException) {
@ -54,19 +56,19 @@ function handleException(Exception|Error $e): void {
}
if ($e instanceof RemoteException) {
// we shall not log on RemoteException
OC_Template::printErrorPage($e->getMessage(), '', $e->getCode());
\OCP\Server::get(ITemplateManager::class)->printErrorPage($e->getMessage(), '', $e->getCode());
} else {
\OC::$server->get(LoggerInterface::class)->error($e->getMessage(), ['app' => 'remote','exception' => $e]);
OC_Template::printExceptionErrorPage($e, $statusCode);
\OCP\Server::get(LoggerInterface::class)->error($e->getMessage(), ['app' => 'remote','exception' => $e]);
\OCP\Server::get(ITemplateManager::class)->printExceptionErrorPage($e, $statusCode);
}
}
} catch (\Exception $e) {
OC_Template::printExceptionErrorPage($e, 500);
\OCP\Server::get(ITemplateManager::class)->printExceptionErrorPage($e, 500);
}
}
/**
* @param $service
* @param string $service
* @return string
*/
function resolveService($service) {