%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/app_api/lib/Middleware/ |
Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/app_api/lib/Middleware/ExAppUIL10NMiddleware.php |
<?php declare(strict_types=1); namespace OCA\AppAPI\Middleware; use OC\Security\CSP\ContentSecurityPolicyNonceManager; use OCA\AppAPI\Service\ExAppService; use OCP\App\AppPathNotFoundException; use OCP\App\IAppManager; use OCP\AppFramework\Controller; use OCP\AppFramework\Middleware; use OCP\IRequest; use OCP\L10N\IFactory; use Psr\Log\LoggerInterface; class ExAppUIL10NMiddleware extends Middleware { private const routesToLoadL10N = [ '/files/', '/settings/', '/app_api/embedded/' ]; public function __construct( protected IRequest $request, private readonly IFactory $l10nFactory, private readonly ContentSecurityPolicyNonceManager $nonceManager, private readonly IAppManager $appManager, private readonly ExAppService $exAppService, private readonly LoggerInterface $logger, ) { } public function beforeOutput(Controller $controller, string $methodName, string $output) { $url = $this->request->getRequestUri(); $loadL10N = false; foreach (self::routesToLoadL10N as $route) { $url = str_replace('/index.php', '', $url); $url = str_replace('/apps', '', $url); if (str_starts_with($url, $route)) { $loadL10N = true; break; } } if (!$loadL10N) { return $output; } /** @var array $exApp */ foreach ($this->exAppService->getExAppsList() as $exApp) { $appId = $exApp['id']; $lang = $this->l10nFactory->findLanguage($appId); $availableLocales = $this->l10nFactory->findAvailableLanguages($appId); if (in_array($lang, $availableLocales) && $lang !== 'en') { $headPos = stripos($output, '</head>'); if ($headPos !== false) { try { $l10nScriptSrc = $this->appManager->getAppWebPath($appId) . '/l10n/' . $lang . '.js'; $nonce = $this->nonceManager->getNonce(); $output = substr_replace($output, '<script nonce="'.$nonce.'" defer src="' . $l10nScriptSrc . '"></script>', $headPos, 0); } catch (AppPathNotFoundException) { $this->logger->debug(sprintf('Can not find translations for %s ExApp.', $appId)); } } } } return $output; } }