Security: verwijder hardcoded wachtwoord, voeg random-wachtwoord-generator toe bij eerste installatie
This commit is contained in:
@@ -2,11 +2,15 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Natural Earth World Map SVG generator for CodePress CMS
|
||||
* Natural Earth World Map SVG generator voor CodePress CMS.
|
||||
*
|
||||
* Converts the Natural Earth 110m TopoJSON (public domain) into a plain SVG
|
||||
* where every country path carries its ISO 3166-1 alpha-2 code as the id,
|
||||
* so the admin statistics page can colour countries with plain CSS.
|
||||
* Zet de Natural Earth 110m TopoJSON (publiek domein) om in een plain SVG
|
||||
* waarin elk land-pad zijn ISO 3166-1 alpha-2 code als id meekrijgt, zodat
|
||||
* de admin-statistiekpagina landen met pure CSS kan inkleuren. Wordt via
|
||||
* de CLI uitgevoerd en schrijft public/assets/img/world-map.svg.
|
||||
*
|
||||
* @since 2.6.4
|
||||
* @package CodePress
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -66,6 +70,18 @@ function nameToAlpha2(): array
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Main generator-functie: bouwt de wereldkaart-SVG uit TopoJSON.
|
||||
*
|
||||
* Download (met caching) de countries-110m.json, decodeert delta-gecodeerde
|
||||
* arcs, projecteert op een equirectangular canvas met antimeridian-unwrap,
|
||||
* verzamelt paden per ISO alpha-2 code en schrijft de SVG naar
|
||||
* public/assets/img/world-map.svg.
|
||||
*
|
||||
* @since 2.6.4
|
||||
* @param bool $verbose Of voortgang en statistieken naar stdout worden geschreven.
|
||||
* @return bool True bij succes, false bij een download- of parse-fout.
|
||||
*/
|
||||
function generateWorldMapSvg(bool $verbose = false): bool
|
||||
{
|
||||
$outPath = dirname(__DIR__) . '/public/assets/img/world-map.svg';
|
||||
@@ -104,6 +120,11 @@ function generateWorldMapSvg(bool $verbose = false): bool
|
||||
$scale = $topo['transform']['scale'];
|
||||
$translate = $topo['transform']['translate'];
|
||||
|
||||
/**
|
||||
* Delta-gecodeerde arcs decoderen naar plain lon/lat-punten.
|
||||
*
|
||||
* @since 2.6.4
|
||||
*/
|
||||
// Decode delta-encoded arcs into plain lon/lat pairs. Projection happens
|
||||
// later, after antimeridian handling, because that works in degrees.
|
||||
$decodedArcs = [];
|
||||
@@ -130,6 +151,14 @@ function generateWorldMapSvg(bool $verbose = false): bool
|
||||
$names = [];
|
||||
$skipped = [];
|
||||
|
||||
/**
|
||||
* Per land de TopoJSON-geometrie omzetten in SVG-paden.
|
||||
*
|
||||
* Bepaalt ISO alpha-2 (via numeric map of naam map), slaat Antarctica over,
|
||||
* bouwt Polygon/MultiPolygon-rings op en verzamelt paden per code.
|
||||
*
|
||||
* @since 2.6.4
|
||||
*/
|
||||
foreach ($topo['objects']['countries']['geometries'] as $geo) {
|
||||
$rawId = $geo['id'] ?? '';
|
||||
$countryName = $geo['properties']['name'] ?? 'Unknown';
|
||||
@@ -261,6 +290,15 @@ function generateWorldMapSvg(bool $verbose = false): bool
|
||||
$pathsByCode[$alpha2] .= ($pathsByCode[$alpha2] === '' ? '' : ' ') . $pathD;
|
||||
}
|
||||
|
||||
/**
|
||||
* SVG-document samenstellen en wegschrijven.
|
||||
*
|
||||
* Sorteert paden per code, formattert <path>-elementen met id, data-name,
|
||||
* class, d en <title>, voegt inline CSS toe en schrijft het resultaat naar
|
||||
* de output-map.
|
||||
*
|
||||
* @since 2.6.4
|
||||
*/
|
||||
ksort($pathsByCode);
|
||||
|
||||
$svgPaths = [];
|
||||
@@ -303,6 +341,14 @@ function generateWorldMapSvg(bool $verbose = false): bool
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* CLI-entrypoint: wereldkaart-SVG genereren.
|
||||
*
|
||||
* Roept generateWorldMapSvg() aan en rapporteert het resultaat; bij een
|
||||
* fout wordt met exit(1) afgesloten.
|
||||
*
|
||||
* @since 2.6.4
|
||||
*/
|
||||
if (php_sapi_name() === 'cli') {
|
||||
echo "Wereldkaart SVG genereren uit Natural Earth TopoJSON...\n";
|
||||
if (generateWorldMapSvg(true)) {
|
||||
|
||||
Reference in New Issue
Block a user