Files
t2000-steckerpruefer/actions/bridge-editor.php
2026-01-02 20:52:43 +01:00

132 lines
4.1 KiB
PHP

<?php
session_start();
$db = new SQLite3('../db-test/test.db');
$action = $_GET["action"];
$meta = $_GET["meta"];
$bridgeName = $_SESSION["meta"];
$plug = json_decode(file_get_contents("../settings.json") , true)["plug"];
// Funktion zur Bereinigung des Formats
function cleanPinsArray(&$data) {
// Überprüfen, ob das "pins"-Array vorhanden ist und es ein Array ist
if (isset($data) && is_array($data)) {
// Nur gültige Pins behalten
$data = array_filter($data, function($pin) {
// Sicherstellen, dass das Element nicht null ist und dass jedes Element im "pins"-Array genau 2 Einträge hat
return is_array($pin) && count($pin) === 2 && is_integer($pin[0]) && is_integer($pin[1]);
});
// Neu indexieren, um die Indizes korrekt zu halten
$data = array_values($data);
}
}
switch ($action) {
case "edit":
$bridge_name = $bridgeName;
$nodes = json_decode($meta, true); // Beispielwert
$nodes = $nodes["pins"]; // Beispielwert
cleanPinsArray($nodes); // Dies stellt sicher, dass Javscript valide Werte bringt und die Datenbank nicht verunreinigt wird.
if (empty($nodes))
{
$message[0] = false;
$message[1] = "Es wurden keine Änderungen gespeichert.";
$message = json_encode($message);
print ($message);
die();
}
$db->exec(" DELETE FROM nodes WHERE required_by = '" . $bridge_name . "' and plug_id = '" . $plug . "'; ");
foreach($nodes as $node) {
$from = $node[0];
$to = $node[1];
$db->exec(" INSERT INTO nodes (required_by, node_from, node_to, plug_id) VALUES ('" . $bridge_name . "', '" . $from . "', '" . $to . "', '" . $plug . "'); ");
}
$message[0] = true;
$message[1] = "Die Änderungen für die Brücke $bridgeName wurden gespeichert!";
$message = json_encode($message);
print ($message);
die();
break;
case "add":
// Eingabedaten
$bridgeName = $bridgeName;
$nodes = json_decode($meta, true);
$name = $nodes["name"];
$nodes = $nodes["pins"];
cleanPinsArray($nodes); // Dies stellt sicher, dass Javscript valide Werte bringt und die Datenbank nicht verunreinigt wird.
// sicherstellen, dass Werte gesetzt sind
if (empty($nodes) || empty($name))
{
$message[0] = false;
$message[1] = "Es wurden keine Änderungen gespeichert, da Parameter fehlten.";
$message = json_encode($message);
print ($message);
die();
}
$result = $db->query("SELECT COUNT(*) as anzahl FROM bridges WHERE id = '" . $name . "';");
$row = $result->fetchArray(SQLITE3_ASSOC);
$number = $row['anzahl'];
if($number > 0) {
$message[0] = false;
$message[1] = "Es gibt bereits eine Brücke, die " . $name . " heißt. Bitte einen anderen Namen wählen oder die andere Brücke " . $name . " löschen/bearbeiten. Stellen Sie zudem sicher, dass Sie den korrekten Steckertypen verwenden.";
$message = json_encode($message);
print ($message);
die();
}
$db->exec(" INSERT INTO bridges (plug_id, id) VALUES (" . $plug . ", '" . $name . "'); ");
foreach($nodes as $node) {
$from = $node[0];
$to = $node[1];
$db->exec(" INSERT INTO nodes (required_by, node_from, node_to, plug_id) VALUES ('" . $name . "', '" . $from . "', '" . $to . "', '" . $plug . "'); ");
}
$message[0] = true;
$message[1] = "Die Brücke $name wurde angelegt!";
$message = json_encode($message);
print ($message);
die();
break;
case "remove":
$bridge_name = $meta;
$db->exec(" DELETE FROM nodes WHERE required_by = '" . $bridge_name . "' and plug_id = '" . $plug . "'; ");
$db->exec(" DELETE FROM bridges WHERE id = '" . $bridge_name . "' and plug_id = '" . $plug . "'; ");
$message[0] = true;
$message[1] = "Die Brücke $bridge_name wurde nun gelöscht.";
$message = json_encode($message);
print ($message);
die();
break;
}