<?php
session_start();
require_once 'inc/functions.php';
check404();
securityCheck();
if (!isLoggedIn()) {
    header('Location: index.php');
    exit;
}

$user = getUserById($_SESSION['user_id']);

// Параметры пагинации
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($page < 1) $page = 1;
$perPage = 20;
$offset = ($page - 1) * $perPage;

// Определяем период (alltime / week)
$period = isset($_GET['period']) && $_GET['period'] == 'week' ? 'week' : 'alltime';

global $pdo;

if ($period == 'alltime') {
    // Рейтинг за всё время
    $stmt = $pdo->prepare("
        SELECT c.*, COUNT(cm.user_id) as members_count,
               (SELECT COUNT(*) FROM clans WHERE exp > c.exp) + 1 as rating_place
        FROM clans c
        LEFT JOIN clan_members cm ON c.id = cm.clan_id
        GROUP BY c.id
        ORDER BY c.exp DESC
        LIMIT :limit OFFSET :offset
    ");
    $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT);
    $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
    $stmt->execute();
    $clans = $stmt->fetchAll();

    $total = $pdo->query("SELECT COUNT(*) FROM clans")->fetchColumn();
} else {
    // Рейтинг за неделю – пока заглушка (тот же порядок)
    // Для полноценной реализации нужна таблица clan_weekly_exp
    $stmt = $pdo->prepare("
        SELECT c.*, COUNT(cm.user_id) as members_count,
               (SELECT COUNT(*) FROM clans WHERE exp > c.exp) + 1 as rating_place
        FROM clans c
        LEFT JOIN clan_members cm ON c.id = cm.clan_id
        GROUP BY c.id
        ORDER BY c.exp DESC
        LIMIT :limit OFFSET :offset
    ");
    $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT);
    $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
    $stmt->execute();
    $clans = $stmt->fetchAll();

    $total = $pdo->query("SELECT COUNT(*) FROM clans")->fetchColumn();
}

$totalPages = ceil($total / $perPage);

// Функция для получения стороны клана (по лидеру)
function getClanSide($clanId) {
    $clan = getClanById($clanId);
    if (!$clan) return 'Коза Ностра';
    $leader = getUserById($clan['leader_id']);
    return $leader ? $leader['side'] : 'Коза Ностра';
}

require_once 'inc/header.php';
?>

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

<!-- Переключение периода -->
<div>
    <?php if ($period == 'alltime'): ?>
        <span><em>за всё время</em></span>
    <?php else: ?>
        <a href="clans.php?period=alltime">за всё время</a>
    <?php endif; ?>
    |
    <?php if ($period == 'week'): ?>
        <span><em>за неделю</em></span>
    <?php else: ?>
        <a href="clans.php?period=week">за неделю</a>
    <?php endif; ?>
</div>
<div class="hr"></div>

<?php if (empty($clans)): ?>
    <p>Нет кланов для отображения.</p>
<?php else: ?>
    <?php foreach ($clans as $clan): 
        $levelInfo = getClanLevelInfo($clan['exp']);
        $clanSide = getClanSide($clan['id']);
        $icon = ($clanSide == 'Коза Ностра') ? 'guild_north.png' : 'guild_south.png';
    ?>
        <div>
            <img border="0" width="12" height="12" src="/images/icons/<?= $icon ?>" alt=""/>
            <a href="clan.php?id=<?= $clan['id'] ?>"><span><?= htmlspecialchars($clan['name']) ?></span></a>
            (<span><?= $levelInfo['level'] ?></span> ур)
            <span class="minor">(<?= $clan['rating_place'] ?> место в рейтинге)</span>
        </div>
        <div class="hr"></div>
    <?php endforeach; ?>

    <!-- Пагинация -->
    <?php if ($totalPages > 1): ?>
        <div class="pgn">
            <?php if ($page > 1): ?>
                <a class="pag" href="clans.php?period=<?= $period ?>&page=<?= $page-1 ?>">&laquo;</a>
            <?php endif; ?>

            <?php 
            $start = max(1, $page - 2);
            $end = min($totalPages, $page + 2);
            for ($i = $start; $i <= $end; $i++): 
            ?>
                <?php if ($i == $page): ?>
                    <span class="pag" title="Текущая страница"><em><?= $i ?></em></span>
                <?php else: ?>
                    <a class="pag" href="clans.php?period=<?= $period ?>&page=<?= $i ?>"><?= $i ?></a>
                <?php endif; ?>
            <?php endfor; ?>

            <?php if ($page < $totalPages): ?>
                <a class="pag" href="clans.php?period=<?= $period ?>&page=<?= $page+1 ?>">&raquo;</a>
            <?php endif; ?>
        </div>
        <div class="clb"></div>
        <div class="hr"></div>
    <?php endif; ?>
<?php endif; ?>

<!-- Информация об обновлении -->
<span class="small info">Рейтинг обновляется каждые 10 минут</span>
<div class="hr"></div>

<!-- Дополнительные ссылки -->

<div>
    <img border="0" width="12" height="12" src="/images/icons/dot.png" alt=""/>
    <a href="clan_create.php">Создать клан</a>
</div>

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