Files
geograsim/App/php/regen-waypoints-sql.php
T
Adminator 3885c83294 Atlas: Logistik-Gerüst + Heli-Fix + Waypoints-Regen + Level-Picker
- Neues Modul 'Logistik Europa': module_info-Eintrag, Landing-Card,
  PHP-Wrapper (logistik.php, modul-logistik.php), Engine-Skelett mit
  Enums + Helpern (travelCost, latePenalty, Bonus, Dijkstra,
  Polyline-Interpolation), Test-Harness, Kompetenzen-Draft,
  5 Seed-Dateien (locations, vehicle-types, cargo-types, railnet,
  contract-templates), 3 Level-Einträge in game_levels, Phase 0 durch
  die Logistik-Instanz geliefert und Atlas-Review bestanden
- Heli-Fix: heli-game.php mit BASE_PATH (production-sicher) +
  Asset-Pfad-Injection, geo_waypoints-Tabelle per Seed-Script
  auffindbar gemacht
- Waypoints-Regen-Tool: regen-waypoints-sql.php synchronisiert
  waypoints.sql aus DB (70 Einträge)
- Design-System: .ggs-level-grid / .ggs-level-card als Standard
  gepromotet (Klimas Muster, iPad-hover-safe)
- Inbox-Nachrichten: Kickoff-Briefings für Heli und Logistik,
  Asset-Map für Heli, DALL-E-Pipeline-Anleitung, Koordinations-
  nachrichten an Fluss, Klima, Glossar, Lehrplan

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:43:48 +02:00

62 lines
2.1 KiB
PHP

<?php
/**
* Regeneriert App/assets/data/waypoints.sql aus der aktuellen geo_waypoints-Tabelle.
* Aufruf: http://localhost/geograsim/App/php/regen-waypoints-sql.php
*
* Nutzung: nach Updates an Koordinaten/Namen in der DB, damit das Seed-File
* wieder synchron ist. Keine Destruktivität — überschreibt nur die SQL-Datei.
*/
require_once __DIR__ . '/config/db.php';
header('Content-Type: text/plain; charset=utf-8');
$db = getDB();
$rows = $db->query("SELECT wp_key, name, lat, lon, region, wp_type, info
FROM geo_waypoints
ORDER BY region, wp_type, name")->fetchAll(PDO::FETCH_ASSOC);
if (!$rows) {
exit("Keine Waypoints in DB — Abbruch.\n");
}
$esc = fn(?string $s) => $s === null ? 'NULL' : "'" . str_replace("'", "''", $s) . "'";
$sql = "CREATE TABLE IF NOT EXISTS geo_waypoints (\n";
$sql .= " id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n";
$sql .= " wp_key VARCHAR(32) NOT NULL UNIQUE,\n";
$sql .= " name VARCHAR(100) NOT NULL,\n";
$sql .= " lat DECIMAL(8,5) NOT NULL,\n";
$sql .= " lon DECIMAL(8,5) NOT NULL,\n";
$sql .= " region VARCHAR(32) DEFAULT 'vorarlberg',\n";
$sql .= " wp_type ENUM('base','city','village','peak','target','pass') DEFAULT 'village',\n";
$sql .= " info VARCHAR(255),\n";
$sql .= " updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n";
$sql .= ") ENGINE=InnoDB;\n\n";
$sql .= "DELETE FROM geo_waypoints;\n\n";
$sql .= "INSERT INTO geo_waypoints (wp_key, name, lat, lon, region, wp_type, info) VALUES\n";
$lines = [];
foreach ($rows as $r) {
$lines[] = sprintf(
"(%s,%s,%s,%s,%s,%s,%s)",
$esc($r['wp_key']),
$esc($r['name']),
$r['lat'],
$r['lon'],
$esc($r['region']),
$esc($r['wp_type']),
$esc($r['info'])
);
}
$sql .= implode(",\n", $lines) . ";\n";
$target = __DIR__ . '/../assets/data/waypoints.sql';
$bytes = file_put_contents($target, $sql);
if ($bytes === false) {
exit("Fehler: Konnte $target nicht schreiben.\n");
}
$count = count($rows);
echo "OK — $count Waypoints nach $target geschrieben ($bytes Bytes).\n";