[ 'title' => [ 'de' => 'Impressum', 'en' => 'Legal Notice', ], 'files' => [ 'de' => 'docs/legal/impressum-de.md', 'en' => 'docs/legal/impressum-en.md', ], ], 'datenschutz' => [ 'title' => [ 'de' => 'Datenschutzerklärung', 'en' => 'Privacy Policy', ], 'files' => [ 'de' => 'docs/legal/datenschutz-de.md', 'en' => 'docs/legal/datenschutz-en.md', ], ], 'agb' => [ 'title' => [ 'de' => 'Allgemeine Geschäftsbedingungen', 'en' => 'Terms and Conditions', ], 'files' => [ 'de' => 'docs/legal/agb-de.md', 'en' => 'docs/legal/agb-en.md', ], ], ]; foreach ($pages as $slug => $config) { $bodyByLocale = []; foreach ($config['files'] as $locale => $filePath) { if (File::exists(base_path($filePath))) { $bodyByLocale[$locale] = File::get(base_path($filePath)); } else { // Fallback to empty string if file doesn't exist $bodyByLocale[$locale] = ''; } } $this->upsert($slug, $config['title'], $bodyByLocale, $now); } } private function upsert(string $slug, array $titleByLocale, array $bodyByLocale, \DateTimeInterface $effectiveFrom): void { $existing = LegalPage::where('slug', $slug)->orderByDesc('version')->first(); $version = $existing ? ($existing->version + 1) : 1; LegalPage::updateOrCreate( ['slug' => $slug, 'version' => $version], [ 'title' => $titleByLocale, 'body_markdown' => $bodyByLocale, 'locale_fallback' => 'de', 'version' => $version, 'effective_from' => $effectiveFrom, 'is_published' => true, ] ); } }