Restore to commit 74e578279624c6045ca440a3459ebfa1f8d54191
This commit is contained in:
131
chat/templates/Form Builder/includes/class-db-migration.php
Normal file
131
chat/templates/Form Builder/includes/class-db-migration.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
/**
|
||||
* Database Migration Class
|
||||
*
|
||||
* Handles creation and management of database tables for forms and responses.
|
||||
*
|
||||
* @package PCFormBuilder
|
||||
*/
|
||||
|
||||
class PC_DB_Migration {
|
||||
|
||||
private static $charset_collate = '';
|
||||
|
||||
public static function activate() {
|
||||
self::set_charset();
|
||||
self::create_forms_table();
|
||||
self::create_fields_table();
|
||||
self::create_responses_table();
|
||||
self::create_response_data_table();
|
||||
|
||||
update_option( 'pcfb_version', PCFB_VERSION );
|
||||
}
|
||||
|
||||
public static function deactivate() {
|
||||
// Cleanup if needed
|
||||
}
|
||||
|
||||
private static function set_charset() {
|
||||
global $wpdb;
|
||||
self::$charset_collate = $wpdb->get_charset_collate();
|
||||
}
|
||||
|
||||
private static function create_forms_table() {
|
||||
global $wpdb;
|
||||
|
||||
$table_name = $wpdb->prefix . 'pcfb_forms';
|
||||
|
||||
$sql = "CREATE TABLE {$table_name} (
|
||||
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
name varchar(255) NOT NULL,
|
||||
description text NOT NULL,
|
||||
settings longtext NOT NULL,
|
||||
status varchar(20) DEFAULT 'active' NOT NULL,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) " . self::$charset_collate . ";";
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
||||
dbDelta( $sql );
|
||||
}
|
||||
|
||||
private static function create_fields_table() {
|
||||
global $wpdb;
|
||||
|
||||
$table_name = $wpdb->prefix . 'pcfb_fields';
|
||||
|
||||
$sql = "CREATE TABLE {$table_name} (
|
||||
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
form_id mediumint(9) NOT NULL,
|
||||
field_type varchar(50) NOT NULL,
|
||||
field_label varchar(255) NOT NULL,
|
||||
field_name varchar(255) NOT NULL,
|
||||
placeholder varchar(255) DEFAULT '',
|
||||
options longtext DEFAULT NULL,
|
||||
validation_rules longtext DEFAULT NULL,
|
||||
sort_order mediumint(9) DEFAULT 0 NOT NULL,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY form_id (form_id)
|
||||
) " . self::$charset_collate . ";";
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
||||
dbDelta( $sql );
|
||||
}
|
||||
|
||||
private static function create_responses_table() {
|
||||
global $wpdb;
|
||||
|
||||
$table_name = $wpdb->prefix . 'pcfb_responses';
|
||||
|
||||
$sql = "CREATE TABLE {$table_name} (
|
||||
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
form_id mediumint(9) NOT NULL,
|
||||
user_ip varchar(100) DEFAULT '',
|
||||
user_agent text DEFAULT '',
|
||||
status varchar(20) DEFAULT 'new' NOT NULL,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY form_id (form_id)
|
||||
) " . self::$charset_collate . ";";
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
||||
dbDelta( $sql );
|
||||
}
|
||||
|
||||
private static function create_response_data_table() {
|
||||
global $wpdb;
|
||||
|
||||
$table_name = $wpdb->prefix . 'pcfb_response_data';
|
||||
|
||||
$sql = "CREATE TABLE {$table_name} (
|
||||
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
response_id mediumint(9) NOT NULL,
|
||||
field_id mediumint(9) NOT NULL,
|
||||
field_value longtext NOT NULL,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY response_id (response_id),
|
||||
KEY field_id (field_id)
|
||||
) " . self::$charset_collate . ";";
|
||||
|
||||
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
||||
dbDelta( $sql );
|
||||
}
|
||||
|
||||
public static function drop_tables() {
|
||||
global $wpdb;
|
||||
|
||||
$tables = array(
|
||||
$wpdb->prefix . 'pcfb_response_data',
|
||||
$wpdb->prefix . 'pcfb_responses',
|
||||
$wpdb->prefix . 'pcfb_fields',
|
||||
$wpdb->prefix . 'pcfb_forms',
|
||||
);
|
||||
|
||||
foreach ( $tables as $table ) {
|
||||
$wpdb->query( "DROP TABLE IF EXISTS {$table}" );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user