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 +13 -1 1.10.01 → 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,
@@ -63,13 +64,15 @@
63 64 KEY `fcal_b_calendar_id` (`calendar_id`),
64 65 KEY `fcal_b_fcrm_id` (`fcrm_id`),
65 66 KEY `fcal_b_event_id` (`event_id`),
66 67 KEY `fcal_b_booking_type` (`booking_type`),
67 - KEY `fcal_b_start_time` (`start_time`)
68 + KEY `fcal_b_start_time` (`start_time`),
69 + KEY `fcal_b_group_id` (`group_id`)
68 70 ) $charsetCollate;";
69 71
70 72 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
71 73
74 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta() is the safe schema-change wrapper.
72 75 dbDelta($sql);
73 76 } else {
74 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
75 78 if (!$isUtmContentMigrated) {
@@ -75,7 +78,16 @@
75 78 if (!$isUtmContentMigrated) {
76 79 $safe_table = esc_sql($table);
77 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
78 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 + }
79 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
80 92 }
81 93 }