Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluentform/database/Migrations/SubmissionMeta.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
3
+
namespace FluentForm\Database\Migrations;
4
+
5
+
class SubmissionMeta
6
+
{
7
+
/**
8
+
* Migrate the table.
9
+
*
10
+
* @return void
11
+
*/
12
+
public static function migrate()
13
+
{
14
+
global $wpdb;
15
+
16
+
$charsetCollate = $wpdb->get_charset_collate();
17
+
18
+
$table = $wpdb->prefix . 'fluentform_submission_meta';
19
+
20
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Migration file, direct query needed
21
+
if ($wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE %s", $table)) != $table) {
22
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- Migration file, schema change is the purpose
23
+
$sql = "CREATE TABLE $table (
24
+
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
25
+
`response_id` BIGINT(20) UNSIGNED NULL,
26
+
`form_id` INT UNSIGNED NULL,
27
+
`meta_key` VARCHAR(45) NULL,
28
+
`value` LONGTEXT NULL,
29
+
`status` VARCHAR(45) NULL,
30
+
`user_id` INT UNSIGNED NULL,
31
+
`name` VARCHAR(45) NULL,
32
+
`created_at` TIMESTAMP NULL,
33
+
`updated_at` TIMESTAMP NULL,
34
+
PRIMARY KEY (`id`),
35
+
KEY `response_id_meta_key` (`response_id`, `meta_key`)) $charsetCollate;";
36
+
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
37
+
dbDelta($sql);
38
+
} else {
39
+
// Add indexes to existing tables
40
+
self::maybeAddIndexes();
41
+
}
42
+
}
43
+
44
+
/**
45
+
* Add indexes to existing tables for better query performance.
46
+
*
47
+
* @return void
48
+
*/
49
+
private static function maybeAddIndexes()
50
+
{
51
+
global $wpdb;
52
+
53
+
$table = $wpdb->prefix . 'fluentform_submission_meta';
54
+
55
+
// Check if indexes already exist
56
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder -- Migration file, checking indexes, %1s is for identifier
57
+
$indexes = $wpdb->get_results($wpdb->prepare("SHOW INDEX FROM %1s", $table), ARRAY_A);
58
+
59
+
$existingIndexes = [];
60
+
foreach ($indexes as $index) {
61
+
$existingIndexes[] = $index['Key_name'];
62
+
}
63
+
64
+
// Add composite index if it doesn't exist
65
+
if (!in_array('response_id_meta_key', $existingIndexes)) {
66
+
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder -- Migration file, adding composite index for performance, %1s is for identifier
67
+
$wpdb->query($wpdb->prepare("ALTER TABLE %1s ADD KEY `response_id_meta_key` (`response_id`, `meta_key`)", $table));
68
+
}
69
+
70
+
71
+
}
72
+
}
73
+