From fde3357d2ae4f0c4e841f00cfdb26d889cb4521b Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Mon, 28 Aug 2023 15:26:48 +0100 Subject: [PATCH] [Options] Creates options table during install and inserts the version2 flag and migration file makes sure it doesn't exisit. This will hopefully resolve #2443 loop for new installs who of course don't need to run through the upgrade process for version 1 to 2 --- .../migrations/058_new_options_table.php | 61 ++++++++++--------- ...102_add_version_two_trigger_to_options.php | 2 + install/assets/install.sql | 13 ++++ 3 files changed, 47 insertions(+), 29 deletions(-) diff --git a/application/migrations/058_new_options_table.php b/application/migrations/058_new_options_table.php index 99bc8239..6c888985 100644 --- a/application/migrations/058_new_options_table.php +++ b/application/migrations/058_new_options_table.php @@ -11,35 +11,38 @@ class Migration_new_options_table extends CI_Migration { public function up() { - $this->dbforge->add_field(array( - 'option_id' => array( - 'type' => 'BIGINT', - 'constraint' => 20, - 'unsigned' => TRUE, - 'auto_increment' => TRUE - ), - - 'option_name' => array( - 'type' => 'VARCHAR', - 'constraint' => '191', - 'null' => TRUE, - 'unique' => TRUE, - ), - - 'option_value' => array( - 'type' => 'longtext', - ), - - 'autoload' => array( - 'type' => 'varchar', - 'constraint' => '20', - 'null' => TRUE, - ) - )); - - $this->dbforge->add_key('option_id', TRUE); - - $this->dbforge->create_table('options'); + // if table options doesn't exist + if (!$this->db->table_exists('options')) { + $this->dbforge->add_field(array( + 'option_id' => array( + 'type' => 'BIGINT', + 'constraint' => 20, + 'unsigned' => TRUE, + 'auto_increment' => TRUE + ), + + 'option_name' => array( + 'type' => 'VARCHAR', + 'constraint' => '191', + 'null' => TRUE, + 'unique' => TRUE, + ), + + 'option_value' => array( + 'type' => 'longtext', + ), + + 'autoload' => array( + 'type' => 'varchar', + 'constraint' => '20', + 'null' => TRUE, + ) + )); + + $this->dbforge->add_key('option_id', TRUE); + + $this->dbforge->create_table('options'); + } } public function down() diff --git a/application/migrations/102_add_version_two_trigger_to_options.php b/application/migrations/102_add_version_two_trigger_to_options.php index e0dac738..f1da0867 100644 --- a/application/migrations/102_add_version_two_trigger_to_options.php +++ b/application/migrations/102_add_version_two_trigger_to_options.php @@ -11,6 +11,7 @@ class Migration_add_version_two_trigger_to_options extends CI_Migration { public function up() { + $data = array( array('option_name' => "version2_trigger", 'option_value' => "false", 'autoload' => "yes"), ); @@ -19,6 +20,7 @@ class Migration_add_version_two_trigger_to_options extends CI_Migration { if($query->num_rows() == 0) { $this->db->insert_batch('options', $data); } + } public function down() diff --git a/install/assets/install.sql b/install/assets/install.sql index 3fccb104..7a918282 100755 --- a/install/assets/install.sql +++ b/install/assets/install.sql @@ -296,6 +296,19 @@ CREATE TABLE `TABLE_HRD_CONTACTS_V01` ( -- Records of TABLE_HRD_CONTACTS_V01 -- ---------------------------- + + +CREATE TABLE `options` ( + `option_id` bigint(20) UNSIGNED NOT NULL, + `option_name` varchar(191) DEFAULT NULL, + `option_value` longtext NOT NULL, + `autoload` varchar(20) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; + +-- +-- Dumping data for table `options` that stops the version2 trigger from firing +INSERT INTO `options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (NULL, 'version2_trigger', 'yes', 'true') + -- ---------------------------- -- Table structure for timezones -- ----------------------------