diff --git a/install.php b/install.php index 1ed9c2f..92ec85b 100644 --- a/install.php +++ b/install.php @@ -1,139 +1,140 @@ -prefix; - $charset_collate = $wpdb->get_charset_collate(); - - require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); - - // Tables definitions - $tables_sql = []; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_wahlen ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - name varchar(191) NOT NULL, - beschreibung text DEFAULT NULL, - anzahl_einheiten tinyint NOT NULL DEFAULT 1, - min_kapazitaet int NOT NULL DEFAULT 0, - max_kapazitaet int NOT NULL DEFAULT 0, - freigegeben tinyint(1) NOT NULL DEFAULT 0, - deleted tinyint(1) NOT NULL DEFAULT 0, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_workshops ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - name varchar(191) NOT NULL, - beschreibung text DEFAULT NULL, - max_teilnehmer int NOT NULL DEFAULT 0, - min_teilnehmer int NOT NULL DEFAULT 0, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_teamer ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - vorname varchar(191) DEFAULT NULL, - nachname varchar(191) DEFAULT NULL, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_teilnehmer ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - vorname varchar(191) DEFAULT NULL, - nachname varchar(191) DEFAULT NULL, - wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, - phase tinyint NOT NULL DEFAULT 1, - wunsch1 bigint(20) unsigned DEFAULT NULL, - wunsch2 bigint(20) unsigned DEFAULT NULL, - wunsch3 bigint(20) unsigned DEFAULT NULL, - deleted tinyint(1) NOT NULL DEFAULT 0, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_wahl_workshops ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, - workshop_id bigint(20) unsigned NOT NULL DEFAULT 0, - phase tinyint NOT NULL DEFAULT 1, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_force_zuteilung ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0, - wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, - phase tinyint NOT NULL DEFAULT 1, - workshop_id bigint(20) unsigned DEFAULT NULL, - kommentar text DEFAULT NULL, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_zuteilung ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0, - vorname varchar(191) DEFAULT NULL, - nachname varchar(191) DEFAULT NULL, - wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, - phase tinyint NOT NULL DEFAULT 1, - workshop_id bigint(20) unsigned DEFAULT NULL, - wunsch_rang tinyint DEFAULT NULL, - PRIMARY KEY (id) - ) $charset_collate"; - - $tables_sql[] = "CREATE TABLE {$prefix}kc_workshop_teamer ( - id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - workshop_id bigint(20) unsigned DEFAULT NULL, - teamer_id bigint(20) unsigned DEFAULT NULL, - PRIMARY KEY (id) - ) $charset_collate"; - - foreach ($tables_sql as $sql) { - dbDelta($sql); - } - - // Post-creation migration guard: ensure min_teilnehmer exists for older installs - $col = $wpdb->get_var($wpdb->prepare("SHOW COLUMNS FROM {$prefix}kc_workshops LIKE %s", 'min_teilnehmer')); - if (empty($col)) { - // try to add the column (no-op on newer installs) - $wpdb->query("ALTER TABLE {$prefix}kc_workshops ADD COLUMN min_teilnehmer INT NOT NULL DEFAULT 0"); - } - - // Optionally store plugin version - add_option('kc_workshopwahl_db_version', '1.0'); -} - -function kc_uninstall_tables() { - global $wpdb; - $prefix = $wpdb->prefix; - - $tables = [ - "{$prefix}kc_zuteilung", - "{$prefix}kc_force_zuteilung", - "{$prefix}kc_wahl_workshops", - "{$prefix}kc_teilnehmer", - "{$prefix}kc_teamer", - "{$prefix}kc_workshops", - "{$prefix}kc_wahlen", - "{$prefix}kc_workshop_teamer" - ]; - - foreach ($tables as $t) { - $wpdb->query("DROP TABLE IF EXISTS $t"); - } - - delete_option('kc_workshopwahl_db_version'); -} - -// Backwards-compat wrapper for register_activation_hook usage -if (!function_exists('kc_register_hooks_internal')) { - function kc_register_hooks_internal() { - // intentionally left blank - } -} - -?> +prefix; + $charset_collate = $wpdb->get_charset_collate(); + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + // Tables definitions + $tables_sql = []; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_wahlen ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + name varchar(191) NOT NULL, + beschreibung text DEFAULT NULL, + anzahl_einheiten tinyint NOT NULL DEFAULT 1, + min_kapazitaet int NOT NULL DEFAULT 0, + max_kapazitaet int NOT NULL DEFAULT 0, + freigegeben tinyint(1) NOT NULL DEFAULT 0, + deleted tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_workshops ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + name varchar(191) NOT NULL, + beschreibung text DEFAULT NULL, + max_teilnehmer int NOT NULL DEFAULT 0, + min_teilnehmer int NOT NULL DEFAULT 0, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_teamer ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + vorname varchar(191) DEFAULT NULL, + nachname varchar(191) DEFAULT NULL, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_teilnehmer ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + vorname varchar(191) DEFAULT NULL, + nachname varchar(191) DEFAULT NULL, + wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, + phase tinyint NOT NULL DEFAULT 1, + wunsch1 bigint(20) unsigned DEFAULT NULL, + wunsch2 bigint(20) unsigned DEFAULT NULL, + wunsch3 bigint(20) unsigned DEFAULT NULL, + deleted tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_wahl_workshops ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, + workshop_id bigint(20) unsigned NOT NULL DEFAULT 0, + phase tinyint NOT NULL DEFAULT 1, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_force_zuteilung ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0, + wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, + phase tinyint NOT NULL DEFAULT 1, + workshop_id bigint(20) unsigned DEFAULT NULL, + kommentar text DEFAULT NULL, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_zuteilung ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + teilnehmer_id bigint(20) unsigned NOT NULL DEFAULT 0, + vorname varchar(191) DEFAULT NULL, + nachname varchar(191) DEFAULT NULL, + wahl_id bigint(20) unsigned NOT NULL DEFAULT 0, + phase tinyint NOT NULL DEFAULT 1, + workshop_id bigint(20) unsigned DEFAULT NULL, + wunsch_rang tinyint DEFAULT NULL, + PRIMARY KEY (id) + ) $charset_collate"; + + $tables_sql[] = "CREATE TABLE {$prefix}kc_workshop_teamer ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + workshop_id bigint(20) unsigned DEFAULT NULL, + teamer_id bigint(20) unsigned DEFAULT NULL, + PRIMARY KEY (id) + ) $charset_collate"; + + foreach ($tables_sql as $sql) { + dbDelta($sql); + } + + // Post-creation migration guard: ensure min_teilnehmer exists for older installs + $col = $wpdb->get_var($wpdb->prepare("SHOW COLUMNS FROM {$prefix}kc_workshops LIKE %s", 'min_teilnehmer')); + if (empty($col)) { + // try to add the column (no-op on newer installs) + $wpdb->query("ALTER TABLE {$prefix}kc_workshops ADD COLUMN min_teilnehmer INT NOT NULL DEFAULT 0"); + } + + // Optionally store plugin version + add_option('kc_workshopwahl_db_version', '1.0'); +} + +function kc_uninstall_tables() { + global $wpdb; + $prefix = $wpdb->prefix; + + $tables = [ + "{$prefix}kc_zuteilung", + "{$prefix}kc_force_zuteilung", + "{$prefix}kc_wahl_workshops", + "{$prefix}kc_teilnehmer", + "{$prefix}kc_teamer", + "{$prefix}kc_workshops", + "{$prefix}kc_wahlen", + "{$prefix}kc_workshop_teamer" + ]; + + foreach ($tables as $t) { + $wpdb->query("DROP TABLE IF EXISTS $t"); + } + + delete_option('kc_workshopwahl_db_version'); +} + +// Backwards-compat wrapper for register_activation_hook usage +if (!function_exists('kc_register_hooks_internal')) { + function kc_register_hooks_internal() { + // intentionally left blank + } +} + +?>