PluginProbe
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution / 2.5.0
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution v2.5.0
2.5.0 2.4.0 2.3.0 2.2.5 2.2.0 2.1.2 2.1.1 trunk 1.10.0 1.10.01 1.10.02 1.5.0 1.5.01 1.5.02 1.5.1 1.5.10 1.5.20 1.5.21 1.5.22 1.5.23 1.5.24 1.5.25 1.6.0 1.7.0 1.7.1 All 34 releases
← All changes | database/Migrations/BookingMigrator.php +21 -2 1.5.24 → 2.5.0 View file →
@@ -14,8 +14,9 @@
14 14
15 15 $table = $wpdb->prefix . static::$tableName;
16 16
17 17 if ($wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE %s", $table)) != $table) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery
18 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange
18 19 $sql = "CREATE TABLE $table (
19 20 `id` BIGINT(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
20 21 `hash` VARCHAR(192) NULL,
21 22 `calendar_id` BIGINT(20) UNSIGNED NOT NULL,
@@ -54,8 +55,9 @@
54 55 `utm_source` VARCHAR(192) NULL DEFAULT '',
55 56 `utm_medium` VARCHAR(192) NULL DEFAULT '',
56 57 `utm_campaign` VARCHAR(192) NULL DEFAULT '',
57 58 `utm_term` VARCHAR(192) NULL DEFAULT '',
59 + `utm_content` VARCHAR(192) NULL DEFAULT '',
58 60 `created_at` TIMESTAMP NULL,
59 61 `updated_at` TIMESTAMP NULL,
60 62 KEY `fcal_b_parent_id` (`parent_id`),
61 63 KEY `fcal_b_hash` (`hash`),
@@ -62,13 +64,30 @@
62 64 KEY `fcal_b_calendar_id` (`calendar_id`),
63 65 KEY `fcal_b_fcrm_id` (`fcrm_id`),
64 66 KEY `fcal_b_event_id` (`event_id`),
65 67 KEY `fcal_b_booking_type` (`booking_type`),
66 - KEY `fcal_b_start_time` (`start_time`)
68 + KEY `fcal_b_start_time` (`start_time`),
69 + KEY `fcal_b_group_id` (`group_id`)
67 70 ) $charsetCollate;";
68 71
69 72 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
70 73
74 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta() is the safe schema-change wrapper.
71 75 dbDelta($sql);
76 + } else {
77 + $isUtmContentMigrated = $wpdb->get_col($wpdb->prepare("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='utm_content' AND TABLE_NAME=%s",$table)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
78 + if (!$isUtmContentMigrated) {
79 + $safe_table = esc_sql($table);
80 + $wpdb->query("ALTER TABLE `{$safe_table}` ADD COLUMN `utm_content` VARCHAR(192) NULL DEFAULT '' AFTER `utm_term`"); // phpcs:ignore WordPress.DB.DirectDatabaseQuery,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
81 + }
82 +
83 + $hasGroupIdIndex = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s AND INDEX_NAME='fcal_b_group_id'", $table)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
84 + if (!$hasGroupIdIndex) {
85 + $safe_table = esc_sql($table);
86 + $wpdb->query("ALTER TABLE `{$safe_table}` ADD KEY `fcal_b_group_id` (`group_id`)"); // phpcs:ignore WordPress.DB.DirectDatabaseQuery,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
87 + }
72 88 }
89 +
90 + // Row locked by Booking::assignNextGroupId().
91 + $wpdb->query("INSERT IGNORE INTO {$wpdb->options} (option_name, option_value, autoload) VALUES ('fcal_booking_group_lock', '', 'no')"); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
73 92 }
74 -}
93 +}