b2in/database/seeders/DisplayInteriorBrandingSeeder.php
Kevin Adametz b5ed756d67 Git-Deploy per Tag, Betriebsüberwachung und Release-Seeder für den Livegang
- dev/betrieb/deploy.sh: Deploy nur per Tag, mit --seed (Seeder im Wartungsmodus)
  und --initial (Vorschau/Live einmalig an Ort und Stelle auf Git umstellen)
- dev/betrieb/vorschau-auffrischen.sh: Live-DB und Live-Medien in die Vorschau (Generalprobe)
- InteriorReleaseSeeder: alle Inhaltsschritte des Relaunchs in einem Lauf, idempotent;
  Displays, Playlists und Mediathek bleiben unberührt
- DisplayInteriorBrandingSeeder überschreibt keinen inzwischen gepflegten Claim mehr
- Monitoring: GlitchTip (Server + Browser), /health mit Token, Scheduler-Herzschlag,
  Alarme per Mail und ntfy, Version in about und /health
- public/build versioniert; .gitignore: macOS-Muster Icon traf resources/views/flux/icon/
- Runbook: dev/betrieb/README.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 08:56:23 +00:00

58 lines
2.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Database\Seeders;
use App\Enums\DisplayVersionType;
use App\Models\DisplayVersion;
use Illuminate\Database\Seeder;
/**
* Vereinheitlicht das Branding aller B2in-Display-Module auf das Interior-Logo.
*
* Ausgangslage waren vier verschiedene Logo-Quellen nebeneinander: zwei Dateien aus der
* Medienbibliothek, ein relativer und ein absoluter Pfad auf die Cabinet-Assets. Drei Module
* zeigten dabei auf `b2in.test` – eine lokale Entwicklungsdomain, die auf dem Live-Display
* nicht auflösbar ist.
*
* Gesetzt wird das Logo passend zum Theme des Moduls (dunkel = negativ/weiss, hell = positiv)
* sowie der neue Claim. Alle anderen Einstellungen bleiben unangetastet.
*
* Module, die schon eines der beiden Interior-Logos tragen, bleiben ganz unberührt (08.10.2026):
* Sie sind entweder neu angelegt (Standardwerte) oder bereits umgestellt, und ein inzwischen im
* Display-CMS gepflegter Claim soll beim Livegang nicht zurückgesetzt werden.
*
* php artisan db:seed --class=DisplayInteriorBrandingSeeder
*/
class DisplayInteriorBrandingSeeder extends Seeder
{
private const LOGO_DARK = '/_cabinet/assets/b2in-interior-logo-negative.svg';
private const LOGO_LIGHT = '/_cabinet/assets/b2in-interior-logo-positive.svg';
private const CLAIM = 'Premium-Einrichtung. Persönlich gemacht.';
public function run(): void
{
$updated = 0;
foreach (DisplayVersion::query()->where('type', DisplayVersionType::B2in)->get() as $module) {
$settings = $module->settings ?? [];
if (in_array($settings['header_logo_url'] ?? null, [self::LOGO_DARK, self::LOGO_LIGHT], true)) {
continue;
}
$settings['header_logo_url'] = ($settings['theme'] ?? 'dark') === 'light'
? self::LOGO_LIGHT
: self::LOGO_DARK;
$settings['header_claim'] = self::CLAIM;
$module->settings = $settings;
$module->save();
$updated++;
}
$this->command?->info("Display-Branding vereinheitlicht: {$updated} B2in-Module.");
}
}