<!DOCTYPE html>
<html lang="uk">
<head>
    <meta charset="UTF-8">
    <title>Сканування структури файлів</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            background-color: #f8f9fa;
            padding: 20px;
        }
        .card {
            margin-top: 20px;
        }
        pre {
            background-color: #ffffff;
            padding: 15px;
            border: 1px solid #dee2e6;
            max-height: 500px;
            overflow-y: auto;
            font-size: 14px;
        }
        .lang-selector {
            margin-bottom: 20px;
        }
    </style>
</head>
<body>

<?php
// Визначення мовних текстів
$languages = [
    'uk' => [
        'title' => 'Сканування структури файлів сайту',
        'scan_button' => 'Сканувати',
        'structure_header' => 'Структура файлів і папок:',
        'error' => 'Помилка: Не вдалося створити файл структури.',
        'download_button' => 'Завантажити звіт (structure.txt)',
        'lang_uk' => 'Українська',
        'lang_en' => 'English',
        'lang_ru' => 'Русский',
    ],
    'en' => [
        'title' => 'File Structure Scanner',
        'scan_button' => 'Scan',
        'structure_header' => 'File and Folder Structure:',
        'error' => 'Error: Could not create structure file.',
        'download_button' => 'Download Report (structure.txt)',
        'lang_uk' => 'Ukrainian',
        'lang_en' => 'English',
        'lang_ru' => 'Russian',
    ],
    'ru' => [
        'title' => 'Сканирование структуры файлов',
        'scan_button' => 'Сканировать',
        'structure_header' => 'Структура файлов и папок:',
        'error' => 'Ошибка: Не удалось создать файл структуры.',
        'download_button' => 'Скачать отчет (structure.txt)',
        'lang_uk' => 'Украинский',
        'lang_en' => 'English',
        'lang_ru' => 'Русский',
    ]
];

// Визначення поточної мови
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'uk';
if (!array_key_exists($lang, $languages)) {
    $lang = 'uk';
}
$text = $languages[$lang];
?>

<div class="container">
    <h2 class="text-center mb-4"><?php echo $text['title']; ?></h2>

    <!-- Вибір мови -->
    <div class="lang-selector text-center">
        <a href="?lang=uk" class="btn btn-outline-primary me-2 <?php echo $lang === 'uk' ? 'active' : ''; ?>"><?php echo $text['lang_uk']; ?></a>
        <a href="?lang=en" class="btn btn-outline-primary me-2 <?php echo $lang === 'en' ? 'active' : ''; ?>"><?php echo $text['lang_en']; ?></a>
        <a href="?lang=ru" class="btn btn-outline-primary <?php echo $lang === 'ru' ? 'active' : ''; ?>"><?php echo $text['lang_ru']; ?></a>
    </div>

    <div class="card">
        <div class="card-body">
            <form method="post" class="text-center">
                <input type="submit" name="scan" value="<?php echo $text['scan_button']; ?>" class="btn btn-primary">
            </form>

            <?php
            if (isset($_POST['scan'])) {
                $root_dir = __DIR__; // Коренева директорія сайту
                $output_file = 'structure.txt';

                // Очищаємо або створюємо файл для структури
                file_put_contents($output_file, '');

                // Скануємо директорію
                scanDirectory($root_dir, 0, $output_file);

                // Виводимо результат
                if (file_exists($output_file)) {
                    echo "<h3 class='mt-4'>{$text['structure_header']}</h3>";
                    echo "<pre>" . htmlspecialchars(file_get_contents($output_file)) . "</pre>";
                    echo "<div class='text-center'><a href='$output_file' download class='btn btn-success'>{$text['download_button']}</a></div>";
                } else {
                    echo "<p class='text-danger mt-4'>{$text['error']}</p>";
                }
            }

            // Функція для рекурсивного сканування директорії
            function scanDirectory($path, $indent, $output_file) {
                try {
                    // Ігноруємо системні файли та папки
                    $ignore = ['.', '..', '.git', '.DS_Store', 'structure.txt'];
                    $items = scandir($path);
                    $items = array_diff($items, $ignore); // Видаляємо ігноровані елементи
                    $items = array_values($items); // Переіндексуємо масив

                    foreach ($items as $item) {
                        $item_path = $path . DIRECTORY_SEPARATOR . $item;
                        $prefix = str_repeat("  ", $indent) . "|-- ";
                        
                        // Записуємо елемент у файл
                        file_put_contents($output_file, $prefix . $item . "\n", FILE_APPEND);

                        // Якщо це папка, скануємо рекурсивно
                        if (is_dir($item_path)) {
                            scanDirectory($item_path, $indent + 1, $output_file);
                        }
                    }
                } catch (Exception $e) {
                    file_put_contents($output_file, str_repeat("  ", $indent) . "|-- [Помилка: " . $e->getMessage() . "]\n", FILE_APPEND);
                }
            }
            ?>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>