Tree green from the logo everywhere, the 100 emoji inline wherever 100 appears, downloads for the exemption certificates and the PQ certificate, the image video behind consent, Google reviews, a 48-hour quote promise, WhatsApp, two job cards and a page for the alpacas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
82 lines
3.4 KiB
PHP
82 lines
3.4 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Bereitet die Bilder des Hüfner-Entwurfs für die Mediathek vor.
|
||
*
|
||
* Kopiert die Fotos und das Logo aus dem gelieferten Ordner (images/) und schneidet aus dem Logo
|
||
* den Baum mit den Steinen als quadratisches Seitensymbol (favicon.png) heraus. Der Baum ist im
|
||
* Logo links, der Schriftzug rechts; ein Favicon mit Schrift wäre in 32 px unlesbar.
|
||
*
|
||
* Aufruf: php scripts/build-huefner-assets.php <Quellordner mit images/> <Zielordner> [<Unterlagen>]
|
||
*
|
||
* Das dritte Argument ist Umuts Ordner „unterlagenfrwebsite“ (12.10.2026): Alpaka-Fotos, PQ-Logo,
|
||
* Galabau-Signet und die drei PDFs. Sie bekommen hier feste, einfache Namen, damit das Seed-Skript
|
||
* nicht an „Freistellungsbescheinigung §48 … bis 11.05.2029.pdf“ hängt. Kommt eine neue
|
||
* Bescheinigung, genügt es, sie nach dem gleichen Muster benannt in den Ordner zu legen.
|
||
*/
|
||
$quelle = rtrim($argv[1] ?? '', '/\\');
|
||
$ziel = rtrim($argv[2] ?? '', '/\\');
|
||
if ('' === $quelle || '' === $ziel || !is_dir($quelle.'/images')) {
|
||
fwrite(STDERR, "Aufruf: php scripts/build-huefner-assets.php <Ordner mit images/> <Zielordner>\n");
|
||
exit(1);
|
||
}
|
||
if (!is_dir($ziel) && !mkdir($ziel, 0775, true)) {
|
||
fwrite(STDERR, "Zielordner lässt sich nicht anlegen: $ziel\n");
|
||
exit(1);
|
||
}
|
||
|
||
foreach (glob($quelle.'/images/*.{jpg,png}', GLOB_BRACE) ?: [] as $datei) {
|
||
copy($datei, $ziel.'/'.basename($datei));
|
||
}
|
||
|
||
// Baum und Steine: im 1600 x 607 px großen Logo etwa x 15–500, y 10–560.
|
||
$logo = imagecreatefrompng($quelle.'/images/logo.png');
|
||
if (false === $logo) {
|
||
fwrite(STDERR, "logo.png lässt sich nicht lesen.\n");
|
||
exit(1);
|
||
}
|
||
$kante = 512;
|
||
$symbol = imagecreatetruecolor($kante, $kante);
|
||
imagesavealpha($symbol, true);
|
||
imagealphablending($symbol, false);
|
||
imagefill($symbol, 0, 0, imagecolorallocatealpha($symbol, 0, 0, 0, 127));
|
||
imagealphablending($symbol, true);
|
||
[$x, $y, $b, $h] = [15, 10, 490, 550];
|
||
$massstab = min(($kante - 24) / $b, ($kante - 24) / $h);
|
||
$zb = (int) round($b * $massstab);
|
||
$zh = (int) round($h * $massstab);
|
||
imagecopyresampled($symbol, $logo, (int) (($kante - $zb) / 2), (int) (($kante - $zh) / 2), $x, $y, $zb, $zh, $b, $h);
|
||
imagepng($symbol, $ziel.'/favicon.png');
|
||
echo "Bilder kopiert, Seitensymbol geschnitten: $ziel\n";
|
||
|
||
$unterlagen = rtrim($argv[3] ?? '', '/\\');
|
||
if ('' === $unterlagen) {
|
||
exit(0);
|
||
}
|
||
// Muster im Ordner => fester Name. Bei mehreren Treffern gewinnt der letzte in Namensreihenfolge.
|
||
$feste = [
|
||
'Alpaka (1).jpeg' => 'alpaka-plakat.jpg',
|
||
'Alpaka (2).jpeg' => 'alpaka-wiese.jpg',
|
||
'Alpaka (3).jpeg' => 'alpaka-stall.jpg',
|
||
'Alpaka (4).jpeg' => 'alpaka-blume.jpg',
|
||
'Alpaka (6).jpeg' => 'alpaka-zaunbau.jpg',
|
||
'Alpaka (9).jpeg' => 'alpaka-rasen.jpg',
|
||
'PQ-Logo*.png' => 'pq-logo.png',
|
||
'Signum*.png' => 'galabau-signet.png',
|
||
'100-emoji.png' => 'hundert.png',
|
||
'PQ-Bescheinigung*.pdf' => 'pq-bescheinigung.pdf',
|
||
'Freistellungsbescheinigung §13*.pdf' => 'freistellung-13b.pdf',
|
||
'Freistellungsbescheinigung §48*.pdf' => 'freistellung-48b.pdf',
|
||
];
|
||
$dateien = scandir($unterlagen) ?: [];
|
||
foreach ($feste as $muster => $name) {
|
||
$treffer = array_values(array_filter($dateien, static fn (string $d): bool => fnmatch($muster, $d, FNM_NOESCAPE)));
|
||
if ([] === $treffer) {
|
||
fwrite(STDERR, "Fehlt in den Unterlagen: $muster\n");
|
||
exit(1);
|
||
}
|
||
sort($treffer);
|
||
copy($unterlagen.'/'.end($treffer), $ziel.'/'.$name);
|
||
}
|
||
echo 'Unterlagen übernommen: '.count($feste)." Dateien\n";
|