132 lines
4.1 KiB
PHP
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;
|
|
|
|
}
|
|
|