From 0587010dff504eca9320e9039cd76386cc2a208f Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Mon, 8 Jun 2020 18:24:19 +0200 Subject: [PATCH] Migrate Accessibility app to new bootstrap mechanism Signed-off-by: Christoph Wurst --- apps/accessibility/appinfo/app.php | 37 ----------- .../accessibility/lib/AppInfo/Application.php | 61 +++++++++++++------ .../lib/Migration/RepairUserConfig.php | 8 +-- 3 files changed, 48 insertions(+), 58 deletions(-) delete mode 100644 apps/accessibility/appinfo/app.php diff --git a/apps/accessibility/appinfo/app.php b/apps/accessibility/appinfo/app.php deleted file mode 100644 index b37e726b6ce..00000000000 --- a/apps/accessibility/appinfo/app.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * @author Alexey Pyltsyn - * @author John Molakvoæ (skjnldsv) - * @author Robin Appelman - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -use OCA\Accessibility\AppInfo\Application; - -$app = \OC::$server->query(Application::class); - -// Separate from the constructor since the route are not initialized before that -// 1. create the app -// 2. generate css route and inject -$app->injectCss(); -$app->injectJavascript(); diff --git a/apps/accessibility/lib/AppInfo/Application.php b/apps/accessibility/lib/AppInfo/Application.php index 0cac878d34e..e691b8353d9 100644 --- a/apps/accessibility/lib/AppInfo/Application.php +++ b/apps/accessibility/lib/AppInfo/Application.php @@ -1,4 +1,7 @@ * @@ -27,14 +30,21 @@ namespace OCA\Accessibility\AppInfo; use OCP\AppFramework\App; +use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; +use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\IConfig; +use OCP\IServerContainer; use OCP\IURLGenerator; use OCP\IUserSession; +use function count; +use function implode; +use function md5; -class Application extends App { +class Application extends App implements IBootstrap { /** @var string */ - public const APP_NAME = 'accessibility'; + public const APP_ID = 'accessibility'; /** @var IConfig */ private $config; @@ -46,31 +56,48 @@ class Application extends App { private $urlGenerator; public function __construct() { - parent::__construct(self::APP_NAME); - $this->config = \OC::$server->getConfig(); - $this->userSession = \OC::$server->getUserSession(); - $this->urlGenerator = \OC::$server->getURLGenerator(); + parent::__construct(self::APP_ID); + } + + public function register(IRegistrationContext $context): void { + } + + public function boot(IBootContext $context): void { + $this->injectCss( + $context->getAppContainer()->query(IUserSession::class), + $context->getAppContainer()->query(IConfig::class), + $context->getAppContainer()->query(IURLGenerator::class) + ); + $this->injectJavascript( + $context->getAppContainer()->query(IURLGenerator::class), + $context->getAppContainer()->query(IConfig::class), + $context->getServerContainer() + ); } - public function injectCss() { + private function injectCss(IUserSession $userSession, + IConfig $config, + IURLGenerator $urlGenerator) { // Inject the fake css on all pages if enabled and user is logged - $loggedUser = $this->userSession->getUser(); - if (!is_null($loggedUser)) { - $userValues = $this->config->getUserKeys($loggedUser->getUID(), self::APP_NAME); + $loggedUser = $userSession->getUser(); + if ($loggedUser !== null) { + $userValues = $config->getUserKeys($loggedUser->getUID(), self::APP_ID); // we want to check if any theme or font is enabled. if (count($userValues) > 0) { - $hash = $this->config->getUserValue($loggedUser->getUID(), self::APP_NAME, 'icons-css', md5(implode('-', $userValues))); - $linkToCSS = $this->urlGenerator->linkToRoute(self::APP_NAME . '.accessibility.getCss', ['md5' => $hash]); + $hash = $config->getUserValue($loggedUser->getUID(), self::APP_ID, 'icons-css', md5(implode('-', $userValues))); + $linkToCSS = $urlGenerator->linkToRoute(self::APP_ID . '.accessibility.getCss', ['md5' => $hash]); \OCP\Util::addHeader('link', ['rel' => 'stylesheet', 'href' => $linkToCSS]); } } } - public function injectJavascript() { - $linkToJs = $this->urlGenerator->linkToRoute( - self::APP_NAME . '.accessibility.getJavascript', + private function injectJavascript(IURLGenerator $urlGenerator, + IConfig $config, + IServerContainer $serverContainer) { + $linkToJs = $urlGenerator->linkToRoute( + self::APP_ID . '.accessibility.getJavascript', [ - 'v' => \OC::$server->getConfig()->getAppValue('accessibility', 'cachebuster', '0'), + 'v' => $config->getAppValue(self::APP_ID, 'cachebuster', '0'), ] ); @@ -78,7 +105,7 @@ class Application extends App { 'script', [ 'src' => $linkToJs, - 'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce() + 'nonce' => $serverContainer->getContentSecurityPolicyNonceManager()->getNonce() ], '' ); diff --git a/apps/accessibility/lib/Migration/RepairUserConfig.php b/apps/accessibility/lib/Migration/RepairUserConfig.php index 4b946f6a785..2b4bbc1ed19 100644 --- a/apps/accessibility/lib/Migration/RepairUserConfig.php +++ b/apps/accessibility/lib/Migration/RepairUserConfig.php @@ -75,13 +75,13 @@ class RepairUserConfig implements IRepairStep { public function run(IOutput $output) { $output->startProgress(); $this->userManager->callForSeenUsers(function (IUser $user) use ($output) { - $theme = $this->config->getUserValue($user->getUID(), Application::APP_NAME, 'theme', false); + $theme = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'theme', false); if ($theme === 'themedark') { - $this->config->setUserValue($user->getUID(), Application::APP_NAME, 'theme', 'dark'); + $this->config->setUserValue($user->getUID(), Application::APP_ID, 'theme', 'dark'); } if ($theme === 'themehighcontrast') { - $this->config->setUserValue($user->getUID(), Application::APP_NAME, 'highcontrast', 'highcontrast'); - $this->config->deleteUserValue($user->getUID(), Application::APP_NAME, 'theme'); + $this->config->setUserValue($user->getUID(), Application::APP_ID, 'highcontrast', 'highcontrast'); + $this->config->deleteUserValue($user->getUID(), Application::APP_ID, 'theme'); } $output->advance(); }); -- 2.39.5