| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/clients/client2/arni-solutions.de/web/test/admin/ |
Upload File : |
<?php
declare(strict_types=1);
require __DIR__ . '/../includes/bootstrap.php';
require_admin();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!isset($_FILES['xml_file']) || !is_array($_FILES['xml_file'])) {
set_flash('danger', 'Keine Datei hochgeladen.');
redirect_to('admin/import.php');
}
$file = $_FILES['xml_file'];
if (($file['error'] ?? UPLOAD_ERR_NO_FILE) !== UPLOAD_ERR_OK) {
set_flash('danger', 'Datei-Upload fehlgeschlagen.');
redirect_to('admin/import.php');
}
$tmpName = (string)($file['tmp_name'] ?? '');
$originalName = (string)($file['name'] ?? '');
if (strtolower(pathinfo($originalName, PATHINFO_EXTENSION)) !== 'xml') {
set_flash('danger', 'Bitte eine XML-Datei hochladen.');
redirect_to('admin/import.php');
}
$result = import_test_from_xml($tmpName);
set_flash($result['success'] ? 'success' : 'danger', (string)$result['message']);
redirect_to('admin/import.php');
}
render_header('XML Import');
?>
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="card card-soft">
<div class="card-body p-4">
<h1 class="h3 mb-3">Test per XML importieren</h1>
<p class="text-muted">Lade eine XML-Datei mit Meta-Daten, Ergebnistypen und Fragen hoch.</p>
<form method="post" action="import.php" enctype="multipart/form-data">
<div class="mb-3">
<label class="form-label fw-semibold" for="xml_file">XML-Datei</label>
<input type="file" name="xml_file" id="xml_file" class="form-control" accept=".xml,text/xml,application/xml" required>
</div>
<button type="submit" class="btn btn-primary">Import starten</button>
</form>
<hr class="my-4">
<h2 class="h5">Beispielstruktur</h2>
<pre class="bg-light border rounded p-3 small mb-0"><?xml version="1.0" encoding="UTF-8"?>
<test>
<meta>
<title>Welcher Typ bist du in der Clique?</title>
<description>Ein lustiger Freundetest.</description>
<slug>clique-typ</slug>
<active>1</active>
</meta>
<results>
<result key="eskalierer">
<title>Der Eskalierer</title>
<description>Du bringst maximal Energie rein.</description>
<badge_class>danger</badge_class>
<emoji>đ„</emoji>
</result>
<result key="planer">
<title>Der Planer</title>
<description>Ohne dich lÀuft nichts geordnet.</description>
<badge_class>primary</badge_class>
<emoji>đ§ </emoji>
</result>
</results>
<questions>
<question type="single">
<text>Was machst du zuerst auf einer Party?</text>
<options>
<option result_key="eskalierer" weight="1">GetrÀnke und Action</option>
<option result_key="planer" weight="1">Erst Ăberblick verschaffen</option>
</options>
</question>
<question type="multiple">
<text>Was trifft auf dich zu?</text>
<options>
<option result_key="eskalierer" weight="1">laut</option>
<option result_key="planer" weight="1">organisiert</option>
</options>
</question>
</questions>
</test></pre>
</div>
</div>
</div>
</div>
<?php render_footer(); ?>