Finalase Export
All checks were successful
Deploy Workshop-Wahlen (DEV / PROD) / deploy (push) Successful in 13s

This commit is contained in:
ProgrammGamer
2026-02-25 18:28:13 +01:00
parent 593c1845c6
commit 5e765f0ff5

View File

@@ -1,13 +1,12 @@
<?php <?php
function kc_teilnehmer_page() { // CSV Export Handler: früh ausführen, damit kein HTML in der CSV landet
if (isset($_GET['export_teilnehmer_csv']) && current_user_can('manage_options')) {
global $wpdb; global $wpdb;
$prefix = $wpdb->prefix; $prefix = $wpdb->prefix;
kc_admin_tabs('kc_teilnehmer');
// Alle Wahlen + Workshops für Dropdowns und Validierung $all_wahlen = $wpdb->get_results("SELECT id, name FROM {$prefix}kc_wahlen WHERE deleted=0 ORDER BY id DESC");
$all_wahlen = $wpdb->get_results("SELECT id, name, anzahl_einheiten FROM {$prefix}kc_wahlen WHERE deleted=0 ORDER BY id DESC");
$all_workshops = $wpdb->get_results("SELECT id, name FROM {$prefix}kc_workshops ORDER BY name"); $all_workshops = $wpdb->get_results("SELECT id, name FROM {$prefix}kc_workshops ORDER BY name");
// Map of wahl id => name for quick lookup
$wahl_name_map = []; $wahl_name_map = [];
if (!empty($all_wahlen)) { if (!empty($all_wahlen)) {
foreach ($all_wahlen as $w) { foreach ($all_wahlen as $w) {
@@ -15,7 +14,6 @@ function kc_teilnehmer_page() {
} }
} }
// Map of workshop id => name for quick lookup in overview
$workshops_map = []; $workshops_map = [];
if (!empty($all_workshops)) { if (!empty($all_workshops)) {
foreach ($all_workshops as $ws) { foreach ($all_workshops as $ws) {
@@ -23,8 +21,6 @@ function kc_teilnehmer_page() {
} }
} }
// CSV-Export (alle Teilnehmer oder gefiltert nach Wahl/Phase)
if (isset($_GET['export_teilnehmer_csv']) && current_user_can('manage_options')) {
$export_wahl_id = isset($_GET['wahl_id']) ? intval($_GET['wahl_id']) : 0; $export_wahl_id = isset($_GET['wahl_id']) ? intval($_GET['wahl_id']) : 0;
$export_phase = isset($_GET['phase']) ? intval($_GET['phase']) : 0; $export_phase = isset($_GET['phase']) ? intval($_GET['phase']) : 0;
@@ -53,6 +49,7 @@ function kc_teilnehmer_page() {
} elseif ($export_phase > 0) { } elseif ($export_phase > 0) {
$filename_suffix = '_phase_'.$export_phase; $filename_suffix = '_phase_'.$export_phase;
} }
header('Content-Type: text/csv; charset=utf-8'); header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="kc_teilnehmer'.$filename_suffix.'.csv"'); header('Content-Disposition: attachment; filename="kc_teilnehmer'.$filename_suffix.'.csv"');
echo "\xEF\xBB\xBF"; echo "\xEF\xBB\xBF";
@@ -101,6 +98,30 @@ function kc_teilnehmer_page() {
exit; exit;
} }
function kc_teilnehmer_page() {
global $wpdb;
$prefix = $wpdb->prefix;
kc_admin_tabs('kc_teilnehmer');
// Alle Wahlen + Workshops für Dropdowns und Validierung
$all_wahlen = $wpdb->get_results("SELECT id, name, anzahl_einheiten FROM {$prefix}kc_wahlen WHERE deleted=0 ORDER BY id DESC");
$all_workshops = $wpdb->get_results("SELECT id, name FROM {$prefix}kc_workshops ORDER BY name");
// Map of wahl id => name for quick lookup
$wahl_name_map = [];
if (!empty($all_wahlen)) {
foreach ($all_wahlen as $w) {
$wahl_name_map[intval($w->id)] = $w->name;
}
}
// Map of workshop id => name for quick lookup in overview
$workshops_map = [];
if (!empty($all_workshops)) {
foreach ($all_workshops as $ws) {
$workshops_map[intval($ws->id)] = $ws->name;
}
}
// Build map of wahl -> phases + workshops (for JS) // Build map of wahl -> phases + workshops (for JS)
$wahl_map = []; $wahl_map = [];
foreach($all_wahlen as $w) { foreach($all_wahlen as $w) {