b2in/database/seeders/DemoBrandGalleryCleanupSeeder.php

52 lines
1.7 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\Models\CmsBrand;
use Illuminate\Database\Seeder;
/**
* Entfernt die Demobilder aus den Markengalerien (Nachtrag 17).
*
* {@see DemoBrandGallerySeeder} hatte Stockmotive und KI-Renderings der alten Dubai-Seite als
* Beispiele in die Galerien von CABINET, Rotpunkt und Febrü gelegt. Seit den echten Bildern
* (Nachtrag 16) sollen sie weg. Erkannt werden sie am Dateinamen aus dem Demo-Seeder – nicht an
* der Bildunterschrift, denn den Vermerk „BEISPIEL“ hat {@see BrandGalleryCaptionNormalizerSeeder}
* auf der Vorschau bereits entfernt. Alle anderen Galeriebilder bleiben samt Kategorie,
* Unterschrift und Reihenfolge. Mehrfaches Ausführen ist unbedenklich.
*
* php artisan db:seed --class=DemoBrandGalleryCleanupSeeder
*/
class DemoBrandGalleryCleanupSeeder extends Seeder
{
public function run(): void
{
$demoImages = [];
foreach (DemoBrandGallerySeeder::GALLERIES as $items) {
foreach ($items as $item) {
$demoImages[] = $item[0];
}
}
$removed = 0;
foreach (CmsBrand::query()->whereNotNull('gallery')->get() as $brand) {
$gallery = CmsBrand::normalizeGallery($brand->gallery);
$kept = array_values(array_filter(
$gallery,
fn (array $item) => ! in_array($item['image'], $demoImages, true),
));
if (count($kept) === count($gallery)) {
continue;
}
$removed += count($gallery) - count($kept);
$brand->gallery = $kept;
$brand->save();
}
$this->command?->info("Demobilder aus den Galerien entfernt: {$removed}.");
}
}