<?php
	
// Функция для проверки, является ли строка потенциальным именем модели
function isPotentialModel($name) {
    if(strlen($name) < 3) return false;
    if(!preg_match('/^[a-zA-Z0-9_-]+$/', $name)) return false;
    $excludedNames = ['api', 'admin', 'css', 'js', 'img', 'chat', 'couples', 'chatruletka18'];
    if(in_array(strtolower($name), $excludedNames)) return false;
    return true;
}

// Функция для создания SEO файлов если их нет
function ensureSeoFiles($dir, $defaultTitle, $defaultDesc, $defaultKeys) {
    if(!file_exists($dir)) {
        mkdir($dir, 0777, true);
    }
    
    if(!file_exists($dir . 'title.txt')) {
        file_put_contents($dir . 'title.txt', $defaultTitle);
    }
    if(!file_exists($dir . 'desc.txt')) {
        file_put_contents($dir . 'desc.txt', $defaultDesc);
    }
    if(!file_exists($dir . 'keys.txt')) {
        file_put_contents($dir . 'keys.txt', $defaultKeys);
    }
}

// Включим кеширование на 30 секунд для статических страниц
$cache_time = 30;
$cache_dir = './cache/';

// Извлекаем параметр категории из URL
$category = isset($_GET['category']) ? $_GET['category'] : '';
$cache_file = $cache_dir . md5($_SERVER['REQUEST_URI']) . '.html';

// Создаем папку для кеша если нет
if (!file_exists($cache_dir)) {
    mkdir($cache_dir, 0777, true);
}

// Проверка несуществующих страниц
$request_uri = $_SERVER['REQUEST_URI'];
$excluded_paths = ['/api/', '/admin/', '/css/', '/js/', '/img/', '/chat/'];

// Список существующих страниц сайта
$existing_pages = ['/', '/couples', '/chatruletka18'];

// Пропускаем API запросы, существующие страницы и страницы чатов
$is_existing_page = in_array($request_uri, $existing_pages) || (strpos($request_uri, '/?') === 0);
$is_chat_page = strpos($request_uri, '/chat/') !== false;
$is_api_page = strpos($request_uri, '/api/') === 0;
$has_extension = strpos($request_uri, '.') !== false;

if ($is_api_page) {
    // Пропускаем API запросы - они обрабатываются отдельно
} else if (!$is_existing_page && !$is_chat_page && !$has_extension && 
           !file_exists($_SERVER['DOCUMENT_ROOT'] . $request_uri) && 
           !is_dir($_SERVER['DOCUMENT_ROOT'] . $request_uri) &&
           !in_array($request_uri, $excluded_paths)) {
    
    error_log("404 Not Found: " . $request_uri);
    header("HTTP/1.0 404 Not Found");
    include('404.php');
    exit;
}

// Проверяем кеш для статических страниц
if (($is_existing_page || $is_chat_page || $request_uri == '/chatruletka18') && file_exists($cache_file) && (time() - filemtime($cache_file)) < $cache_time) {
    readfile($cache_file);
    exit;
}

// Включаем буферизацию вывода для кеширования
ob_start();

// ОСНОВНАЯ ЛОГИКА
$reqPath = explode('?', $_SERVER['REQUEST_URI'])[0];
$partnerId = '752036';
$pageBody = '~main.html';
$seoTitle = './seo/index/title.txt';
$seoDesc = './seo/index/desc.txt';
$seoKeys = './seo/index/keys.txt';

// Передаем категорию в глобальную область
$GLOBALS['current_category'] = $category;

// Инициализируем переменные для Schema.org разметки
$schemaMarkup = null;
$useDefaultSchema = true;

// Включаем api.php ПЕРЕД основным кодом
include 'api.php';

switch($reqPath) {
    case '/api/girls':
    case '/api/couples':
        break;
    
    case '/couples':
        // Создаем SEO файлы для couples если их нет
        ensureSeoFiles(
            './seo/couples/',
            'Пары | Рунетки - вебкам пары онлайн',
            'Вебкам пары в прямом эфире. Девушки и пары в видеочате. Приватные шоу и живое общение с парами.',
            'вебкам пары, пары онлайн, лесби пары, видеочат парами, рунетки пары'
        );
        
        $seoTitle = './seo/couples/title.txt';
        $seoDesc = './seo/couples/desc.txt';
        $seoKeys = './seo/couples/keys.txt';
        $apiPath = 'couples';
        $pageBody = '~couples.html';
        include 'main.php';
        
        if (ob_get_level() > 0) {
            $content = ob_get_contents();
            file_put_contents($cache_file, $content);
        }
        exit;
    
    case '/chatruletka18':
    // Инициализируем $genders чтобы избежать ошибки 500
    if (!isset($genders)) {
        $genders = [
            'Женщины' => 0,
            'Пара: женщина + женщина' => 0,
            'Пара: женщина + мужчина' => 0
        ];
    }
        // Создаем SEO файлы для chatruletka18 если их нет
        ensureSeoFiles(
            './seo/chatruletka18/',
            'Чат рулетка 18+ | Видеочат с случайными собеседниками | Рунетки',
            'Чат рулетка 18+ для взрослых. Видеочат со случайными собеседниками. Анонимное общение без регистрации. Начни общение прямо сейчас!',
            'чат рулетка, видеочат, случайный чат, анонимный чат, общение онлайн'
        );
        
        $seoTitle = './seo/chatruletka18/title.txt';
        $seoDesc = './seo/chatruletka18/desc.txt';
        $seoKeys = './seo/chatruletka18/keys.txt';
        $apiPath = 'girls';
        $pageBody = '~chatruletka18.html';
        
        $canonicalUrl = 'https://girl-webcam.org/chatruletka18';
        
        $schemaMarkup = '
        <script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "WebPage",
            "name": "Чат рулетка 18+ | Видеочат с случайными собеседниками | Рунетки",
            "description": "Чат рулетка 18+ для взрослых. Видеочат со случайными собеседниками. Анонимное общение без регистрации. Начни общение прямо сейчас!",
            "url": "https://girl-webcam.org/chatruletka18",
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "https://girl-webcam.org/chatruletka18"
            },
            "publisher": {
                "@type": "Organization",
                "name": "Рунетки",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://girl-webcam.org/assets/images/logo.svg"
                }
            }
        }
        </script>';
        $useDefaultSchema = false;
        
        include 'main.php';
        
        if (ob_get_level() > 0) {
            $content = ob_get_contents();
            file_put_contents($cache_file, $content);
        }
        exit;
    
    case '/':
        $apiPath = 'girls';
        
        // Обновляем SEO для категорий
        if(!empty($category)) {
            $categorySeoDir = './seo/categories/';
            if(!file_exists($categorySeoDir)) {
                mkdir($categorySeoDir, 0777, true);
            }
            
            $categorySeoTitle = $categorySeoDir . md5($category) . '_title.txt';
            $categorySeoDesc = $categorySeoDir . md5($category) . '_desc.txt';
            $categorySeoKeys = $categorySeoDir . md5($category) . '_keys.txt';
            
            if(!file_exists($categorySeoTitle)) {
                $categoryTitle = ucfirst($category) . ' | Рунетки - вебкам модели онлайн';
                $categoryDesc = 'Онлайн рунетки'  . $category . ' русские девушки в вебкам чате. Прямые трансляции, общение в реальном времени. Топовые модели готовы к общению!';
                $categoryKeys = $category . ', вебкам модели, секс чат, русские девушки, онлайн трансляции';
                
                file_put_contents($categorySeoTitle, $categoryTitle);
                file_put_contents($categorySeoDesc, $categoryDesc);
                file_put_contents($categorySeoKeys, $categoryKeys);
            }
            
            $seoTitle = $categorySeoTitle;
            $seoDesc = $categorySeoDesc;
            $seoKeys = $categorySeoKeys;
        } else {
            // Для главной страницы создаем SEO файлы если их нет
            ensureSeoFiles(
                './seo/index/',
                'Рунетки - лучшие вебкам модели онлайн',
                'Тысячи вебкам моделей онлайн. Видеочат с русскими девушками в реальном времени. Приватные шоу и прямое общение.',
                'рунетки, вебкам, онлайн чат, русские девушки, видеочат, вебкам модели'
            );
        }
        
        include 'main.php';
        
        if (ob_get_level() > 0) {
            $content = ob_get_contents();
            file_put_contents($cache_file, $content);
        }
        exit;
        
     default:
    if(strpos($reqPath, '/chat/') !== false) {
        if (!isset($genders)) {
            $genders = [
                'Женщины' => 0,
                'Пара: женщина + женщина' => 0,
                'Пара: женщина + мужчина' => 0
            ];
        }
        
        $urlParts = explode('/', $reqPath);
        $girlId = str_replace('.html', '', array_pop($urlParts));
        
        $chatsList = [];
        if(file_exists('chats.json')) {
            $chatsData = file_get_contents('chats.json');
            $chatsList = json_decode($chatsData, true);
            if(!is_array($chatsList)) {
                $chatsList = [];
            }
        }
        
        $chatUrl = '';
        $apiPath = 'girls';
        $cGirl = null;
        
        foreach($chatsList as $value) {
            if(!is_array($value)) continue;
            
            if((isset($value['username']) && $value['username'] == $girlId) ||
               (isset($value['display_name']) && strtolower($value['display_name']) == strtolower($girlId))) {
                $cGirl = $value;
                if(isset($value['chat_url']) && !empty($value['chat_url'])) {
                    $chatUrl = $value['chat_url'];
                }
                break;
            }
        }
        
        if(!$cGirl && isPotentialModel($girlId)) {
            foreach($chatsList as $value) {
                if(!is_array($value)) continue;
                
                if(isset($value['username']) && stripos($value['username'], $girlId) !== false) {
                    $cGirl = $value;
                    if(isset($value['chat_url']) && !empty($value['chat_url'])) {
                        $chatUrl = $value['chat_url'];
                    }
                    break;
                }
            }
        }            
if($cGirl || isPotentialModel($girlId)) {
    // Устанавливаем ID текущей модели для исключения из списка "Другие модели"
    $GLOBALS['currentGirlId'] = $cGirl['username'] ?? $girlId;
    
    $seoDir = './seo/chats/';
    if(!file_exists($seoDir)) mkdir($seoDir, 0777, true);
    
    $seoTitleFile = $seoDir . md5($girlId) . '_title.txt';
    $seoDescFile = $seoDir . md5($girlId) . '_desc.txt';
    $seoKeysFile = $seoDir . md5($girlId) . '_keys.txt';
                
                if(!$cGirl) {
                    $cGirl = [
                        'display_name' => $girlId,
                        'display_age' => 'Не указан',
                        'username' => $girlId,
                        'profile_url' => $reqPath,
                        'gender' => '',
                        'homecountry' => '',
                        'hometown' => '',
                        'height' => '',
                        'weight' => '',
                        'hair_color' => '',
                        'eye_color' => '',
                        'primary_language' => '',
                        'members_count' => '',
                        'profile_images' => [
                            'thumbnail_image_medium' => '/assets/images/default-avatar.jpg',
                            'thumbnail_image_big' => '/assets/images/default-avatar.jpg'
                        ],
                        'avatar' => '/assets/images/default-avatar.jpg'
                    ];
                } else {
                    if(!isset($cGirl['profile_images'])) {
                        $cGirl['profile_images'] = [];
                    }
                    
                    $profileImages = $cGirl['profile_images'];
                    $cGirl['profile_images']['thumbnail_image_medium'] = $profileImages['thumbnail_image_medium'] ?? 
                                                                        $profileImages['thumbnail_image_medium_live'] ?? 
                                                                        $cGirl['avatar'] ?? 
                                                                        '/assets/images/default-avatar.jpg';
                    $cGirl['profile_images']['thumbnail_image_big'] = $profileImages['thumbnail_image_big'] ?? 
                                                                     $profileImages['thumbnail_image_big_live'] ?? 
                                                                     $cGirl['avatar'] ?? 
                                                                     '/assets/images/default-avatar.jpg';
                    
                    if(!isset($cGirl['display_name'])) $cGirl['display_name'] = $cGirl['username'] ?? $girlId;
                    if(!isset($cGirl['display_age'])) $cGirl['display_age'] = 'Не указан';
                    if(!isset($cGirl['username'])) $cGirl['username'] = $girlId;
                    
                    if(isset($cGirl['country']) && !isset($cGirl['homecountry'])) {
                        $cGirl['homecountry'] = $cGirl['country'];
                    }
                    if(isset($cGirl['city']) && !isset($cGirl['hometown'])) {
                        $cGirl['hometown'] = $cGirl['city'];
                    }
                    if(isset($cGirl['chat_url']) && !isset($cGirl['direct_chat_url'])) {
                        $cGirl['direct_chat_url'] = $cGirl['chat_url'];
                    }
                    
                    $optionalFields = ['gender', 'homecountry', 'hometown', 'height', 'weight', 'hair_color', 'eye_color', 'primary_language', 'members_count'];
                    foreach($optionalFields as $field) {
                        if(!isset($cGirl[$field])) {
                            $cGirl[$field] = '';
                        }
                    }
                }
                
                if(!file_exists($seoTitleFile)) {
                    $title = $cGirl['display_name'] ?? 'Модель';
                    $desc = $title . ' в секс чате!';
                    
                    if(isset($cGirl['display_age'])) $desc .= ' Возраст ' . $cGirl['display_age'];
                    if(isset($cGirl['eye_color'])) $desc .= ' цвет глаз ' . $cGirl['eye_color'];
                    if(isset($cGirl['height'])) $desc .= ' рост ' . $cGirl['height'];
                    if(isset($cGirl['weight'])) $desc .= ' вес ' . $cGirl['weight'];
                    if(isset($cGirl['hair_color'])) $desc .= ' цвет волос ' . $cGirl['hair_color'];
                    if(isset($cGirl['hometown'])) $desc .= ' живет в ' . $cGirl['hometown'];
                    if(isset($cGirl['primary_language'])) $desc .= ' язык ' . $cGirl['primary_language'];
                    
                    file_put_contents($seoTitleFile, $title);
                    file_put_contents($seoDescFile, $desc);
                    file_put_contents($seoKeysFile, $title);
                }
                
                $seoTitle = $seoTitleFile;
                $seoDesc = $seoDescFile;
                $seoKeys = $seoKeysFile;
                
                $pageBody = 'chat.php';
                include 'main.php';
                
                if (ob_get_level() > 0) {
                    $content = ob_get_contents();
                    file_put_contents($cache_file, $content);
                }
                exit;
            } else {
                header("HTTP/1.0 404 Not Found");
                include('404.php');
                exit;
            }
        } else {
            header("HTTP/1.0 404 Not Found");
            include('404.php');
            exit;
        }
        break;
}

if (ob_get_level() > 0) {
    ob_end_flush();
}
?>