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

$topicId = isset($_GET['id']) ? (int)$_GET['id'] : 0;
$topic = getTopicById($topicId);
if (!$topic) {
    header('Location: forum.php');
    exit;
}

// Увеличиваем счётчик просмотров
incrementTopicViews($topicId);

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($page < 1) $page = 1;
$perPage = 10;

$posts = getPostsByTopic($topicId, $page, $perPage);
$totalPosts = getTotalPostsInTopic($topicId);
$maxPages = ceil($totalPosts / $perPage);

$section = getSectionById($topic['section_id']);
$isModerator = isModerator($_SESSION['user_id'], $topic['section_id']);

// Обработка отправки комментария
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content']) && !$topic['is_closed']) {
    $content = trim($_POST['content']);
    if (!empty($content)) {
        createPost($_SESSION['user_id'], $topicId, $content);
        // Редирект на последнюю страницу
        $newTotal = getTotalPostsInTopic($topicId);
        $lastPage = ceil($newTotal / $perPage);
        header("Location: topic.php?id=$topicId&page=$lastPage#post-".$newTotal);
        exit;
    }
}

// Действия модератора
if ($isModerator && isset($_GET['action'])) {
    if ($_GET['action'] === 'close') {
        setTopicClosed($topicId, true);
        header("Location: topic.php?id=$topicId");
        exit;
    } elseif ($_GET['action'] === 'open') {
        setTopicClosed($topicId, false);
        header("Location: topic.php?id=$topicId");
        exit;
    } elseif ($_GET['action'] === 'pin') {
        setTopicPinned($topicId, true);
        header("Location: topic.php?id=$topicId");
        exit;
    } elseif ($_GET['action'] === 'unpin') {
        setTopicPinned($topicId, false);
        header("Location: topic.php?id=$topicId");
        exit;
    }
}

require_once 'inc/header.php';
?>

<!-- Хлебные крошки -->
<div>
    <img width="12" height="12" src="/images/icons/forum_main.png" alt="" border="0"/>
    <a href="forum.php"><span>Форум</span></a>
    <span>/ <a href="subforum.php?id=<?= $section['id'] ?>"><span><?= htmlspecialchars($section['title']) ?></span></a></span>
</div>

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

<!-- Заголовок темы -->
<h2><?= htmlspecialchars($topic['title']) ?></h2>
<div class="small">
    <img width="12" height="12" src="<?= getUserForumIcon($topic) ?>" alt=""/>
    <a href="profile.php?id=<?= $topic['user_id'] ?>"><?= htmlspecialchars($topic['username']) ?></a>
    , <?= date('d M Y H:i', strtotime($topic['created_at'])) ?>
    <?php if ($topic['is_closed']): ?>
        <span class="major"> [Закрыто]</span>
    <?php endif; ?>
    <?php if ($topic['is_pinned']): ?>
        <span class="info"> [Важно]</span>
    <?php endif; ?>
</div>
<div class="content" style="margin-top:5px; padding:5px; background:#f9f9f9;">
    <?= nl2br(htmlspecialchars($topic['content'])) ?>
</div>

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

<!-- Комментарии -->
<h2>Комментарии (<span><?= $totalPosts ?></span>)</h2>

<?php if (empty($posts)): ?>
    <div class="cntr minor">Пока нет комментариев.</div>
<?php else: ?>
    <?php foreach ($posts as $post): ?>
        <a name="post-<?= $post['id'] ?>"></a>
        <div>
            <span>
                <img width="12" height="12" src="<?= getUserForumIcon($post) ?>" alt=""/>
                <a href="profile.php?id=<?= $post['user_id'] ?>"><?= htmlspecialchars($post['username']) ?></a>
            </span>
            <a class="small" href="topic.php?id=<?= $topicId ?>&page=<?= $page ?>#post-<?= $post['id'] ?>">(»»)</a>
            <span class="info small"><?= date('d M Y H:i', strtotime($post['created_at'])) ?></span>
            <div style="word-wrap:break-word; margin-top:3px;">
                <?= nl2br(htmlspecialchars($post['content'])) ?>
            </div>
            <div class="hr"></div>
        </div>
    <?php endforeach; ?>

    <!-- Пагинация -->
    <?php if ($maxPages > 1): ?>
    <div class="pagination">
        <?php if ($page > 1): ?>
            <a class="pag" href="?id=<?= $topicId ?>&page=<?= $page-1 ?>">&lt;назад</a> |
        <?php endif; ?>
        <?php for ($i = 1; $i <= $maxPages; $i++): ?>
            <?php if ($i == $page): ?>
                <span class="pag"><em><?= $i ?></em></span>
            <?php else: ?>
                <a class="pag" href="?id=<?= $topicId ?>&page=<?= $i ?>"><?= $i ?></a>
            <?php endif; ?>
            <?php if ($i < $maxPages) echo '|'; ?>
        <?php endfor; ?>
        <?php if ($page < $maxPages): ?>
            | <a class="pag" href="?id=<?= $topicId ?>&page=<?= $page+1 ?>">вперед&gt;</a>
        <?php endif; ?>
    </div>
    <?php endif; ?>
<?php endif; ?>

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

<!-- Форма ответа -->
<?php if ($topic['is_closed']): ?>
    <span class="major"><em>Тема закрыта. Вы не можете оставлять комментарии.</em></span>
<?php else: ?>
    <form method="post" action="topic.php?id=<?= $topicId ?>">
        <textarea name="content" rows="5" style="width:99%;" required></textarea><br/>
        <input type="submit" value="Отправить" class="btn"/>
    </form>
<?php endif; ?>

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

<!-- Кнопки модератора -->
<?php if ($isModerator): ?>
<div class="small">
    <?php if ($topic['is_closed']): ?>
        <a class="tdu" href="?id=<?= $topicId ?>&action=open">Открыть тему</a> |
    <?php else: ?>
        <a class="tdu" href="?id=<?= $topicId ?>&action=close">Закрыть тему</a> |
    <?php endif; ?>
    <?php if ($topic['is_pinned']): ?>
        <a class="tdu" href="?id=<?= $topicId ?>&action=unpin">Открепить</a>
    <?php else: ?>
        <a class="tdu" href="?id=<?= $topicId ?>&action=pin">Закрепить</a>
    <?php endif; ?>
</div>
<?php endif; ?>

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