]> git.mxchange.org Git - friendica.git/commitdiff
Reduce the parameter chaos by splitting the update function
authorMichael <heluecht@pirati.ca>
Sat, 30 Jan 2021 13:31:59 +0000 (13:31 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 30 Jan 2021 13:31:59 +0000 (13:31 +0000)
src/Console/DatabaseStructure.php
src/Core/Installer.php
src/Core/Update.php
src/Database/DBStructure.php
src/Module/Admin/DBSync.php
src/Module/Admin/Summary.php

index 343c90023d8bfad831f6bd3f6cac074c18a3da3e..3898774a5a8f123f00cde4361a27b0f31b5e1180 100644 (file)
@@ -106,7 +106,7 @@ HELP;
 
                switch ($this->getArgument(0)) {
                        case "dryrun":
-                               $output = DBStructure::update($basePath, true, false);
+                               $output = DBStructure::dryRun();
                                break;
                        case "update":
                                $force    = $this->getOption(['f', 'force'], false);
index 70ee4bba4064caa0361b6824ab2bcd3dfaaca7b5..85538d579f3b987a2e7d5478ea1bb0de75798042 100644 (file)
@@ -192,7 +192,7 @@ class Installer
         */
        public function installDatabase($basePath)
        {
-               $result = DBStructure::update($basePath, false, true, true);
+               $result = DBStructure::install($basePath);
 
                if ($result) {
                        $txt = DI::l10n()->t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL;
index d2a3c810e3a8a71e1c17162e51aa160f7c62cced..204c0d0ac3bd2ac8ba0401d1e0f232a7d59a3d9e 100644 (file)
@@ -166,7 +166,7 @@ class Update
 
                                        // update the structure in one call
                                        Logger::notice('Execute structure update');
-                                       $retval = DBStructure::update($basePath, $verbose, true);
+                                       $retval = DBStructure::performUpdate(false, $verbose);
                                        if (!empty($retval)) {
                                                if ($sendMail) {
                                                        self::updateFailed(
index c8375c85754e3b0863ea68cc92cd27b8ca36a396..f461cedd5137b0af40bd0a0a045d43b48c61e2ea 100644 (file)
@@ -361,6 +361,54 @@ class DBStructure
                return ($sql);
        }
 
+       /**
+        * Perform a database structure dryrun (means: just simulating)
+        *
+        * @throws Exception
+        */
+       public static function dryRun()
+       {
+               self::update(DI::app()->getBasePath(), true, false);
+       }
+
+       /**
+        * Updates DB structure and returns eventual errors messages
+        *
+        * @param bool $enable_maintenance_mode Set the maintenance mode
+        * @param bool $verbose                 Display the SQL commands
+        *
+        * @return string Empty string if the update is successful, error messages otherwise
+        * @throws Exception
+        */
+       public static function performUpdate(bool $enable_maintenance_mode = true, bool $verbose = false)
+       {
+               if ($enable_maintenance_mode) {
+                       DI::config()->set('system', 'maintenance', 1);
+               }
+
+               $status = self::update(DI::app()->getBasePath(), $verbose, true);
+
+               if ($enable_maintenance_mode) {
+                       DI::config()->set('system', 'maintenance', 0);
+                       DI::config()->set('system', 'maintenance_reason', '');
+               }
+
+               return $status;
+       }
+
+       /**
+        * Updates DB structure from the installation and returns eventual errors messages
+        *
+        * @param string $basePath   The base path of this application
+        *
+        * @return string Empty string if the update is successful, error messages otherwise
+        * @throws Exception
+        */
+       public static function install(string $basePath)
+       {
+               return self::update($basePath, false, true, true);
+       }
+
        /**
         * Updates DB structure and returns eventual errors messages
         *
@@ -373,16 +421,15 @@ class DBStructure
         * @return string Empty string if the update is successful, error messages otherwise
         * @throws Exception
         */
-       public static function update($basePath, $verbose, $action, $install = false, array $tables = null, array $definition = null)
+       private static function update($basePath, $verbose, $action, $install = false, array $tables = null, array $definition = null)
        {
-               $in_maintenance = DI::config()->get('system', 'maintenance');
+               $in_maintenance_mode = DI::config()->get('system', 'maintenance');
 
-               if ($action && !$install) {
-                       if (self::isUpdating()) {
-                               return DI::l10n()->t('Another database update is currently running.');
-                       }
+               if ($action && !$install && self::isUpdating()) {
+                       return DI::l10n()->t('Another database update is currently running.');
+               }
 
-                       DI::config()->set('system', 'maintenance', 1);
+               if ($in_maintenance_mode) {
                        DI::config()->set('system', 'maintenance_reason', DI::l10n()->t('%s: Database update', DateTimeFormat::utcNow() . ' ' . date('e')));
                }
 
@@ -682,7 +729,7 @@ class DBStructure
                                }
 
                                if ($action) {
-                                       if (!$install) {
+                                       if ($in_maintenance_mode) {
                                                DI::config()->set('system', 'maintenance_reason', DI::l10n()->t('%s: updating %s table.', DateTimeFormat::utcNow() . ' ' . date('e'), $name));
                                        }
 
@@ -739,11 +786,6 @@ class DBStructure
                self::checkInitialValues();
 
                if ($action && !$install) {
-                       if (!$in_maintenance) {
-                               DI::config()->set('system', 'maintenance', 0);
-                               DI::config()->set('system', 'maintenance_reason', '');
-                       }
-
                        if ($errors) {
                                DI::config()->set('system', 'dbupdate', self::UPDATE_FAILED);
                        } else {
index 662fe08e27c5143199720d001c26da6adcffd847..df7fdeaa6729a0553354d3d464d3adc68bf668ef 100644 (file)
@@ -54,7 +54,7 @@ class DBSync extends BaseAdmin
                                break;
                        case 'check':
                                // @TODO Seems like a similar logic like Update::check()
-                               $retval = DBStructure::update($a->getBasePath(), false, true);
+                               $retval = DBStructure::performUpdate();
                                if ($retval === '') {
                                        $o = DI::l10n()->t("Database structure update %s was successfully applied.", DB_UPDATE_VERSION) . "<br />";
                                } else {
index a130c483939c30814fbb048198207c407b337fe0..c232b5be5a3a51703c1f1bec5d3c055ee81ee2b1 100644 (file)
@@ -82,7 +82,7 @@ class Summary extends BaseAdmin
                }
 
                if (DI::config()->get('system', 'dbupdate', DBStructure::UPDATE_NOT_CHECKED) == DBStructure::UPDATE_NOT_CHECKED) {
-                       DBStructure::update($a->getBasePath(), false, true);
+                       DBStructure::performUpdate();
                }
 
                if (DI::config()->get('system', 'dbupdate') == DBStructure::UPDATE_FAILED) {