<?php
// admin.php — Админ-панель для факторов индекса безопасности Израиля
// Путь: /home/giftfqdj/com.giftstip.com/admin.php

session_start();

// === АВТОРИЗАЦИЯ ===
$admin_password = 'avatiah2025'; // ← СМЕНИТЕ НА СВОЙ ПАРОЛЬ
if (!isset($_SESSION['admin_logged']) || $_SESSION['admin_logged'] !== true) {
    if (isset($_POST['password']) && $_POST['password'] === $admin_password) {
        $_SESSION['admin_logged'] = true;
    } else {
        echo '<!DOCTYPE html><html lang="ru"><head><meta charset="UTF-8"><title>Вход</title>
              <style>body{font-family:Arial,sans-serif;background:#f1f5f9;padding:2rem;}
              form{max-width:300px;margin:0 auto;background:white;padding:2rem;border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,0.1);}
              input{width:100%;padding:0.75rem;margin:0.5rem 0;border:1px solid #cbd5e1;border-radius:6px;}
              button{width:100%;background:#3b82f6;color:white;padding:0.75rem;border:none;border-radius:6px;cursor:pointer;font-weight:600;}
              </style></head><body>
              <form method="POST"><h2 style="text-align:center;">Вход в админку</h2>
              <input type="password" name="password" placeholder="Пароль" required>
              <button type="submit">Войти</button></form></body></html>';
        exit;
    }
}

// === ПУТИ ===
$factors_dir = __DIR__ . '/factors';           // Папка с факторами
$index_file  = __DIR__ . '/total_index.json';  // Общий индекс

// === ПРОВЕРКА ПАПКИ ===
if (!is_dir($factors_dir)) {
    die("ОШИБКА: Папка /factors не найдена. Создайте её.");
}

// === ФУНКЦИЯ ЧТЕНИЯ ИНДЕКСА ИЗ ФАЙЛА-ФАКТОРА ===
function get_factor_aal($file) {
    $content = @file_get_contents($file);
    if (!$content) return 1.0;

    // Ищем aal в разных форматах
    if (preg_match('/[\'"]aal[\'"]\s*=>\s*([0-9.]+)/', $content, $m)) {
        return (float)$m[1];
    }
    if (preg_match('/data\.aal.*?([0-9.]+)/s', $content, $m)) {
        return (float)$m[1];
    }
    if (preg_match('/"aal":\s*([0-9.]+)/', $content, $m)) {
        return (float)$m[1];
    }
    return 1.0;
}

// === ДОБАВЛЕНИЕ НОВОГО ФАКТОРА ===
if (isset($_POST['add_factor']) && !empty($_POST['new_factor'])) {
    $name = preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['new_factor']);
    $file = "$factors_dir/$name.php";
    if (!file_exists($file)) {
        $template = "<?php\n// $name.php — Фактор: " . ucfirst($name) . "\n\$aal = 1.0;\n\$aal_text = 'Минимальный риск';\n?>\n";
        file_put_contents($file, $template);
        chmod($file, 0664);
    }
}

// === ПЕРЕСЧЁТ ОБЩЕГО ИНДЕКСА ===
if (isset($_POST['update_index'])) {
    $files = glob("$factors_dir/*.php");
    $sum = 0;
    $count = 0;
    $factors = [];

    foreach ($files as $file) {
        $name = basename($file, '.php');
        $aal = get_factor_aal($file);
        $sum += $aal;
        $count++;
        $factors[$name] = $aal;
    }

    $total_aal = $count > 0 ? round($sum / $count, 2) : 1.0;

    $save = [
        'last_update' => date('d.m.Y H:i'),
        'total_aal' => $total_aal,
        'factor_count' => $count,
        'factors' => $factors
    ];

    file_put_contents($index_file, json_encode($save, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
    chmod($index_file, 0666);
}

// === ЧТЕНИЕ ОБЩЕГО ИНДЕКСА ===
$total_data = ['total_aal' => 0, 'last_update' => '—', 'factor_count' => 0];
if (file_exists($index_file)) {
    $json = @file_get_contents($index_file);
    if ($json) {
        $total_data = json_decode($json, true) ?: $total_data;
    }
}

// === СПИСОК ФАКТОРОВ ===
$factor_files = glob("$factors_dir/*.php");
$factors_list = [];
foreach ($factor_files as $file) {
    $name = basename($file, '.php');
    $aal = get_factor_aal($file);
    $factors_list[] = ['name' => $name, 'aal' => $aal, 'file' => $file];
}
?>

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Админ — Индекс безопасности Израиля</title>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
    <style>
        :root { --bg: #f8fafc; --card: #ffffff; --text: #1e293b; --accent: #3b82f6; --green: #10b981; --red: #ef4444; }
        * { box-sizing:border-box; margin:0; padding:0; }
        body { background:var(--bg); color:var(--text); font-family:'Inter',sans-serif; line-height:1.6; padding:1rem; }
        .container { max-width:1200px; margin:0 auto; }
        .header { background:var(--card); padding:2rem; border-radius:12px; text-align:center; margin-bottom:2rem; box-shadow:0 4px 6px rgba(0,0,0,0.05); }
        .header h1 { font-size:2rem; margin-bottom:0.5rem; }
        .total-aal { font-size:3.5rem; font-weight:700; color:var(--accent); margin:1rem 0; }
        .stats { display:flex; justify-content:center; gap:2rem; flex-wrap:wrap; font-size:0.9rem; color:#64748b; }
        .add-form { background:var(--card); padding:1.5rem; border-radius:12px; margin-bottom:1.5rem; box-shadow:0 1px 3px rgba(0,0,0,0.1); }
        .add-form input { width:100%; padding:0.75rem; border:1px solid #cbd5e1; border-radius:6px; margin-bottom:0.75rem; }
        .add-form button { background:var(--accent); color:white; padding:0.75rem 1.5rem; border:none; border-radius:6px; cursor:pointer; font-weight:600; }
        .factor-grid { display:grid; gap:1rem; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); }
        .factor-card { background:var(--card); padding:1.5rem; border-radius:10px; box-shadow:0 1px 3px rgba(0,0,0,0.1); }
        .factor-name { font-weight:600; font-size:1.1rem; margin-bottom:0.5rem; color:var(--accent); }
        .factor-aal { font-size:2rem; font-weight:700; color:var(--green); }
        .factor-link { display:inline-block; margin-top:0.75rem; color:var(--accent); text-decoration:none; font-size:0.9rem; }
        .factor-link:hover { text-decoration:underline; }
        .update-btn { background:var(--green); color:white; padding:0.75rem 1.5rem; border:none; border-radius:6px; cursor:pointer; font-weight:600; margin-top:1rem; display:block; width:100%; }
        .footer { text-align:center; margin-top:2rem; padding:1rem; color:#94a3b8; font-size:0.8rem; }
        .debug { background:#fef3c7; color:#92400e; padding:0.75rem; border-radius:6px; margin:1rem 0; font-size:0.85rem; }
    </style>
</head>
<body>
<div class="container">
    <div class="header">
        <h1>Админ-панель: Индекс безопасности Израиля</h1>
        <div class="total-aal"><?= $total_data['total_aal'] ?></div>
        <div class="stats">
            <div><strong>Факторов:</strong> <?= $total_data['factor_count'] ?></div>
            <div><strong>Обновлено:</strong> <?= $total_data['last_update'] ?></div>
        </div>
    </div>

    <?php if (isset($_POST['add_factor'])): ?>
        <div class="debug">Фактор "<?= htmlspecialchars($_POST['new_factor']) ?>" добавлен!</div>
    <?php endif; ?>

    <div class="add-form">
        <h3>Добавить новый фактор</h3>
        <form method="POST">
            <input type="text" name="new_factor" placeholder="Имя (например: cyber_threats)" required>
            <button type="submit" name="add_factor">Создать фактор</button>
        </form>
    </div>

    <div class="factor-grid">
        <?php foreach ($factors_list as $f): 
            $relative = $total_data['total_aal'] > 0 ? round($f['aal'] / $total_data['total_aal'] * 100, 1) : 0;
        ?>
            <div class="factor-card">
                <div class="factor-name"><?= ucwords(str_replace('_', ' ', $f['name'])) ?></div>
                <div class="factor-aal"><?= $f['aal'] ?></div>
                <p>Относительно общего: <strong><?= $relative ?>%</strong></p>
                <a href="factors/<?= $f['name'] ?>.php" class="factor-link" target="_blank">Открыть страницу</a>
            </div>
        <?php endforeach; ?>
    </div>

    <form method="POST">
        <button type="submit" name="update_index" class="update-btn">Пересчитать общий индекс</button>
    </form>

    <div class="footer">
        Avatiah Security Index © 2025 • <a href="/" style="color:var(--accent);">На главную</a>
    </div>
</div>
</body>
</html>