get($moduleName); $error = null; $notice = null; require_admin(); if (!$module) { http_response_code(404); echo '
Modul nicht gefunden.
'; return; } $fields = (array)($module['setup']['fields'] ?? []); $fieldTypes = []; $fieldMeta = []; foreach ($fields as $field) { $fname = (string)($field['name'] ?? ''); if ($fname === '') { continue; } $fieldTypes[$fname] = (string)($field['type'] ?? 'text'); $fieldMeta[$fname] = $field; } $current = modules()->settings($moduleName); $defaults = $module['db_defaults'] ?? []; if (empty($current['db']) && is_array($defaults)) { $current['db'] = $defaults; } $metadataDefaults = $module['metadata_db_defaults'] ?? []; if (empty($current['metadata_db']) && is_array($metadataDefaults)) { $current['metadata_db'] = $metadataDefaults; } $setNested = function (array &$target, string $path, mixed $value): void { $parts = explode('.', $path); $last = array_pop($parts); $node = &$target; foreach ($parts as $part) { if (!isset($node[$part]) || !is_array($node[$part])) { $node[$part] = []; } $node = &$node[$part]; } if ($last !== null && $last !== '') { $node[$last] = $value; } }; $getNested = function (array $source, string $path): mixed { $node = $source; foreach (explode('.', $path) as $part) { if (!is_array($node) || !array_key_exists($part, $node)) { return null; } $node = $node[$part]; } return $node; }; $dbGroups = []; foreach ($fields as $field) { $name = (string)($field['name'] ?? ''); if (!str_contains($name, '.')) { continue; } [$group, $key] = explode('.', $name, 2); if ($key !== 'driver') { continue; } $label = (string)($field['label'] ?? $group); $label = trim(preg_replace('/\s+DB\s+Driver$/i', ' DB', $label) ?? $label); $label = $label !== '' ? $label : $group; $dbGroups[$group] = $label; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $payload = []; foreach ($fields as $field) { $name = (string)($field['name'] ?? ''); if ($name === '') { continue; } $type = (string)($field['type'] ?? 'text'); $postKey = str_replace('.', '_', $name); $value = $_POST[$postKey] ?? null; if ($type === 'checkbox') { $value = isset($_POST[$postKey]) ? '1' : '0'; } if (is_array($value)) { continue; } $value = is_string($value) ? trim($value) : $value; if ($name === 'kea_auto_init') { $payload[$name] = $value === '1'; continue; } if (str_contains($name, '.')) { $setNested($payload, $name, $value); continue; } $payload[$name] = $value; } $current = array_replace_recursive($current, $payload); $testGroup = (string)($_POST['test_db'] ?? ''); if ($testGroup !== '') { if (!array_key_exists($testGroup, $dbGroups)) { $error = 'Unbekannte Datenbank-Konfiguration.'; } else { $dbConfig = $getNested($current, $testGroup); if (!is_array($dbConfig)) { $error = 'Datenbank-Konfiguration ist unvollstaendig.'; } else { try { $dbConfig['options'] = array_replace([ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, ], (array)($dbConfig['options'] ?? [])); $testPdo = \App\Database::createFromArray($dbConfig); $testPdo->query('SELECT 1')->fetchColumn(); $notice = $dbGroups[$testGroup] . ': Verbindung erfolgreich.'; } catch (\Throwable $e) { $error = $dbGroups[$testGroup] . ': Verbindung fehlgeschlagen. ' . $e->getMessage(); } } } } else { modules()->saveSettings($moduleName, $payload); $notice = 'Setup gespeichert.'; $module = modules()->get($moduleName) ?: $module; } } ?>
Setup

– Einrichtung

Trage die benötigten Informationen für das Modul ein.

Datenbankverbindungen testen Der Test nutzt die aktuell eingetragenen Werte aus diesem Formular und speichert sie nicht.
$label): ?>
Zugriff verwalten Zurück