Upload files to "/"
add root files
This commit is contained in:
139
install.php
Normal file
139
install.php
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
<?php
|
||||||
|
if (!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create plugin database tables on activation and remove them on deactivation.
|
||||||
|
*/
|
||||||
|
function kc_install_tables() {
|
||||||
|
global $wpdb;
|
||||||
|
$prefix = $wpdb->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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
68
konficastle-workshopwahl.php
Normal file
68
konficastle-workshopwahl.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
Plugin Name: Workshopwahl
|
||||||
|
Description: Workshop wahl plugin mit zuteilungsfunktion
|
||||||
|
Version: 1.0
|
||||||
|
Author: Linus Nilson
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
|
// Stylesheet einbinden
|
||||||
|
add_action('admin_enqueue_scripts', function($hook) {
|
||||||
|
// Nur auf den Plugin-Seiten laden (optional: prüfe $hook!)
|
||||||
|
if (strpos($hook, 'kc_') !== false) {
|
||||||
|
wp_enqueue_style(
|
||||||
|
'kc-admin-style',
|
||||||
|
plugin_dir_url(__FILE__) . 'assets/kc-admin-style.css',
|
||||||
|
[],
|
||||||
|
filemtime(plugin_dir_path(__FILE__) . 'assets/kc-admin-style.css')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
add_action('admin_enqueue_scripts', function($hook) {
|
||||||
|
// Nur für unser Plugin-Menü!
|
||||||
|
if (strpos($hook, 'kc_') === false) return;
|
||||||
|
wp_enqueue_script('select2', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js', ['jquery'], null, true);
|
||||||
|
wp_enqueue_style('select2', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
add_action('wp_enqueue_scripts', function() {
|
||||||
|
wp_enqueue_style('kc-workshopwahl-form', plugins_url('assets/frontend-form.css', __FILE__));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Zentrale Admin-Menüstruktur
|
||||||
|
add_action('admin_menu', function() {
|
||||||
|
add_menu_page('Wahlen', 'Wahlen', 'manage_options', 'kc_wahlen', 'kc_wahlen_page');
|
||||||
|
|
||||||
|
add_submenu_page('kc_wahlen', 'Teamer', 'Teamer', 'manage_options', 'kc_teamer', 'kc_teamer_page');
|
||||||
|
|
||||||
|
add_submenu_page('kc_wahlen', 'Workshops', 'Workshops', 'manage_options', 'kc_workshops', 'kc_workshops_page');
|
||||||
|
|
||||||
|
add_submenu_page('kc_wahlen', 'Teilnehmer', 'Teilnehmer', 'manage_options', 'kc_teilnehmer', 'kc_teilnehmer_page');
|
||||||
|
|
||||||
|
add_submenu_page('kc_wahlen', 'Force-Zuteilung', 'Force-Zuteilung', 'manage_options', 'kc_force_zuteilung', 'kc_force_zuteilung_page');
|
||||||
|
|
||||||
|
add_submenu_page('kc_wahlen', 'Zuteilungen', 'Zuteilungen', 'manage_options', 'kc_zuteilungen', 'kc_zuteilungen_page');
|
||||||
|
|
||||||
|
// Data management (test data) - visible only to super-admin (we'll check inside page)
|
||||||
|
add_submenu_page('kc_wahlen', 'Datenverwaltung', 'Datenverwaltung', 'manage_options', 'kc_data', 'kc_data_page');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Includes – jede Admin-Seite ruft oben kc_admin_tabs() auf!
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/admin-wahlen.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/admin-workshops.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/admin-teilnehmer.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/admin-teamer.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/force-zuteilung.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/admin-zuteilungen.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/frontend-form.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/frontend-ergebnis.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/zuteilungslogik.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'includes/admin-data.php';
|
||||||
|
require_once plugin_dir_path(__FILE__).'install.php';
|
||||||
Reference in New Issue
Block a user