From 98d19040c75cc517128bd0794603237dfbe29b95 Mon Sep 17 00:00:00 2001 From: objecttothis Date: Sun, 5 Feb 2023 15:53:16 +0400 Subject: [PATCH] Fixed bug in CI4 conversion functionality The bug was causing one row to be inserted because the function was being called twice --- app/Controllers/Login.php | 2 ++ app/Events/Load_config.php | 5 ++--- app/Libraries/MY_Migration.php | 23 +++++++++++++---------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/Controllers/Login.php b/app/Controllers/Login.php index 2b49ca898..452ca5a75 100644 --- a/app/Controllers/Login.php +++ b/app/Controllers/Login.php @@ -25,6 +25,8 @@ class Login extends BaseController ? config('OSPOS')->settings['gcaptcha_enable'] : false; + $migration->migrate_to_ci4(); + $data = [ 'has_errors' => false, 'is_latest' => $migration->is_latest(), diff --git a/app/Events/Load_config.php b/app/Events/Load_config.php index c3c8d928a..ceb6e9473 100644 --- a/app/Events/Load_config.php +++ b/app/Events/Load_config.php @@ -31,13 +31,12 @@ class Load_config $config = config('OSPOS'); $appconfig = model(Appconfig::class); - $config->settings['application_version'] = $migration->get_current_version(); - - if (!$migration->is_latest()) + if (!$migration->is_latest()) { $this->session->destroy(); } + $config->settings['application_version'] = $migration->get_current_version(); foreach($appconfig->get_all()->getResult() as $app_config) { $config->settings[$app_config->key] = $app_config->value; diff --git a/app/Libraries/MY_Migration.php b/app/Libraries/MY_Migration.php index 2b6c14914..6ae482ef7 100644 --- a/app/Libraries/MY_Migration.php +++ b/app/Libraries/MY_Migration.php @@ -10,19 +10,13 @@ class MY_Migration extends MigrationRunner { public function is_latest(): bool { - $ci3_migrations_version = $this->ci3_migrations_exists(); - if($ci3_migrations_version) - { - $this->migrate_to_ci4_migrations($ci3_migrations_version); - } - $latest_version = $this->get_latest_migration(); $current_version = $this->get_current_version(); - return $latest_version == $current_version; + return $latest_version === $current_version; } - public function get_latest_migration(): string + public function get_latest_migration(): int { $migrations = $this->findMigrations(); return basename(end($migrations)->version); @@ -33,7 +27,7 @@ class MY_Migration extends MigrationRunner * * @return string The version number of the last successfully run database migration. */ - public function get_current_version(): string + public function get_current_version(): int { if($this->db->tableExists('migrations')) { @@ -45,6 +39,15 @@ class MY_Migration extends MigrationRunner return ''; } + public function migrate_to_ci4(): void + { + $ci3_migrations_version = $this->ci3_migrations_exists(); + if($ci3_migrations_version) + { + $this->migrate_table($ci3_migrations_version); + } + } + /** * Checks to see if a ci3 version of the migrations table exists * @@ -62,7 +65,7 @@ class MY_Migration extends MigrationRunner return false; } - private function migrate_to_ci4_migrations(string $ci3_migrations_version) + private function migrate_table(string $ci3_migrations_version) { $this->convert_table();