| @@ -64,9 +64,10 @@ | ||
| 64 | 64 | KEY `fcal_b_calendar_id` (`calendar_id`), |
| 65 | 65 | KEY `fcal_b_fcrm_id` (`fcrm_id`), |
| 66 | 66 | KEY `fcal_b_event_id` (`event_id`), |
| 67 | 67 | KEY `fcal_b_booking_type` (`booking_type`), |
| 68 | - KEY `fcal_b_start_time` (`start_time`) | |
| 68 | + KEY `fcal_b_start_time` (`start_time`), | |
| 69 | + KEY `fcal_b_group_id` (`group_id`) | |
| 69 | 70 | ) $charsetCollate;"; |
| 70 | 71 | |
| 71 | 72 | require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); |
| 72 | 73 | |
| @@ -77,7 +78,16 @@ | ||
| 77 | 78 | if (!$isUtmContentMigrated) { |
| 78 | 79 | $safe_table = esc_sql($table); |
| 79 | 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 |
| 80 | 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 | + } | |
| 81 | 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 | |
| 82 | 92 | } |
| 83 | 93 | } |