<?php

/**
 * ITSWEBER CMS – Starter Content Seed
 *
 * Creates demo content for fresh installations so the CMS does not start empty.
 * This function is called ONCE by the Installer (Step 6) and is NEVER invoked
 * during updates. Existing installations are therefore never affected.
 *
 * The content is in German and is designed to:
 *   – show clearly what each CMS section / module is for
 *   – look production-near and editable, not like random test data
 *   – hint that the texts are starter content without being obtrusive
 *
 * @param \App\Core\Database $db       Active DB connection (already seeded with default_data)
 * @param string             $basePath Absolute server path to the CMS root (for file ops)
 * @param array              $siteConfig Site config collected by the installer (theme, name, …)
 * @param string             $language  Installation language ('de' or 'en')
 */

use App\Core\Database;

function seedStarterContent(Database $db, string $basePath, array $siteConfig = [], string $language = 'de'): void
{
    $now      = date('Y-m-d H:i:s');
    $isEn     = ($language === 'en');
    $siteName = $siteConfig['site_name'] ?? ($isEn ? 'My Website' : 'Meine Website');
    $theme    = $siteConfig['theme']     ?? 'default';

    // ── 1. Media folders ────────────────────────────────────────────────────
    $folderGeneral = $db->insert('iw_media_folders', [
        'name'       => $isEn ? 'General' : 'Allgemein',
        'slug'       => $isEn ? 'general' : 'allgemein',
        'sort_order' => 0,
        'created_at' => $now,
    ]);

    $folderBlog = $db->insert('iw_media_folders', [
        'name'       => 'Blog',
        'slug'       => 'blog',
        'sort_order' => 1,
        'created_at' => $now,
    ]);

    // ── 2. Update "About" page with real content ─────────────────────────────
    $aboutSlug = $isEn ? 'about' : 'ueber-uns';
    if ($isEn) {
        $aboutTitle   = 'About Us';
        $aboutContent = '<h2>Welcome to ' . $siteName . '</h2>'
                      . '<p>We are a dedicated team and we are pleased to present this website to you. '
                      . 'On this page, you will learn more about our work, our values, and the people behind it.</p>'
                      . '<h3>Our Mission</h3>'
                      . '<p>Our goal is to make digital presence accessible and understandable. '
                      . 'With ITSWEBER CMS, you have a powerful tool at hand '
                      . 'to manage your content yourself – without any technical knowledge.</p>'
                      . '<h3>What We Do</h3>'
                      . '<p>From creating attractive pages to managing blog posts '
                      . 'to maintaining an image gallery – everything runs centrally through the admin backend. '
                      . 'Feel free to customize this text for your company.</p>'
                      . '<p><em>Tip: Edit this page under Admin → Pages → About Us.</em></p>';
        $aboutSeoTitle = 'About Us – ' . $siteName;
        $aboutSeoDesc  = 'Learn more about ' . $siteName . ' and our mission.';
    } else {
        $aboutTitle   = 'Über uns';
        $aboutContent = '<h2>Willkommen bei ' . $siteName . '</h2>'
                      . '<p>Wir sind ein engagiertes Team und freuen uns, Ihnen diese Website präsentieren zu dürfen. '
                      . 'Auf dieser Seite erfahren Sie mehr über unsere Arbeit, unsere Werte und die Menschen dahinter.</p>'
                      . '<h3>Unsere Mission</h3>'
                      . '<p>Unser Ziel ist es, digitale Präsenz zugänglich und verständlich zu machen. '
                      . 'Mit ITSWEBER CMS haben Sie ein leistungsfähiges Werkzeug an der Hand, '
                      . 'mit dem Sie Ihre Inhalte selbst pflegen können – ohne technische Vorkenntnisse.</p>'
                      . '<h3>Was wir tun</h3>'
                      . '<p>Von der Erstellung ansprechender Seiten über die Verwaltung von Blogbeiträgen '
                      . 'bis hin zur Pflege einer Bildergalerie – alles läuft zentral über das Admin-Backend. '
                      . 'Passen Sie diesen Text gerne an Ihr Unternehmen an.</p>'
                      . '<p><em>Tipp: Bearbeiten Sie diese Seite unter Admin → Seiten → Über uns.</em></p>';
        $aboutSeoTitle = 'Über uns – ' . $siteName;
        $aboutSeoDesc  = 'Erfahren Sie mehr über ' . $siteName . ' und unsere Mission.';
    }
    $db->query(
        "UPDATE iw_pages SET title = :t, content = :c, seo_title = :st, seo_description = :sd WHERE slug = :slug LIMIT 1",
        [
            't'    => $aboutTitle,
            'c'    => $aboutContent,
            'st'   => $aboutSeoTitle,
            'sd'   => $aboutSeoDesc,
            'slug' => $aboutSlug,
        ]
    );

    // ── 3. Create Privacy / Datenschutz page ──────────────────────────────────
    if ($isEn) {
        $db->insert('iw_pages', [
            'title'           => 'Privacy Policy',
            'slug'            => 'privacy',
            'content'         => '<h2>Privacy Policy</h2>'
                               . '<p>This privacy policy is a placeholder and must be replaced with a legally compliant '
                               . 'privacy policy. Please consult a lawyer or use a privacy policy generator '
                               . 'to create a complete policy.</p>'
                               . '<h3>Responsible Party</h3>'
                               . '<p>[Enter the name and address of the responsible party]</p>'
                               . '<h3>Collection and Processing of Personal Data</h3>'
                               . '<p>When visiting this website, technically necessary data is automatically '
                               . 'collected by the web server (e.g. IP address, browser type, date and time of access). '
                               . 'This data is required for the operation of the website.</p>'
                               . '<h3>Cookies</h3>'
                               . '<p>This website uses technically necessary cookies. Further details can be found '
                               . 'in the cookie settings of this website.</p>'
                               . '<p><em>Please replace this text with a legally compliant privacy policy.</em></p>',
            'template'        => 'page',
            'status'          => 'published',
            'sort_order'      => 10,
            'is_homepage'     => 0,
            'show_title'      => 1,
            'page_type'       => 'page',
            'seo_title'       => 'Privacy Policy – ' . $siteName,
            'seo_description' => 'Privacy policy of ' . $siteName . '.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);
    } else {
        $db->insert('iw_pages', [
            'title'           => 'Datenschutz',
            'slug'            => 'datenschutz',
            'content'         => '<h2>Datenschutzerklärung</h2>'
                               . '<p>Diese Datenschutzerklärung ist ein Platzhalter und muss durch eine rechtskonforme '
                               . 'Erklärung ersetzt werden. Bitte wenden Sie sich an einen Rechtsanwalt oder nutzen '
                               . 'einen Datenschutz-Generator, um eine vollständige Erklärung zu erstellen.</p>'
                               . '<h3>Verantwortliche Stelle</h3>'
                               . '<p>[Name und Anschrift des Verantwortlichen eintragen]</p>'
                               . '<h3>Erhebung und Verarbeitung personenbezogener Daten</h3>'
                               . '<p>Beim Besuch dieser Website werden automatisch technisch notwendige Daten '
                               . 'durch den Webserver erfasst (z. B. IP-Adresse, Browsertyp, Datum und Uhrzeit des Zugriffs). '
                               . 'Diese Daten sind für den Betrieb der Website erforderlich.</p>'
                               . '<h3>Cookies</h3>'
                               . '<p>Diese Website verwendet technisch notwendige Cookies. Weitere Details entnehmen Sie '
                               . 'den Cookie-Einstellungen dieser Website.</p>'
                               . '<p><em>Bitte ersetzen Sie diesen Text durch eine rechtskonforme Datenschutzerklärung.</em></p>',
            'template'        => 'page',
            'status'          => 'published',
            'sort_order'      => 10,
            'is_homepage'     => 0,
            'show_title'      => 1,
            'page_type'       => 'page',
            'seo_title'       => 'Datenschutz – ' . $siteName,
            'seo_description' => 'Datenschutzerklärung von ' . $siteName . '.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);
    }

    // ── 4. Create Impressum / Imprint page ────────────────────────────────────
    if ($isEn) {
        $db->insert('iw_pages', [
            'title'           => 'Imprint',
            'slug'            => 'imprint',
            'content'         => '<h2>Imprint</h2>'
                               . '<p>Information according to applicable law:</p>'
                               . '<p>[Operator name]<br>'
                               . '[Street and number]<br>'
                               . '[Postal code and city]</p>'
                               . '<p><strong>Contact:</strong><br>'
                               . 'Email: [Enter email address]<br>'
                               . 'Phone: [Enter phone number]</p>'
                               . '<p><em>Please replace this placeholder with your complete legal information '
                               . 'as required by applicable laws.</em></p>',
            'template'        => 'page',
            'status'          => 'published',
            'sort_order'      => 11,
            'is_homepage'     => 0,
            'show_title'      => 1,
            'page_type'       => 'page',
            'seo_title'       => 'Imprint – ' . $siteName,
            'seo_description' => 'Legal imprint of ' . $siteName . '.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);
    } else {
        $db->insert('iw_pages', [
            'title'           => 'Impressum',
            'slug'            => 'impressum',
            'content'         => '<h2>Impressum</h2>'
                               . '<p>Angaben gemäß § 5 TMG:</p>'
                               . '<p>[Name des Betreibers]<br>'
                               . '[Straße und Hausnummer]<br>'
                               . '[PLZ und Ort]</p>'
                               . '<p><strong>Kontakt:</strong><br>'
                               . 'E-Mail: [E-Mail-Adresse eintragen]<br>'
                               . 'Telefon: [Telefonnummer eintragen]</p>'
                               . '<p><em>Bitte ersetzen Sie diesen Platzhalter durch Ihre vollständigen Impressumsangaben '
                               . 'gemäß den gesetzlichen Anforderungen.</em></p>',
            'template'        => 'page',
            'status'          => 'published',
            'sort_order'      => 11,
            'is_homepage'     => 0,
            'show_title'      => 1,
            'page_type'       => 'page',
            'seo_title'       => 'Impressum – ' . $siteName,
            'seo_description' => 'Impressum von ' . $siteName . '.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);
    }

    // ── 5. Blog categories ───────────────────────────────────────────────────
    $catNews = $db->insert('iw_blog_categories', [
        'name'        => $isEn ? 'News' : 'Neuigkeiten',
        'slug'        => $isEn ? 'news' : 'neuigkeiten',
        'description' => $isEn ? 'Current announcements and updates' : 'Aktuelle Meldungen und Ankündigungen',
        'sort_order'  => 0,
    ]);

    $catTipps = $db->insert('iw_blog_categories', [
        'name'        => $isEn ? 'Tips & Knowledge' : 'Tipps & Wissen',
        'slug'        => $isEn ? 'tips-knowledge' : 'tipps-wissen',
        'description' => $isEn ? 'Helpful articles, guides, and background knowledge' : 'Hilfreiche Artikel, Anleitungen und Hintergrundwissen',
        'sort_order'  => 1,
    ]);

    // ── 6. Blog posts ────────────────────────────────────────────────────────
    if ($isEn) {
        $db->insert('iw_blog_posts', [
            'title'           => 'Welcome – ' . $siteName . ' is now online',
            'slug'            => 'welcome',
            'excerpt'         => 'We are excited to present our new website. '
                               . 'Here you can find out what to expect from this blog in the future.',
            'content'         => '<p>Today is a special day: our new website is now live! '
                               . 'After careful planning and implementation, we present this site to you, '
                               . 'giving you a direct insight into our work and projects.</p>'
                               . '<h3>What You Will Find Here</h3>'
                               . '<p>We will regularly publish articles on our topics. '
                               . 'Expect news, tips, and behind-the-scenes insights.</p>'
                               . '<h3>Stay Up to Date</h3>'
                               . '<p>Visit our blog regularly so you don\'t miss any posts. '
                               . 'We look forward to connecting with you.</p>'
                               . '<p><em>This post is a starter example. '
                               . 'Edit it under Admin → Blog → Posts.</em></p>',
            'status'          => 'published',
            'category_id'     => $catNews,
            'published_at'    => $now,
            'seo_title'       => 'Welcome – ' . $siteName,
            'seo_description' => 'Our first blog post: ' . $siteName . ' is now online.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);

        $db->insert('iw_blog_posts', [
            'title'           => 'How to get the most out of this CMS',
            'slug'            => 'cms-tips-and-tricks',
            'excerpt'         => 'Five practical tips to help you get the most out of your new website – '
                               . 'from pages to blog to media management.',
            'content'         => '<p>A good CMS is only as good as the people who use it. '
                               . 'That\'s why we\'ve put together some tips to help you get started.</p>'
                               . '<h3>1. Start with Site Settings</h3>'
                               . '<p>Under <strong>Admin → Settings</strong> you can configure the site name, '
                               . 'logo, favicon, and contact details. This is the foundation for everything else.</p>'
                               . '<h3>2. Design Your Homepage</h3>'
                               . '<p>Under <strong>Admin → Homepage</strong> you will find all homepage sections – '
                               . 'from hero to topic cards to blog preview. '
                               . 'Activate and fill in the sections that suit you.</p>'
                               . '<h3>3. Manage Your Media Centrally</h3>'
                               . '<p>The media manager under <strong>Admin → Media</strong> is your central archive '
                               . 'for images and files. Create meaningful folders to keep track of everything.</p>'
                               . '<h3>4. Use Blog and Gallery Actively</h3>'
                               . '<p>Regular blog posts help with search engine optimization. '
                               . 'The gallery is ideal for references, projects, or impressions.</p>'
                               . '<h3>5. Make Events Visible</h3>'
                               . '<p>If you offer events, add them under '
                               . '<strong>Admin → Events</strong>. They will automatically appear '
                               . 'in the event overview and can be shown on the homepage.</p>'
                               . '<p><em>You can edit or delete this post – '
                               . 'it serves as a starter example.</em></p>',
            'status'          => 'published',
            'category_id'     => $catTipps,
            'published_at'    => date('Y-m-d H:i:s', strtotime('-3 days')),
            'seo_title'       => 'CMS Tips: Get the most out of ' . $siteName,
            'seo_description' => 'Practical tips for getting started with your new CMS.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);
    } else {
        $db->insert('iw_blog_posts', [
            'title'           => 'Herzlich willkommen – ' . $siteName . ' ist jetzt online',
            'slug'            => 'herzlich-willkommen',
            'excerpt'         => 'Wir freuen uns, unsere neue Website vorzustellen. '
                               . 'Hier erfahren Sie, was Sie in Zukunft auf diesem Blog erwartet.',
            'content'         => '<p>Heute ist ein besonderer Tag: unsere neue Website ist jetzt live! '
                               . 'Nach sorgfältiger Planung und Umsetzung präsentieren wir Ihnen diesen Auftritt, '
                               . 'der Ihnen einen direkten Einblick in unsere Arbeit und Projekte geben soll.</p>'
                               . '<h3>Was Sie hier finden</h3>'
                               . '<p>In regelmäßigen Abständen werden wir Artikel zu unseren Themen veröffentlichen. '
                               . 'Erwarten Sie Neuigkeiten, Tipps und Einblicke hinter die Kulissen.</p>'
                               . '<h3>Bleiben Sie auf dem Laufenden</h3>'
                               . '<p>Besuchen Sie unseren Blog regelmäßig, um keine Beiträge zu verpassen. '
                               . 'Wir freuen uns auf den Austausch mit Ihnen.</p>'
                               . '<p><em>Dieser Beitrag ist ein Starter-Beispiel. '
                               . 'Bearbeiten Sie ihn unter Admin → Blog → Beiträge.</em></p>',
            'status'          => 'published',
            'category_id'     => $catNews,
            'published_at'    => $now,
            'seo_title'       => 'Herzlich willkommen – ' . $siteName,
            'seo_description' => 'Unser erster Blog-Beitrag: ' . $siteName . ' ist jetzt online.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);

        $db->insert('iw_blog_posts', [
            'title'           => 'So nutzen Sie dieses CMS optimal',
            'slug'            => 'cms-tipps-und-tricks',
            'excerpt'         => 'Fünf praktische Hinweise, damit Sie das meiste aus Ihrer neuen Website herausholen – '
                               . 'von Seiten über Blog bis hin zur Medienorganisation.',
            'content'         => '<p>Ein gutes CMS ist nur so gut wie die Menschen, die es nutzen. '
                               . 'Deshalb haben wir hier einige Tipps zusammengestellt, '
                               . 'die Ihnen den Einstieg erleichtern.</p>'
                               . '<h3>1. Beginnen Sie mit den Seiteneinstellungen</h3>'
                               . '<p>Unter <strong>Admin → Einstellungen</strong> können Sie Webseitenname, '
                               . 'Logo, Favicon und Kontaktdaten hinterlegen. Das ist die Basis für alles andere.</p>'
                               . '<h3>2. Gestalten Sie Ihre Startseite</h3>'
                               . '<p>Unter <strong>Admin → Startseite</strong> finden Sie alle Sektionen der Startseite – '
                               . 'von Hero über Themenkarten bis hin zur Blog-Vorschau. '
                               . 'Aktivieren und befüllen Sie die Bereiche, die zu Ihnen passen.</p>'
                               . '<h3>3. Pflegen Sie Ihre Medien zentral</h3>'
                               . '<p>Der Medienmanager unter <strong>Admin → Medien</strong> ist Ihr zentrales Archiv '
                               . 'für Bilder und Dateien. Legen Sie sinnvolle Ordner an, '
                               . 'um den Überblick zu behalten.</p>'
                               . '<h3>4. Nutzen Sie Blog und Galerie aktiv</h3>'
                               . '<p>Regelmäßige Blog-Beiträge helfen bei der Suchmaschinenoptimierung. '
                               . 'Die Galerie eignet sich ideal für Referenzen, Projekte oder Eindrücke.</p>'
                               . '<h3>5. Events sichtbar machen</h3>'
                               . '<p>Wenn Sie Veranstaltungen anbieten, tragen Sie diese unter '
                               . '<strong>Admin → Events</strong> ein. Sie erscheinen automatisch '
                               . 'in der Eventübersicht und können auf der Startseite angezeigt werden.</p>'
                               . '<p><em>Diesen Beitrag können Sie bearbeiten oder löschen – '
                               . 'er dient als Starter-Beispiel.</em></p>',
            'status'          => 'published',
            'category_id'     => $catTipps,
            'published_at'    => date('Y-m-d H:i:s', strtotime('-3 days')),
            'seo_title'       => 'CMS-Tipps: So nutzen Sie ' . $siteName . ' optimal',
            'seo_description' => 'Praktische Hinweise für den Einstieg in Ihr neues CMS.',
            'created_at'      => $now,
            'updated_at'      => $now,
        ]);
    }

    // ── 7. Gallery album ─────────────────────────────────────────────────────
    $galleryAlbumId = $db->insert('iw_gallery_albums', [
        'title'       => $isEn ? 'Our Projects' : 'Unsere Projekte',
        'slug'        => $isEn ? 'our-projects' : 'unsere-projekte',
        'description' => $isEn
            ? 'A selection of our previous work and references. Upload your own images and replace these examples.'
            : 'Eine Auswahl unserer bisherigen Arbeiten und Referenzen. Laden Sie Ihre eigenen Bilder hoch und ersetzen Sie diese Beispiele.',
        'sort_order'  => 0,
        'is_visible'  => 1,
        'created_at'  => $now,
    ]);

    // ── 8. Event ─────────────────────────────────────────────────────────────
    if ($isEn) {
        $db->insert('iw_events', [
            'title'          => 'Free Introductory Workshop',
            'slug'           => 'introductory-workshop',
            'excerpt'        => 'Learn in 90 minutes how to manage your website with this CMS – '
                              . 'free and without any prior knowledge.',
            'content'        => '<p>In this free introductory workshop, we will show you step by step '
                              . 'how to manage content, upload images, publish blog posts, '
                              . 'and design your homepage.</p>'
                              . '<p><strong>Topics:</strong></p>'
                              . '<ul>'
                              . '<li>Overview of the admin backend</li>'
                              . '<li>Creating and editing pages</li>'
                              . '<li>Managing images and media</li>'
                              . '<li>Using blog and gallery</li>'
                              . '<li>Customizing settings and branding</li>'
                              . '</ul>'
                              . '<p>The workshop takes place online. No technical knowledge required.</p>'
                              . '<p><em>This is an example event. Edit it under Admin → Events.</em></p>',
            'location'       => 'Online (Video conference)',
            'start_date'     => date('Y-m-d', strtotime('+14 days')),
            'start_time'     => '18:00:00',
            'end_time'       => '19:30:00',
            'is_featured'    => 1,
            'publish_status' => 'published',
            'event_status'   => 'scheduled',
            'created_at'     => $now,
            'updated_at'     => $now,
        ]);
    } else {
        $db->insert('iw_events', [
            'title'          => 'Kostenloser Einführungsworkshop',
            'slug'           => 'einfuehrungsworkshop',
            'excerpt'        => 'Lernen Sie in 90 Minuten, wie Sie Ihre Website mit diesem CMS selbst pflegen – '
                              . 'kostenlos und ohne Vorkenntnisse.',
            'content'        => '<p>In diesem kostenlosen Einführungsworkshop zeigen wir Ihnen Schritt für Schritt, '
                              . 'wie Sie Inhalte pflegen, Bilder hochladen, Blog-Beiträge veröffentlichen '
                              . 'und Ihre Startseite gestalten.</p>'
                              . '<p><strong>Inhalte:</strong></p>'
                              . '<ul>'
                              . '<li>Überblick über das Admin-Backend</li>'
                              . '<li>Seiten erstellen und bearbeiten</li>'
                              . '<li>Bilder und Medien verwalten</li>'
                              . '<li>Blog und Galerie nutzen</li>'
                              . '<li>Einstellungen und Branding anpassen</li>'
                              . '</ul>'
                              . '<p>Der Workshop findet online statt. Kein technisches Vorwissen erforderlich.</p>'
                              . '<p><em>Dies ist ein Beispiel-Event. Bearbeiten Sie ihn unter Admin → Events.</em></p>',
            'location'       => 'Online (Videokonferenz)',
            'start_date'     => date('Y-m-d', strtotime('+14 days')),
            'start_time'     => '18:00:00',
            'end_time'       => '19:30:00',
            'is_featured'    => 1,
            'publish_status' => 'published',
            'event_status'   => 'scheduled',
            'created_at'     => $now,
            'updated_at'     => $now,
        ]);
    }

    // ── 9. Add Events to main menu ─────────────────────────────────────────
    // (Menu labels are already set correctly by default_data.php based on language)
    $mainMenuId = $db->fetchColumn("SELECT id FROM iw_menus WHERE location = 'main' LIMIT 1");
    if ($mainMenuId) {
        $db->insert('iw_menu_items', [
            'menu_id'    => $mainMenuId,
            'label'      => 'Events',
            'url'        => '/events',
            'sort_order' => 3,
            'is_visible' => 1,
            'target'     => '_self',
        ]);
        // Re-sort: Gallery becomes 4, Contact becomes 5
        $db->query("UPDATE iw_menu_items SET sort_order = 4 WHERE menu_id = :m AND url = '/gallery'",
                   ['m' => $mainMenuId]);
        $db->query("UPDATE iw_menu_items SET sort_order = 5 WHERE menu_id = :m AND url = '/contact'",
                   ['m' => $mainMenuId]);
    }

    // ── 10. Update homepage sections with rich starter content ────────────────
    _updateStarterHomepageSections($db, $siteName, $isEn);

    // ── 12. Set branding modes for itsweber theme ────────────────────────────
    // If the itsweber theme was chosen, use filtered logo (white on dark header)
    if ($theme === 'itsweber') {
        $db->query(
            "UPDATE iw_settings SET setting_value = 'filtered' WHERE setting_key = 'logo_header_mode'"
        );
        $db->query(
            "UPDATE iw_settings SET setting_value = 'filtered' WHERE setting_key = 'logo_footer_mode'"
        );
    }

    // ── 13. Copy logos from 'Logo fuer Claude/' into uploads/brand/ ──────────
    // Only runs during new installation. Safe to skip silently if files are missing.
    $logoSourceDir   = $basePath . '/Logo fuer Claude/';
    $brandDir        = $basePath . '/public/uploads/brand/';
    $brandThumbDir   = $brandDir . 'thumbs/';

    if (!is_dir($brandDir)) {
        @mkdir($brandDir, 0755, true);
    }
    if (!is_dir($brandThumbDir)) {
        @mkdir($brandThumbDir, 0755, true);
    }

    $logoHeaderSrc  = $logoSourceDir . 'itsweber-logo-header-658x164.png';
    $logoIconSrc    = $logoSourceDir . 'itsweber-icon-1024.png';

    $logoHeaderDest = 'brand/logo-header.png';
    $logoIconDest   = 'brand/logo-icon.png';

    $logoHeaderCopied = false;
    $logoIconCopied   = false;

    if (is_file($logoHeaderSrc) && is_dir($brandDir)) {
        $logoHeaderCopied = copy($logoHeaderSrc, $brandDir . 'logo-header.png');
        if ($logoHeaderCopied) {
            @copy($logoHeaderSrc, $brandThumbDir . 'logo-header.png');
        }
    }

    if (is_file($logoIconSrc) && is_dir($brandDir)) {
        $logoIconCopied = copy($logoIconSrc, $brandDir . 'logo-icon.png');
        if ($logoIconCopied) {
            @copy($logoIconSrc, $brandThumbDir . 'logo-icon.png');
        }
    }

    if ($logoHeaderCopied) {
        // Set logo settings to point to the copied logo
        foreach (['logo_header', 'logo_footer', 'logo'] as $logoKey) {
            $db->query(
                "UPDATE iw_settings SET setting_value = :v WHERE setting_key = :k",
                ['v' => $logoHeaderDest, 'k' => $logoKey]
            );
        }
        // Register in media manager
        $db->insert('iw_media', [
            'folder_id'     => $folderGeneral,
            'filename'      => 'logo-header.png',
            'original_name' => 'itsweber-logo-header-658x164.png',
            'file_path'     => $logoHeaderDest,
            'file_type'     => 'image/png',
            'file_size'     => (int) @filesize($brandDir . 'logo-header.png'),
            'title'         => 'Logo – Header',
            'alt_text'      => 'ITSWEBER Logo',
            'description'   => 'Offizielles ITSWEBER-Header-Logo',
            'created_at'    => $now,
        ]);
    }

    if ($logoIconCopied) {
        // Set favicon to icon
        $db->query(
            "UPDATE iw_settings SET setting_value = :v WHERE setting_key = 'favicon'",
            ['v' => $logoIconDest]
        );
        // Register in media manager
        $db->insert('iw_media', [
            'folder_id'     => $folderGeneral,
            'filename'      => 'logo-icon.png',
            'original_name' => 'itsweber-icon-1024.png',
            'file_path'     => $logoIconDest,
            'file_type'     => 'image/png',
            'file_size'     => (int) @filesize($brandDir . 'logo-icon.png'),
            'title'         => 'Logo – Icon / Favicon',
            'alt_text'      => 'ITSWEBER Icon',
            'description'   => 'Offizielles ITSWEBER-Icon (quadratisch), geeignet als Favicon',
            'created_at'    => $now,
        ]);
    }

    // ── 14. Copy example images from 'Beispielbilder fuer Claude/' ───────────
    $exampleSrcDir  = $basePath . '/Beispielbilder fuer Claude/';
    $architekturSrc = $exampleSrcDir . 'Architektur_Itsweberplay.webp';
    $blogbildSrc    = $exampleSrcDir . 'PlayBlogBild.webp';

    $galleryUploadsDir = $basePath . '/public/uploads/gallery/';
    $blogUploadsDir    = $basePath . '/public/uploads/blog/';

    if (!is_dir($galleryUploadsDir)) {
        @mkdir($galleryUploadsDir, 0755, true);
    }
    if (!is_dir($blogUploadsDir)) {
        @mkdir($blogUploadsDir, 0755, true);
    }

    $archRelPath    = 'gallery/gallery_architektur.webp';
    $blogImgRelPath = 'blog/blog_beispiel.webp';

    $archCopied    = false;
    $blogImgCopied = false;

    if (is_file($architekturSrc)) {
        $archCopied = copy($architekturSrc, $basePath . '/public/uploads/' . $archRelPath);
        if ($archCopied) {
            // Create thumbnail (copy – .webp is already optimized)
            $thumbDir = $galleryUploadsDir . 'thumbs/';
            if (!is_dir($thumbDir)) {
                @mkdir($thumbDir, 0755, true);
            }
            @copy($architekturSrc, $thumbDir . 'gallery_architektur.webp');
        }
    }

    if (is_file($blogbildSrc)) {
        $blogImgCopied = copy($blogbildSrc, $basePath . '/public/uploads/' . $blogImgRelPath);
        if ($blogImgCopied) {
            $thumbDir = $blogUploadsDir . 'thumbs/';
            if (!is_dir($thumbDir)) {
                @mkdir($thumbDir, 0755, true);
            }
            @copy($blogbildSrc, $thumbDir . 'blog_beispiel.webp');
        }
    }

    if ($archCopied) {
        // Register in media manager
        $db->insert('iw_media', [
            'folder_id'     => $folderGeneral,
            'filename'      => 'gallery_architektur.webp',
            'original_name' => 'Architektur_Itsweberplay.webp',
            'file_path'     => $archRelPath,
            'file_type'     => 'image/webp',
            'file_size'     => (int) @filesize($basePath . '/public/uploads/' . $archRelPath),
            'title'         => 'Architektur – Itsweberplay',
            'alt_text'      => 'Modernes Gebäude mit architektonischen Details',
            'description'   => 'Beispielbild für Galerie und Hero-Bereich',
            'created_at'    => $now,
        ]);

        // Add as first image in the gallery album
        if ($galleryAlbumId) {
            $db->insert('iw_gallery_images', [
                'album_id'   => $galleryAlbumId,
                'file_path'  => $archRelPath,
                'title'      => 'Architektur – Itsweberplay',
                'alt_text'   => 'Modernes Gebäude mit architektonischen Details',
                'sort_order' => 0,
                'created_at' => $now,
            ]);
            // Set as album cover
            $db->query(
                "UPDATE iw_gallery_albums SET cover_image = :p WHERE id = :id",
                ['p' => $archRelPath, 'id' => $galleryAlbumId]
            );
        }

        // Update hero section to use this image
        $heroAboutUrl = $isEn ? '/about' : '/ueber-uns';
        $heroWithImage = json_encode([
            'title'          => $isEn ? 'Your digital presence starts here' : 'Ihre digitale Präsenz beginnt hier',
            'eyebrow'        => ($isEn ? 'Welcome to ' : 'Willkommen bei ') . $siteName,
            'subtitle'       => $isEn
                ? 'Manage your content professionally – without any technical knowledge. Discover what this CMS has in store for you.'
                : 'Professionelle Inhalte selbst pflegen – ohne technische Vorkenntnisse. Entdecken Sie, was dieses CMS für Sie bereit hält.',
            'image'          => $archRelPath,
            'portrait_image' => '',
            'portrait_alt'   => '',
            'cta_text'       => $isEn ? 'Learn more' : 'Mehr erfahren',
            'cta_url'        => $heroAboutUrl,
            'cta2_text'      => $isEn ? 'Get in touch' : 'Kontakt aufnehmen',
            'cta2_url'       => '/contact',
        ], JSON_UNESCAPED_UNICODE);

        $db->query(
            "UPDATE iw_page_sections SET content = :c WHERE section_type = 'hero'",
            ['c' => $heroWithImage]
        );
    }

    if ($blogImgCopied) {
        // Register in media manager
        $db->insert('iw_media', [
            'folder_id'     => $folderBlog,
            'filename'      => 'blog_beispiel.webp',
            'original_name' => 'PlayBlogBild.webp',
            'file_path'     => $blogImgRelPath,
            'file_type'     => 'image/webp',
            'file_size'     => (int) @filesize($basePath . '/public/uploads/' . $blogImgRelPath),
            'title'         => 'Blog Beispielbild',
            'alt_text'      => 'Blogbeitrag Vorschaubild',
            'description'   => 'Beispielbild für Blog-Beiträge',
            'created_at'    => $now,
        ]);

        // Set as featured image on the first blog post
        $firstPostSlug = $isEn ? 'welcome' : 'herzlich-willkommen';
        $db->query(
            "UPDATE iw_blog_posts SET featured_image = :p WHERE slug = :s LIMIT 1",
            ['p' => $blogImgRelPath, 's' => $firstPostSlug]
        );
    }
}

/**
 * Update the homepage sections seeded by default_data with meaningful starter texts.
 * This runs UPDATE on existing rows (inserted by seedDefaultData) and also ensures
 * topic_cards and highlight_grid are activated and filled.
 */
function _updateStarterHomepageSections(Database $db, string $siteName, bool $isEn = false): void
{
    $aboutUrl = $isEn ? '/about' : '/ueber-uns';

    // ── Hero ────────────────────────────────────────────────────────────────
    $heroContent = json_encode([
        'title'          => $isEn ? 'Your digital presence starts here' : 'Ihre digitale Präsenz beginnt hier',
        'eyebrow'        => ($isEn ? 'Welcome to ' : 'Willkommen bei ') . $siteName,
        'subtitle'       => $isEn
            ? 'Manage your content professionally – without any technical knowledge. Discover what this CMS has in store for you.'
            : 'Professionelle Inhalte selbst pflegen – ohne technische Vorkenntnisse. Entdecken Sie, was dieses CMS für Sie bereit hält.',
        'image'          => '',
        'portrait_image' => '',
        'portrait_alt'   => '',
        'cta_text'       => $isEn ? 'Learn more' : 'Mehr erfahren',
        'cta_url'        => $aboutUrl,
        'cta2_text'      => $isEn ? 'Get in touch' : 'Kontakt aufnehmen',
        'cta2_url'       => '/contact',
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'hero'",
        ['c' => $heroContent]
    );

    // ── Intro ────────────────────────────────────────────────────────────────
    $introContent = json_encode([
        'title' => $isEn ? 'What Makes Us Different' : 'Was uns ausmacht',
        'text'  => $isEn
            ? 'At ' . $siteName . ', quality, transparency, and personal service come first. We believe that a good digital presence is not a luxury – but the foundation for lasting success. Customize this text under Admin → Homepage → Intro.'
            : 'Bei ' . $siteName . ' stehen Qualität, Transparenz und persönlicher Service im Vordergrund. Wir glauben daran, dass eine gute digitale Präsenz kein Luxus ist – sondern die Grundlage für nachhaltigen Erfolg. Passen Sie diesen Text unter Admin → Startseite → Intro an.',
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'intro'",
        ['c' => $introContent]
    );

    // ── Topic Cards ──────────────────────────────────────────────────────────
    $topicContent = json_encode([
        'title' => $isEn ? 'What We Offer' : 'Was wir anbieten',
        'items' => $isEn ? [
            [
                'icon'  => '✦',
                'title' => 'Websites & Content',
                'text'  => 'Create and manage pages, blog articles, and galleries – directly in your browser, anytime and anywhere.',
                'url'   => '/blog',
            ],
            [
                'icon'  => '◷',
                'title' => 'Events & Dates',
                'text'  => 'Announce events, communicate status, and keep interested parties up to date.',
                'url'   => '/events',
            ],
            [
                'icon'  => '▦',
                'title' => 'Gallery & Media',
                'text'  => 'Manage images centrally, organize them in albums, and present them attractively on the website.',
                'url'   => '/gallery',
            ],
        ] : [
            [
                'icon'  => '✦',
                'title' => 'Webseiten & Content',
                'text'  => 'Erstellen und pflegen Sie Seiten, Blogartikel und Galerien – direkt im Browser, jederzeit und überall.',
                'url'   => '/blog',
            ],
            [
                'icon'  => '◷',
                'title' => 'Events & Termine',
                'text'  => 'Veranstaltungen ankündigen, Status kommunizieren und Interessenten auf dem Laufenden halten.',
                'url'   => '/events',
            ],
            [
                'icon'  => '▦',
                'title' => 'Galerie & Medien',
                'text'  => 'Bilder zentral verwalten, in Alben organisieren und auf der Website ansprechend präsentieren.',
                'url'   => '/gallery',
            ],
        ],
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'topic_cards'",
        ['c' => $topicContent]
    );

    // ── Highlight Grid ───────────────────────────────────────────────────────
    $highlightContent = json_encode([
        'title' => ($isEn ? 'Why ' : 'Warum ') . $siteName,
        'items' => $isEn ? [
            [
                'icon'   => '⊕',
                'title'  => 'Easy to Use',
                'text'   => 'The admin backend is clearly designed – for beginners as well as experienced users.',
                'source' => '',
                'url'    => '/about',
            ],
            [
                'icon'   => '◐',
                'title'  => 'Flexible Theme System',
                'text'   => 'Choose from multiple themes or customize the design to match your brand identity.',
                'source' => '',
                'url'    => '',
            ],
            [
                'icon'   => '☰',
                'title'  => 'All Content in One Place',
                'text'   => 'Pages, blog, gallery, events, media, and menus – all managed centrally.',
                'source' => '',
                'url'    => '',
            ],
        ] : [
            [
                'icon'   => '⊕',
                'title'  => 'Einfache Bedienung',
                'text'   => 'Das Admin-Backend ist übersichtlich gestaltet – für Einsteiger ebenso wie für erfahrene Nutzer.',
                'source' => '',
                'url'    => '/ueber-uns',
            ],
            [
                'icon'   => '◐',
                'title'  => 'Flexibles Theme-System',
                'text'   => 'Wählen Sie aus mehreren Themes oder passen Sie das Design an Ihre eigene Markenidentität an.',
                'source' => '',
                'url'    => '',
            ],
            [
                'icon'   => '☰',
                'title'  => 'Alle Inhalte an einem Ort',
                'text'   => 'Seiten, Blog, Galerie, Events, Medien und Menüs – alles zentral verwaltet.',
                'source' => '',
                'url'    => '',
            ],
        ],
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'highlight_grid'",
        ['c' => $highlightContent]
    );

    // ── Blog Preview ─────────────────────────────────────────────────────────
    $blogContent = json_encode([
        'title'    => $isEn ? 'Latest Posts' : 'Aktuelle Beiträge',
        'count'    => 3,
        'cta_text' => $isEn ? 'All Posts' : 'Alle Beiträge',
        'cta_url'  => '/blog',
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'blog_preview'",
        ['c' => $blogContent]
    );

    // ── Events Preview ────────────────────────────────────────────────────────
    $eventsContent = json_encode([
        'title'    => $isEn ? 'Upcoming Events' : 'Kommende Veranstaltungen',
        'count'    => 3,
        'cta_text' => $isEn ? 'View all events' : 'Alle Events ansehen',
        'cta_url'  => '/events',
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'events_preview'",
        ['c' => $eventsContent]
    );

    // ── Gallery Preview ───────────────────────────────────────────────────────
    $galleryContent = json_encode([
        'title'    => $isEn ? 'Our Gallery' : 'Unsere Galerie',
        'count'    => 6,
        'cta_text' => $isEn ? 'View Gallery' : 'Zur Galerie',
        'cta_url'  => '/gallery',
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c WHERE section_type = 'gallery_preview'",
        ['c' => $galleryContent]
    );

    // ── CTA ───────────────────────────────────────────────────────────────────
    $ctaContent = json_encode([
        'title'    => $isEn ? 'Let\'s Start a Conversation' : 'Kommen Sie mit uns ins Gespräch',
        'text'     => $isEn
            ? 'Do you have questions, suggestions, or would you like to learn more about our services? We look forward to hearing from you.'
            : 'Haben Sie Fragen, Anregungen oder möchten Sie mehr über unsere Angebote erfahren? Wir freuen uns über Ihre Nachricht.',
        'cta_text' => $isEn ? 'Get in Touch Now' : 'Jetzt Kontakt aufnehmen',
        'cta_url'  => '/contact',
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c, is_active = 1 WHERE section_type = 'cta'",
        ['c' => $ctaContent]
    );

    // ── Features ──────────────────────────────────────────────────────────────
    $featuresContent = json_encode([
        'title' => $isEn ? 'Our Services at a Glance' : 'Unsere Leistungen im Überblick',
        'items' => $isEn ? [
            ['title' => 'Web Development', 'text' => 'Modern, responsive websites for every requirement.'],
            ['title' => 'Content Management', 'text' => 'We support you with ongoing content maintenance.'],
            ['title' => 'Consulting', 'text' => 'Personal consulting on digital presence and online marketing.'],
        ] : [
            ['title' => 'Webentwicklung', 'text' => 'Moderne, responsive Websites für jede Anforderung.'],
            ['title' => 'Content-Pflege', 'text' => 'Wir unterstützen Sie bei der laufenden Inhaltspflege.'],
            ['title' => 'Beratung', 'text' => 'Persönliche Beratung zu digitaler Präsenz und Online-Marketing.'],
        ],
    ], JSON_UNESCAPED_UNICODE);

    $db->query(
        "UPDATE iw_page_sections SET content = :c WHERE section_type = 'features'",
        ['c' => $featuresContent]
    );

}
