PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.21.4
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.21.4
3.3.1 V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 All 138 releases
← All changes | includes/Core/Database/DB.php +87 -42 2.02.21.4 View file →
@@ -8,18 +8,22 @@
8 8 */
9 9
10 10 namespace BitCode\BitForm\Core\Database;
11 11
12 +use BitCode\BitForm\Core\Util\Log;
13 +
12 14 /**
13 15 * Database Migration
14 16 */
15 -final class DB {
17 +final class DB
18 +{
16 19 /**
17 20 * Undocumented function
18 21 *
19 22 * @return void
20 23 */
21 - public static function migrate() {
24 + public static function migrate()
25 + {
22 26 global $wpdb;
23 27 global $bitforms_db_version;
24 28 $collate = '';
25 29
@@ -76,8 +80,9 @@
76 80 `workflow_run` varchar(50) NOT NULL,
77 81 `workflow_behaviour` varchar(25) NOT NULL,
78 82 `workflow_condition` longtext DEFAULT NULL,
79 83 `workflow_order` int(11) unsigned DEFAULT NULL,
84 + `workflow_status` tinyint(1) DEFAULT 1,/* 0 disable, 1 enable, 2 enable in field settings */
80 85 `form_id` bigint(20) unsigned DEFAULT NULL,
81 86 `user_id` bigint(20) unsigned DEFAULT NULL,
82 87 `user_ip` int(11) unsigned DEFAULT NULL,
83 88 `user_location` text DEFAULT NULL,
@@ -135,9 +140,9 @@
135 140 `user_id` bigint(20) unsigned DEFAULT NULL,
136 141 `user_ip` varchar(255) DEFAULT NULL,
137 142 `user_location` text DEFAULT NULL,
138 143 `user_device` varchar(50) DEFAULT NULL,
139 - `referer` varchar(255) DEFAULT NULL,
144 + `referer` TEXT DEFAULT NULL,
140 145 `status` tinyint(1) DEFAULT 0,/* 0 not viewed, 1 viewed, 2 trashed */
141 146 `created_at` datetime DEFAULT NULL,
142 147 `updated_at` datetime DEFAULT NULL,
143 148 PRIMARY KEY (`id`),
@@ -194,57 +199,97 @@
194 199 `updated_at` DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
195 200 PRIMARY KEY (`id`),
196 201 KEY `form_id` (`form_id`),
197 202 KEY `entry_id` (`entry_id`)
198 - ) $collate;",
203 + ) $collate;"
199 204 ];
200 205
201 206 $table_schema_update = [
202 207 "ALTER TABLE `{$wpdb->prefix}bitforms_form_entry_log`
203 - CHANGE COLUMN `log_type` `log_type` VARCHAR(50) NULL DEFAULT NULL,
208 + MODIFY `log_type` VARCHAR(50) NULL DEFAULT NULL,
209 + MODIFY `created_at` DATETIME NOT NULL,
210 + CHANGE COLUMN `meta_key` `content` LONGTEXT NULL,
204 211 ADD COLUMN `action_type` VARCHAR(50) NULL DEFAULT NULL,
205 - CHANGE COLUMN `meta_key` `content` LONGTEXT NULL,
206 - CHANGE COLUMN `created_at` `created_at` DATETIME NOT NULL",
212 + ADD COLUMN `content` LONGTEXT NULL AFTER `action_type`",
207 213 "ALTER TABLE `{$wpdb->prefix}bitforms_form_log_details`
208 - CHANGE COLUMN `api_type` `api_type` VARCHAR(255) NULL DEFAULT NULL,
209 - CHANGE COLUMN `response_obj` `response_obj` LONGTEXT NULL,
210 - CHANGE COLUMN `created_at` `created_at` DATETIME NOT NULL",
214 + MODIFY `api_type` VARCHAR(255) NULL DEFAULT NULL,
215 + MODIFY `response_obj` LONGTEXT NULL,
216 + MODIFY `created_at` DATETIME NOT NULL"
211 217 ];
212 218
213 - include_once ABSPATH . 'wp-admin/includes/upgrade.php';
214 - foreach ($table_schema as $table) {
215 - dbDelta($table);
216 - }
217 - $installed_db_version = get_site_option('bitforms_db_version');
218 - if ($installed_db_version && version_compare('1.1', $installed_db_version, '>=')) {
219 - // if new db version is equal or higher than 1.1
220 - foreach ($table_schema_update as $table) {
221 - $wpdb->query($table);
219 + try {
220 + include_once ABSPATH . 'wp-admin/includes/upgrade.php';
221 + foreach ($table_schema as $table) {
222 + dbDelta($table);
222 223 }
223 - }
224 - if ($installed_db_version && version_compare('1.3', $installed_db_version, '>=')) {
225 - // if new db version is equal or higher than 1.3
226 - $wpdb->query("ALTER TABLE `{$wpdb->prefix}bitforms_form_entries` CHANGE `user_ip` `user_ip` VARCHAR(255) NULL DEFAULT NULL");
227 - }
224 + $installed_db_version = get_site_option('bitforms_db_version');
225 + if ($installed_db_version && version_compare('1.1', $installed_db_version, '>=')) {
226 + // if new db version is equal or higher than 1.1
227 + foreach ($table_schema_update as $query) {
228 + try {
229 + $wpdb->query($query);
230 + } catch (\Exception $e) {
231 + Log::debug_log("Update failed: {$e->getMessage()} in query: {$query}");
232 + }
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 + }
228 239
229 - if ($installed_db_version && version_compare('2.0', $installed_db_version, '>=')) {
230 - $wpdb->query(
231 - "ALTER TABLE `{$wpdb->prefix}bitforms_success_messages`
232 - ADD `message_config` LONGTEXT NULL AFTER `message_content`"
240 + if ($installed_db_version && version_compare('2.0', $installed_db_version, '>=')) {
241 + $table_name = $wpdb->prefix . 'bitforms_success_messages';
242 + if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$table_name}` LIKE 'message_config'")) {
243 + $wpdb->query(
244 + "ALTER TABLE `{$table_name}`
245 + ADD COLUMN `message_config` LONGTEXT NULL AFTER `message_content`"
246 + );
247 + }
248 + $table_name = $wpdb->prefix . 'bitforms_form';
249 + if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$table_name}` LIKE 'builder_helper_state'")) {
250 + $wpdb->query(
251 + "ALTER TABLE `{$table_name}`
252 + ADD COLUMN `builder_helper_state` LONGTEXT NULL AFTER `form_content`,
253 + ADD COLUMN `atomic_class_map` LONGTEXT NULL AFTER `builder_helper_state`,
254 + ADD COLUMN `generated_script_page_ids` LONGTEXT NULL AFTER `atomic_class_map`"
255 + );
256 + }
257 + $table_name = $wpdb->prefix . 'bitforms_workflows';
258 + if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$table_name}` LIKE 'workflow_order'")) {
259 + $wpdb->query(
260 + "ALTER TABLE `{$table_name}`
261 + ADD COLUMN `workflow_order` INT(11) DEFAULT NULL AFTER `workflow_condition`"
262 + );
263 + }
264 + }
265 +
266 + if ($installed_db_version && version_compare('2.2', $installed_db_version, '>=')) {
267 + $table_name = $wpdb->prefix . 'bitforms_form_entries';
268 + if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$table_name}` LIKE 'referer'")) {
269 + $wpdb->query(
270 + "ALTER TABLE `{$table_name}`
271 + ADD COLUMN `referer` TEXT NULL DEFAULT NULL"
272 + );
273 + }
274 + }
275 +
276 + if ($installed_db_version && version_compare('2.4', $installed_db_version, '>=')) {
277 + $table_name = $wpdb->prefix . 'bitforms_workflows';
278 + if (null === $wpdb->get_var("SHOW COLUMNS FROM `{$table_name}` LIKE 'workflow_status'")) {
279 + $wpdb->query(
280 + "ALTER TABLE `{$table_name}`
281 + ADD COLUMN `workflow_status` TINYINT(1) DEFAULT 1 NOT NULL AFTER `workflow_order`"
282 + );
283 + }
284 + }
285 +
286 + update_site_option(
287 + 'bitforms_db_version',
288 + $bitforms_db_version
233 289 );
234 - $wpdb->query(
235 - "ALTER TABLE `{$wpdb->prefix}bitforms_form`
236 - ADD `builder_helper_state` LONGTEXT NULL AFTER `form_content`,
237 - ADD `atomic_class_map` LONGTEXT NULL AFTER `builder_helper_state`,
238 - ADD `generated_script_page_ids` LONGTEXT NULL AFTER `atomic_class_map`"
239 - );
240 - $wpdb->query(
241 - "ALTER TABLE `{$wpdb->prefix}bitforms_workflows`
242 - ADD `workflow_order` INT(11) DEFAULT NULL AFTER `workflow_condition`"
243 - );
290 + } catch (\Exception $e) {
291 + // Log the error to a file or the database
292 + Log::debug_log('Error during DB migration: ' . $e->getMessage());
244 293 }
245 - update_site_option(
246 - 'bitforms_db_version',
247 - $bitforms_db_version
248 - );
249 294 }
250 295 }