single( "SELECT id, name FROM devices WHERE id = ?", "i", [$deviceId] ); if (!$device) { $_SESSION['error'] = "Geraet nicht gefunden"; header('Location: ?module=devices&action=list'); exit; } $dependencies = $sql->single( "SELECT ( SELECT COUNT(*) FROM device_ports dp WHERE dp.device_id = ? ) AS port_count, ( SELECT COUNT(*) FROM device_port_modules dpm JOIN device_ports dp2 ON dp2.id = dpm.device_port_id WHERE dp2.device_id = ? ) AS module_count, ( SELECT COUNT(*) FROM connections c WHERE (c.port_a_type = 'device' AND c.port_a_id IN ( SELECT dp3.id FROM device_ports dp3 WHERE dp3.device_id = ? )) OR (c.port_b_type = 'device' AND c.port_b_id IN ( SELECT dp4.id FROM device_ports dp4 WHERE dp4.device_id = ? )) ) AS connection_count", "iiii", [$deviceId, $deviceId, $deviceId, $deviceId] ); $portCount = (int)($dependencies['port_count'] ?? 0); $moduleCount = (int)($dependencies['module_count'] ?? 0); $connectionCount = (int)($dependencies['connection_count'] ?? 0); $hasDependencies = $portCount > 0 || $moduleCount > 0 || $connectionCount > 0; if ($hasDependencies && !$forceDelete) { $parts = []; if ($connectionCount > 0) { $parts[] = $connectionCount . ' Verbindungen'; } if ($portCount > 0) { $parts[] = $portCount . ' Ports'; } if ($moduleCount > 0) { $parts[] = $moduleCount . ' Port-Module'; } $_SESSION['error'] = "Geraet hat abhaengige Daten (" . implode(', ', $parts) . "). Loeschen bitte bestaetigen."; header('Location: ?module=devices&action=edit&id=' . urlencode((string)$deviceId)); exit; } // Connections referenzieren device_ports nur logisch, daher manuell entfernen. $sql->set( "DELETE FROM connections WHERE (port_a_type = 'device' AND port_a_id IN (SELECT id FROM device_ports WHERE device_id = ?)) OR (port_b_type = 'device' AND port_b_id IN (SELECT id FROM device_ports WHERE device_id = ?))", "ii", [$deviceId, $deviceId] ); $deleted = $sql->set( "DELETE FROM devices WHERE id = ?", "i", [$deviceId] ); if ($deleted > 0) { $_SESSION['success'] = "Geraet geloescht: " . $device['name']; } else { $_SESSION['error'] = "Geraet konnte nicht geloescht werden"; } header('Location: ?module=devices&action=list'); exit;