/* ========================================================================== 1. gmrtc-db-setup.php ========================================================================== */ if ( ! defined( 'ABSPATH' ) ) exit; function gmrtc_install_database() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_trainings = $wpdb->prefix . 'gmrtc_trainings'; $table_participants = $wpdb->prefix . 'gmrtc_participants'; $table_settings = $wpdb->prefix . 'gmrtc_settings'; $table_logs = $wpdb->prefix . 'gmrtc_logs'; $sql = "CREATE TABLE $table_trainings ( id bigint(20) NOT NULL AUTO_INCREMENT, trn_id varchar(8) NOT NULL, title varchar(80) NOT NULL, start_date date NOT NULL, end_date date NOT NULL, days int(3) NOT NULL, type varchar(20) NOT NULL, lang varchar(10) NOT NULL, slogan varchar(255), explanation text, quota int(5) NOT NULL, price_try decimal(10,2) NOT NULL, price_usd decimal(10,2) NOT NULL, discount_pct int(3) DEFAULT 0, poster_url varchar(255), status varchar(20) DEFAULT 'Template' NOT NULL, cert_bg_attendance varchar(255), cert_bg_bronze varchar(255), cert_bg_silver varchar(255), cert_bg_gold varchar(255), cert_text_achieved text, cert_text_attendance text, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY trn_id (trn_id) ) $charset_collate; CREATE TABLE $table_participants ( id bigint(20) NOT NULL AUTO_INCREMENT, ptcp_certno bigint(20) NOT NULL, trn_id varchar(8) NOT NULL, ptcp_status varchar(30) DEFAULT 'Prestart' NOT NULL, ptcp_name varchar(100) NOT NULL, ptcp_surname varchar(100) NOT NULL, ptcp_email varchar(100) NOT NULL, ptcp_tel varchar(30) NOT NULL, ptcp_address text, ptcp_province varchar(50) NOT NULL, ptcp_country varchar(50) NOT NULL, ptcp_organization varchar(150), ptcp_jobtitle varchar(100), ptcp_billing_type varchar(20) DEFAULT 'Individual', ptcp_tax_office varchar(100), ptcp_tax_no varchar(50), ip_address varchar(45) NOT NULL, test1_weight decimal(5,2) DEFAULT 0, test1_grade decimal(5,2) DEFAULT 0, test2_weight decimal(5,2) DEFAULT 0, test2_grade decimal(5,2) DEFAULT 0, test3_weight decimal(5,2) DEFAULT 0, test3_grade decimal(5,2) DEFAULT 0, bonus1_pts decimal(5,2) DEFAULT 0, bonus2_pts decimal(5,2) DEFAULT 0, bonus3_pts decimal(5,2) DEFAULT 0, achieved_level varchar(20), paid_try decimal(10,2) DEFAULT 0, paid_usd decimal(10,2) DEFAULT 0, date_paid datetime, refund_try decimal(10,2) DEFAULT 0, refund_usd decimal(10,2) DEFAULT 0, date_refund datetime, req_pay_hash varchar(64), req_pay_exp datetime, approval_date datetime, certified_date datetime, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY ptcp_certno (ptcp_certno) ) $charset_collate; CREATE TABLE $table_settings ( id bigint(20) NOT NULL AUTO_INCREMENT, setting_key varchar(50) NOT NULL, setting_value text NOT NULL, PRIMARY KEY (id), UNIQUE KEY setting_key (setting_key) ) $charset_collate; CREATE TABLE $table_logs ( id bigint(20) NOT NULL AUTO_INCREMENT, log_type varchar(50) NOT NULL, ip_address varchar(45) NOT NULL, location varchar(100), target_id varchar(50) NOT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $sql ); $default_settings = array( 'smtp_host' => 'smtp.hostinger.com', 'smtp_port' => '465', 'smtp_user' => '', 'smtp_pass' => '', 'notify_email' => '', 'iyzico_api_key' => '', 'iyzico_secret_key' => '', 'iyzico_base_url' => 'https://sandbox-api.iyzipay.com', 'max_ip_attempts' => '5', 'recaptcha_site_key' => '', 'recaptcha_secret_key' => '' ); foreach ( $default_settings as $key => $value ) { $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO $table_settings (setting_key, setting_value) VALUES (%s, %s)", $key, $value ) ); } } function gmrtc_reset_database() { global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}gmrtc_trainings"); $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}gmrtc_participants"); $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}gmrtc_settings"); $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}gmrtc_logs"); gmrtc_install_database(); } add_action('admin_init', 'gmrtc_check_reset_database'); function gmrtc_check_reset_database() { if ( isset($_GET['gmrtc_reset']) && $_GET['gmrtc_reset'] == '1' && current_user_can('manage_options') ) { gmrtc_reset_database(); exit('Database reset successful. Please remove ?gmrtc_reset=1 from the URL and refresh.'); } } ?>