| @@ -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`), |
| @@ -67,8 +69,15 @@ | ||
| 67 | 69 | ) $charsetCollate;"; |
| 68 | 70 | |
| 69 | 71 | require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); |
| 70 | 72 | |
| 73 | + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta() is the safe schema-change wrapper. | |
| 71 | 74 | dbDelta($sql); |
| 75 | + } else { | |
| 76 | + $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 | |
| 77 | + if (!$isUtmContentMigrated) { | |
| 78 | + $safe_table = esc_sql($table); | |
| 79 | + $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 | + } | |
| 72 | 81 | } |
| 73 | 82 | } |
| 74 | -} | |
| 83 | +} | |