<?php
session_start();
require_once 'inc/functions.php';
check404();
securityCheck();
require_once 'inc/header.php';

$allowedTypes = [
    'total_stats' => 'По силе',
    'health'      => 'По здоровью',
    'stamina'     => 'По выносливости',
    'recovery'    => 'По востановлению',
    'defense'     => 'По защите'
];

$type = isset($_GET['type']) && array_key_exists($_GET['type'], $allowedTypes) ? $_GET['type'] : 'total_stats';
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($page < 1) $page = 1;

$limit = 10;
$offset = ($page - 1) * $limit;

// Общее количество игроков (только реальные пользователи, не боты)
$totalStmt = $pdo->query("SELECT COUNT(*) FROM users WHERE id > 0");
$total = $totalStmt->fetchColumn();
$maxPages = min(ceil($total / $limit), 10); // не более 10 страниц

// Получаем топ по выбранному типу
$stmt = $pdo->prepare("
    SELECT id, username, level, total_stats, health, stamina, recovery, defense, side, gender, role
    FROM users
    WHERE id > 0
    ORDER BY {$type} DESC
    LIMIT :limit OFFSET :offset
");
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$players = $stmt->fetchAll();

// Функция для иконки в зависимости от стороны и роли
function getPlayerIcon($side, $role) {
    $icon = ($side == 'Коза Ностра') ? 'blue' : 'red';
    if ($role == 'support' || $role == 'healer') $icon .= '_healer';
    else $icon .= '_warrior';
    return "/images/icons/{$icon}.png";
}
?>

<span class="ttl"><b>Рейтинг игроков</b></span>
<div class="clb"></div>
<div class="hr"></div>

<div class="rating-menu">
    <?php foreach ($allowedTypes as $key => $label): ?>
        <a href="?type=<?= $key ?>&page=1" class="<?= ($type == $key) ? 'selected' : '' ?>">
            <?= $label ?>
        </a><br>
        <?php if ($key !== array_key_last($allowedTypes)): ?>  <?php endif; ?>
    <?php endforeach; ?>
</div>

<div class="hr"></div>

<ul class="rating-list">
    <?php
    $rank = $offset + 1;
    foreach ($players as $p):
        $icon = getPlayerIcon($p['side'], $p['role']);
        $value = (int)$p[$type];
        if ($type == 'recovery') $value = (float)$p['recovery']; // recovery может быть дробным? В БД INT, ок
    ?>
        <li>
            <span>
                <img width="12" height="12" src="<?= $icon ?>" alt="" border="0"/>
                <a href="profile.php?id=<?= $p['id'] ?>"><?= htmlspecialchars($p['username']) ?></a>
            </span>
            <b><?= $value ?></b>
        </li>
    <?php endforeach; ?>
</ul>

<div class="hr"></div>

<div class="pagination">
    Страницы:
    <?php for ($i = 1; $i <= $maxPages; $i++): ?>
        <?php if ($i == $page): ?>
            <span><?= $i ?></span>
        <?php else: ?>
            <a href="?type=<?= $type ?>&page=<?= $i ?>"><?= $i ?></a>
        <?php endif; ?>
    <?php endfor; ?>
</div>

<?php require_once 'inc/foot.php'; ?>