prepare("SELECT \"Admin\" FROM user_permissions WHERE user_id = ?"); $stmt->execute([$_SESSION["user_id"]]); $isAdmin = $stmt->fetchColumn(); if ((int)$isAdmin !== 1) { header("Location: {$g_httpHomePath}"); exit(); } // Berechtigungsrollen aus user_permissions laden function getPermissionRoles(PDO $pdo): array { $roles = []; $result = $pdo->query("SELECT column_name FROM information_schema.columns WHERE table_name = 'user_permissions' AND table_schema = 'public'"); while ($column = $result->fetch(PDO::FETCH_ASSOC)) { $field = $column['column_name']; if (!in_array($field, ['p_id', 'user_id'], true)) { $roles[] = $field; } } return $roles; } $permissionRoles = getPermissionRoles($pdo); // ── POST-Handler ────────────────────────────────────────────────── if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Kategorie anlegen if (isset($_POST['addCategory'])) { $name = trim($_POST['cat_name'] ?? ''); $role = trim($_POST['cat_permission_role'] ?? ''); if ($name !== '') { $stmt = $pdo->prepare("INSERT INTO kalli_categories (name, permission_role, created_at, updated_at) VALUES (?, ?, NOW(), NOW())"); $stmt->execute([$name, $role]); header("Location: admin_kalli.php?kalli_msg=1"); exit(); } header("Location: admin_kalli.php?kalli_msg=5"); exit(); } // Kategorie bearbeiten if (isset($_POST['editCategory'])) { $id = (int)($_POST['cat_id'] ?? 0); $name = trim($_POST['cat_name'] ?? ''); $role = trim($_POST['cat_permission_role'] ?? ''); if ($id > 0 && $name !== '') { $stmt = $pdo->prepare("UPDATE kalli_categories SET name = ?, permission_role = ?, updated_at = NOW() WHERE id = ?"); $stmt->execute([$name, $role, $id]); header("Location: admin_kalli.php?kalli_msg=1"); exit(); } header("Location: admin_kalli.php?kalli_msg=5"); exit(); } // Kategorie löschen (CASCADE) if (isset($_POST['deleteCategory'])) { $id = (int)($_POST['cat_id'] ?? 0); if ($id > 0) { // Zuerst zugehörige Terminarten löschen $stmt = $pdo->prepare("DELETE FROM kalli_appointment_types WHERE category_id = ?"); $stmt->execute([$id]); $stmt = $pdo->prepare("DELETE FROM kalli_categories WHERE id = ?"); $stmt->execute([$id]); header("Location: admin_kalli.php?kalli_msg=2"); exit(); } header("Location: admin_kalli.php?kalli_msg=5"); exit(); } // Terminart anlegen if (isset($_POST['addType'])) { $catId = (int)($_POST['type_category_id'] ?? 0); $name = trim($_POST['type_name'] ?? ''); $displayLabel = trim($_POST['type_display_label'] ?? ''); $planungsstatus = trim($_POST['type_planungsstatus'] ?? 'fix'); $anzeigeziel = trim($_POST['type_anzeigeziel'] ?? 'intern'); $gruppenzuordnung = trim($_POST['type_gruppenzuordnung'] ?? ''); $anzeigezielOrt = trim($_POST['type_anzeigeziel_ort'] ?? ''); $anzeigezielNotiz = trim($_POST['type_anzeigeziel_notiz'] ?? ''); $anzeigezielVerantw = trim($_POST['type_anzeigeziel_verantwortlicher'] ?? ''); $defaultText = trim($_POST['type_default_text'] ?? ''); if ($catId > 0 && $name !== '') { $stmt = $pdo->prepare("INSERT INTO kalli_appointment_types (category_id, name, display_label, planungsstatus, anzeigeziel, gruppenzuordnung, anzeigeziel_ort, anzeigeziel_notiz, anzeigeziel_verantwortlicher, default_text, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())"); $stmt->execute([$catId, $name, $displayLabel, $planungsstatus, $anzeigeziel, $gruppenzuordnung, $anzeigezielOrt, $anzeigezielNotiz, $anzeigezielVerantw, $defaultText]); header("Location: admin_kalli.php?kalli_msg=3"); exit(); } header("Location: admin_kalli.php?kalli_msg=5"); exit(); } // Terminart bearbeiten if (isset($_POST['editType'])) { $id = (int)($_POST['type_id'] ?? 0); $catId = (int)($_POST['type_category_id'] ?? 0); $name = trim($_POST['type_name'] ?? ''); $displayLabel = trim($_POST['type_display_label'] ?? ''); $planungsstatus = trim($_POST['type_planungsstatus'] ?? 'fix'); $anzeigeziel = trim($_POST['type_anzeigeziel'] ?? 'intern'); $gruppenzuordnung = trim($_POST['type_gruppenzuordnung'] ?? ''); $anzeigezielOrt = trim($_POST['type_anzeigeziel_ort'] ?? ''); $anzeigezielNotiz = trim($_POST['type_anzeigeziel_notiz'] ?? ''); $anzeigezielVerantw = trim($_POST['type_anzeigeziel_verantwortlicher'] ?? ''); $defaultText = trim($_POST['type_default_text'] ?? ''); if ($id > 0 && $name !== '') { $stmt = $pdo->prepare("UPDATE kalli_appointment_types SET category_id = ?, name = ?, display_label = ?, planungsstatus = ?, anzeigeziel = ?, gruppenzuordnung = ?, anzeigeziel_ort = ?, anzeigeziel_notiz = ?, anzeigeziel_verantwortlicher = ?, default_text = ?, updated_at = NOW() WHERE id = ?"); $stmt->execute([$catId, $name, $displayLabel, $planungsstatus, $anzeigeziel, $gruppenzuordnung, $anzeigezielOrt, $anzeigezielNotiz, $anzeigezielVerantw, $defaultText, $id]); header("Location: admin_kalli.php?kalli_msg=3"); exit(); } header("Location: admin_kalli.php?kalli_msg=5"); exit(); } // Terminart löschen if (isset($_POST['deleteType'])) { $id = (int)($_POST['type_id'] ?? 0); if ($id > 0) { $stmt = $pdo->prepare("DELETE FROM kalli_appointment_types WHERE id = ?"); $stmt->execute([$id]); header("Location: admin_kalli.php?kalli_msg=4"); exit(); } header("Location: admin_kalli.php?kalli_msg=5"); exit(); } } // ── Daten laden ─────────────────────────────────────────────────── $categories = $pdo->query("SELECT * FROM kalli_categories ORDER BY sort_order ASC, name ASC")->fetchAll(PDO::FETCH_ASSOC); $typesRaw = $pdo->query("SELECT * FROM kalli_appointment_types ORDER BY sort_order ASC, name ASC")->fetchAll(PDO::FETCH_ASSOC); $typesByCategory = []; foreach ($typesRaw as $t) { $typesByCategory[(int)$t['category_id']][] = $t; } ?>
Adminpanel
Kalli – Terminarten
Kategorien, Terminarten
+ Neue Kategorie
Noch keine Kategorien vorhanden. Erstelle eine neue Kategorie, um Terminarten zu verwalten.
Terminart
Name Anzeige-Label Planungsstatus Anzeigeziel Gruppe Ort Notiz Verantw. Standardtext
Keine Terminarten in dieser Kategorie.
Neue Kategorie
Kategorie für Kalli-Terminarten anlegen
Kategorie bearbeiten
Änderungen an der Kategorie vornehmen
Kategorie löschen
Achtung: Alle zugehörigen Terminarten werden ebenfalls gelöscht!

Soll die Kategorie wirklich gelöscht werden?

Dieser Vorgang kann nicht rückgängig gemacht werden.

Neue Terminart
Terminart anlegen
Terminart bearbeiten
Änderungen an der Terminart vornehmen
Terminart löschen
Soll diese Terminart wirklich gelöscht werden?

Soll die Terminart wirklich gelöscht werden?

Dieser Vorgang kann nicht rückgängig gemacht werden.