| @@ -8,10 +8,8 @@ | ||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | namespace BitCode\BitForm\Core\Database; |
| 11 | 11 | |
| 12 | -use BitCode\BitForm\Core\Util\Log; | |
| 13 | - | |
| 14 | 12 | /** |
| 15 | 13 | * Database Migration |
| 16 | 14 | */ |
| 17 | 15 | final class DB |
| @@ -79,11 +77,9 @@ | ||
| 79 | 77 | `workflow_type` varchar(50) NOT NULL, |
| 80 | 78 | `workflow_run` varchar(50) NOT NULL, |
| 81 | 79 | `workflow_behaviour` varchar(25) NOT NULL, |
| 82 | 80 | `workflow_condition` longtext DEFAULT NULL, |
| 83 | - `workflow_info` longtext DEFAULT NULL, | |
| 84 | 81 | `workflow_order` int(11) unsigned DEFAULT NULL, |
| 85 | - `workflow_status` tinyint(1) DEFAULT 1,/* 0 disable, 1 enable, 2 enable in field settings */ | |
| 86 | 82 | `form_id` bigint(20) unsigned DEFAULT NULL, |
| 87 | 83 | `user_id` bigint(20) unsigned DEFAULT NULL, |
| 88 | 84 | `user_ip` int(11) unsigned DEFAULT NULL, |
| 89 | 85 | `user_location` text DEFAULT NULL, |
| @@ -203,96 +199,62 @@ | ||
| 203 | 199 | KEY `entry_id` (`entry_id`) |
| 204 | 200 | ) $collate;" |
| 205 | 201 | ]; |
| 206 | 202 | |
| 207 | - try { | |
| 208 | - include_once ABSPATH . 'wp-admin/includes/upgrade.php'; | |
| 209 | - foreach ($table_schema as $table) { | |
| 210 | - dbDelta($table); | |
| 211 | - } | |
| 212 | - $installed_db_version = get_option('bitforms_db_version'); | |
| 213 | - if ($installed_db_version && version_compare('1.1', $installed_db_version, '>=')) { | |
| 214 | - // if new db version is equal or higher than 1.1 | |
| 215 | - // Schema migration: table name interpolation only (no user input). $wpdb->prepare() cannot parameterize DDL statements. | |
| 216 | - try { | |
| 217 | - $wpdb->query("ALTER TABLE `{$wpdb->prefix}bitforms_form_entry_log` | |
| 218 | - MODIFY `log_type` VARCHAR(50) NULL DEFAULT NULL, | |
| 219 | - MODIFY `created_at` DATETIME NOT NULL, | |
| 203 | + $table_schema_update = [ | |
| 204 | + "ALTER TABLE `{$wpdb->prefix}bitforms_form_entry_log` | |
| 205 | + CHANGE COLUMN `log_type` `log_type` VARCHAR(50) NULL DEFAULT NULL, | |
| 206 | + ADD COLUMN `action_type` VARCHAR(50) NULL DEFAULT NULL, | |
| 220 | 207 | CHANGE COLUMN `meta_key` `content` LONGTEXT NULL, |
| 221 | - ADD COLUMN `action_type` VARCHAR(50) NULL DEFAULT NULL, | |
| 222 | - ADD COLUMN `content` LONGTEXT NULL AFTER `action_type`"); | |
| 223 | - } catch (\Exception $e) { | |
| 224 | - Log::debug_log("Update failed: {$e->getMessage()} in query: ALTER TABLE `{$wpdb->prefix}bitforms_form_entry_log`..."); | |
| 225 | - } | |
| 226 | - try { | |
| 227 | - $wpdb->query("ALTER TABLE `{$wpdb->prefix}bitforms_form_log_details` | |
| 228 | - MODIFY `api_type` VARCHAR(255) NULL DEFAULT NULL, | |
| 229 | - MODIFY `response_obj` LONGTEXT NULL, | |
| 230 | - MODIFY `created_at` DATETIME NOT NULL"); | |
| 231 | - } catch (\Exception $e) { | |
| 232 | - Log::debug_log("Update failed: {$e->getMessage()} in query: ALTER TABLE `{$wpdb->prefix}bitforms_form_log_details`..."); | |
| 233 | - } | |
| 234 | - } | |
| 235 | - if ($installed_db_version && version_compare('1.3', $installed_db_version, '>=')) { | |
| 236 | - // if new db version is equal or higher than 1.3 | |
| 237 | - $wpdb->query("ALTER TABLE `{$wpdb->prefix}bitforms_form_entries` MODIFY `user_ip` VARCHAR(255) NULL DEFAULT NULL"); | |
| 238 | - } | |
| 208 | + CHANGE COLUMN `created_at` `created_at` DATETIME NOT NULL", | |
| 209 | + "ALTER TABLE `{$wpdb->prefix}bitforms_form_log_details` | |
| 210 | + CHANGE COLUMN `api_type` `api_type` VARCHAR(255) NULL DEFAULT NULL, | |
| 211 | + CHANGE COLUMN `response_obj` `response_obj` LONGTEXT NULL, | |
| 212 | + CHANGE COLUMN `created_at` `created_at` DATETIME NOT NULL", | |
| 213 | + ]; | |
| 239 | 214 | |
| 240 | - if ($installed_db_version && version_compare('2.0', $installed_db_version, '>=')) { | |
| 241 | - if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$wpdb->prefix}bitforms_success_messages` LIKE 'message_config'")) { | |
| 242 | - $wpdb->query( | |
| 243 | - "ALTER TABLE `{$wpdb->prefix}bitforms_success_messages` | |
| 244 | - ADD COLUMN `message_config` LONGTEXT NULL AFTER `message_content`" | |
| 245 | - ); | |
| 246 | - } | |
| 247 | - if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$wpdb->prefix}bitforms_form` LIKE 'builder_helper_state'")) { | |
| 248 | - $wpdb->query( | |
| 249 | - "ALTER TABLE `{$wpdb->prefix}bitforms_form` | |
| 250 | - ADD COLUMN `builder_helper_state` LONGTEXT NULL AFTER `form_content`, | |
| 251 | - ADD COLUMN `atomic_class_map` LONGTEXT NULL AFTER `builder_helper_state`, | |
| 252 | - ADD COLUMN `generated_script_page_ids` LONGTEXT NULL AFTER `atomic_class_map`" | |
| 253 | - ); | |
| 254 | - } | |
| 255 | - if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$wpdb->prefix}bitforms_workflows` LIKE 'workflow_order'")) { | |
| 256 | - $wpdb->query( | |
| 257 | - "ALTER TABLE `{$wpdb->prefix}bitforms_workflows` | |
| 258 | - ADD COLUMN `workflow_order` INT(11) DEFAULT NULL AFTER `workflow_condition`" | |
| 259 | - ); | |
| 260 | - } | |
| 215 | + include_once ABSPATH . 'wp-admin/includes/upgrade.php'; | |
| 216 | + foreach ($table_schema as $table) { | |
| 217 | + dbDelta($table); | |
| 218 | + } | |
| 219 | + $installed_db_version = get_site_option('bitforms_db_version'); | |
| 220 | + if ($installed_db_version && version_compare('1.1', $installed_db_version, '>=')) { | |
| 221 | + // if new db version is equal or higher than 1.1 | |
| 222 | + foreach ($table_schema_update as $table) { | |
| 223 | + $wpdb->query($table); | |
| 261 | 224 | } |
| 225 | + } | |
| 226 | + if ($installed_db_version && version_compare('1.3', $installed_db_version, '>=')) { | |
| 227 | + // if new db version is equal or higher than 1.3 | |
| 228 | + $wpdb->query("ALTER TABLE `{$wpdb->prefix}bitforms_form_entries` CHANGE `user_ip` `user_ip` VARCHAR(255) NULL DEFAULT NULL"); | |
| 229 | + } | |
| 262 | 230 | |
| 263 | - if ($installed_db_version && version_compare('2.2', $installed_db_version, '>=')) { | |
| 264 | - if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$wpdb->prefix}bitforms_form_entries` LIKE 'referer'")) { | |
| 265 | - $wpdb->query( | |
| 266 | - "ALTER TABLE `{$wpdb->prefix}bitforms_form_entries` | |
| 267 | - ADD COLUMN `referer` TEXT NULL DEFAULT NULL" | |
| 268 | - ); | |
| 269 | - } | |
| 270 | - } | |
| 231 | + if ($installed_db_version && version_compare('2.0', $installed_db_version, '>=')) { | |
| 232 | + $wpdb->query( | |
| 233 | + "ALTER TABLE `{$wpdb->prefix}bitforms_success_messages` | |
| 234 | + ADD `message_config` LONGTEXT NULL AFTER `message_content`" | |
| 235 | + ); | |
| 236 | + $wpdb->query( | |
| 237 | + "ALTER TABLE `{$wpdb->prefix}bitforms_form` | |
| 238 | + ADD `builder_helper_state` LONGTEXT NULL AFTER `form_content`, | |
| 239 | + ADD `atomic_class_map` LONGTEXT NULL AFTER `builder_helper_state`, | |
| 240 | + ADD `generated_script_page_ids` LONGTEXT NULL AFTER `atomic_class_map`" | |
| 241 | + ); | |
| 242 | + $wpdb->query( | |
| 243 | + "ALTER TABLE `{$wpdb->prefix}bitforms_workflows` | |
| 244 | + ADD `workflow_order` INT(11) DEFAULT NULL AFTER `workflow_condition`" | |
| 245 | + ); | |
| 246 | + } | |
| 271 | 247 | |
| 272 | - if ($installed_db_version && version_compare('2.4', $installed_db_version, '>=')) { | |
| 273 | - if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$wpdb->prefix}bitforms_workflows` LIKE 'workflow_status'")) { | |
| 274 | - $wpdb->query( | |
| 275 | - "ALTER TABLE `{$wpdb->prefix}bitforms_workflows` | |
| 276 | - ADD COLUMN `workflow_status` TINYINT(1) DEFAULT 1 NOT NULL AFTER `workflow_order`" | |
| 277 | - ); | |
| 278 | - } | |
| 279 | - } | |
| 248 | + if ($installed_db_version && version_compare('2.2', $installed_db_version, '>=')) { | |
| 249 | + $wpdb->query( | |
| 250 | + "ALTER TABLE `{$wpdb->prefix}bitforms_form_entries` | |
| 251 | + MODIFY `referer` TEXT DEFAULT NULL" | |
| 252 | + ); | |
| 253 | + } | |
| 280 | 254 | |
| 281 | - // add workflow_info column if not exists | |
| 282 | - if ($installed_db_version && version_compare('3.0', $installed_db_version, '>=')) { | |
| 283 | - $table_name = $wpdb->prefix . 'bitforms_workflows'; | |
| 284 | - if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$table_name}` LIKE 'workflow_info'")) { | |
| 285 | - $wpdb->query( | |
| 286 | - "ALTER TABLE `{$table_name}` | |
| 287 | - ADD COLUMN `workflow_info` LONGTEXT NULL AFTER `workflow_condition`" | |
| 288 | - ); | |
| 289 | - } | |
| 290 | - } | |
| 291 | - | |
| 292 | - update_option('bitforms_db_version', $bitforms_db_version, true); | |
| 293 | - } catch (\Exception $e) { | |
| 294 | - // Log the error to a file or the database | |
| 295 | - Log::debug_log('Error during DB migration: ' . $e->getMessage()); | |
| 296 | - } | |
| 255 | + update_site_option( | |
| 256 | + 'bitforms_db_version', | |
| 257 | + $bitforms_db_version | |
| 258 | + ); | |
| 297 | 259 | } |
| 298 | 260 | } |