Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluentform/database/Migrations/FormAnalytics.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 +
3 + namespace FluentForm\Database\Migrations;
4 +
5 + class FormAnalytics
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_form_analytics';
19 +
20 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- 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` INT UNSIGNED NOT NULL AUTO_INCREMENT,
25 + `form_id` INT UNSIGNED NULL,
26 + `user_id` INT UNSIGNED NULL,
27 + `source_url` TEXT NOT NULL,
28 + `platform` CHAR(30) NULL,
29 + `browser` CHAR(30) NULL,
30 + `city` VARCHAR (100) NULL,
31 + `country` VARCHAR (100) NULL,
32 + `ip` CHAR(15) NULL,
33 + `count` INT DEFAULT 1,
34 + `created_at` TIMESTAMP NULL,
35 + PRIMARY KEY (`id`) ) $charsetCollate;";
36 +
37 + require_once ABSPATH . 'wp-admin/includes/upgrade.php';
38 +
39 + dbDelta($sql);
40 + }else{
41 + // increase column type of source_url from varchar to text - for already installed sites
42 + $column_name = 'source_url';
43 + $dataType = $wpdb->get_col_length($table, $column_name);
44 + $type = $dataType['type'] ?? false;
45 + if ($type == 'char') {
46 + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Migration file, table/column names cannot be prepared
47 + $sql = "ALTER TABLE {$table} MODIFY {$column_name} TEXT NOT NULL";
48 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter -- Migration file, schema change is the purpose, table/column names are safe
49 + $wpdb->query($sql);
50 + }
51 + }
52 +
53 + }
54 + }
55 +