]> source.dussan.org Git - nextcloud-server.git/commitdiff
Added migration step
authorJanis Köhr <janis.koehr@novatec-gmbh.de>
Mon, 2 Sep 2019 18:27:12 +0000 (20:27 +0200)
committerJanis Köhr <janis.koehr@novatec-gmbh.de>
Mon, 16 Sep 2019 19:04:18 +0000 (21:04 +0200)
Signed-off-by: Janis Köhr <janis.koehr@novatec-gmbh.de>
apps/accessibility/appinfo/info.xml
apps/accessibility/lib/Migration/RepairUserConfig.php [new file with mode: 0644]
apps/accessibility/src/App.vue

index ee5e3e9a6596172e79faea9e7bc40e9a3d3ec87c..405aab9cc71b10cf3a4cd25532ed2d2b50f0241a 100644 (file)
         <nextcloud min-version="18" max-version="18"/>
     </dependencies>
 
+       <repair-steps>
+               <pre-migration>
+                       <step>OCA\Accessibility\Migration\RepairUserConfig</step>
+               </pre-migration>
+       </repair-steps>
+
     <settings>
         <personal>OCA\Accessibility\Settings\Personal</personal>
         <personal-section>OCA\Accessibility\Settings\PersonalSection</personal-section>
diff --git a/apps/accessibility/lib/Migration/RepairUserConfig.php b/apps/accessibility/lib/Migration/RepairUserConfig.php
new file mode 100644 (file)
index 0000000..226f141
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+declare (strict_types = 1);
+/**
+ * @author Janis Koehr <janiskoehr@icloud.com>
+ * @copyright Janis Koehr 2019
+ *
+ * @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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Accessibility\Migration;
+
+use OCP\IConfig;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class RepairUserConfig implements IRepairStep {
+
+       /** @var string */
+       private const APP_NAME = 'accessibility';
+
+       /** @var IUserManager */
+       protected $userManager;
+
+       /** @var IConfig */
+       protected $config;
+
+       /**
+        * MigrateUserConfig constructor.
+        *
+        * @param IConfig $config
+        * @param IUserManager $userManager
+        */
+       public function __construct(IConfig $config,
+                                                               IUserManager $userManager) {
+               $this->config = $config;
+               $this->userManager = $userManager;
+       }
+
+       /**
+        * Returns the step's name
+        *
+        * @return string
+        * @since 9.1.0
+        */
+       public function getName() {
+               return 'Migrate old user config';
+       }
+
+       /**
+        * Run repair step.
+        * Must throw exception on error.
+        *
+        * @param IOutput $output
+        * @throws \Exception in case of failure
+        * @since 9.1.0
+        */
+       public function run(IOutput $output) {
+               $output->startProgress();
+               $this->userManager->callForSeenUsers(function(IUser $user) use ($output) {
+                       $theme = $this->config->getUserValue($user->getUID(), self::APP_NAME, 'theme', false);
+                       if ($theme === 'themedark') {
+                               $this->config->setUserValue($user->getUID(), self::APP_NAME, 'theme', 'dark');
+                       }
+                       if ($theme === 'themehighcontrast') {
+                               $this->config->setUserValue($user->getUID(), self::APP_NAME, 'highcontrast', 'highcontrast');
+                               $this->config->deleteUserValue($user->getUID(), self::APP_NAME, 'theme');
+                       }
+                       $output->advance();
+               });
+               $output->finishProgress();
+       }
+
+}
index 0fff2580d323476813882a83af5533a237d3e68c..17c0ce63c5f2d102e028fd790e18aeb9821eea93 100644 (file)
@@ -94,7 +94,9 @@ export default {
                selectTheme(id, idSelectedBefore) {
                        this.selectItem('theme', id);
                        document.body.classList.remove(idSelectedBefore);
-                       if (id) document.body.classList.add(id);
+                       if (id) {
+                               document.body.classList.add(id);
+                       }
                },
                selectFont(id) {
                        this.selectItem('font', id);