// Устанавливаем переменную $lastpage для проверки, является ли текущая страница последней
// Вычисляем это, сравнив, сколько постов на странице и сколько их всего
$lastpage = (($d + Cot::$cfg['forums']['maxpostsperpage']) < $totalposts) ? FALSE : TRUE;
// Создаем навигацию по страницам с помощью функции cot_pagenav
// Аргументы:
// 'forums' - это название модуля
// "m=posts&q=$q" - URL параметры для запросов
// $d - текущий индекс страницы
// $totalposts - общее количество сообщений
// Cot::$cfg['forums']['maxpostsperpage'] - максимальное количество постов на странице
$pagenav = cot_pagenav('forums', "m=posts&q=$q", $d, $totalposts, Cot::$cfg['forums']['maxpostsperpage']);
// Инициализируем массив $jumpbox, добавляем URL главного форума
$jumpbox[cot_url('forums')] = Cot::$L['Forums'];
// Перебираем все разделы форума из структуры форума
foreach (Cot::$structure['forums'] as $key => $val)
{
// Проверяем, есть ли права на чтение раздела (cot_auth) и является ли путь раздела валидным (не пустой строкой)
if (cot_auth('forums', $key, 'R') && strpos($val['path'], '.'))
{
// Если текущий путь не совпадает с $s, добавляем его в массив $movebox
($val['tpath'] == $s) || $movebox[$key] = $val['tpath'];
// Добавляем путь раздела в список доступных для перехода
$jumpbox[cot_url('forums', 'm=topics&s=' . $key, '', true)] = $val['tpath'];
}
}
// Проверяем, если текущий пользователь является администратором
if (Cot::$usr['isadmin']) {
// Если это администратор, назначаем переменные шаблона для разных ссылок управления разделами форума
// Эти ссылки выполняют различные действия: перемещение, поднятие, блокировка и другие
$t->assign([
'FORUMS_POSTS_MOVE_URL' => cot_url('forums', 'm=topics&a=move&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
'FORUMS_POSTS_BUMP_URL' => cot_url('forums', 'm=topics&a=bump&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
'FORUMS_POSTS_LOCK_URL' => cot_url('forums', 'm=topics&a=lock&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
'FORUMS_POSTS_STICKY_URL' => cot_url('forums', 'm=topics&a=sticky&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
'FORUMS_POSTS_ANNOUNCE_URL' => cot_url('forums', 'm=topics&a=announcement&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
'FORUMS_POSTS_PRIVATE_URL' => cot_url('forums', 'm=topics&a=private&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
'FORUMS_POSTS_CLEAR_URL' => cot_url('forums', 'm=topics&a=clear&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']),
// Ссылка для подтверждения удаления темы
'FORUMS_POSTS_DELETE_URL' => cot_confirm_url(cot_url('forums', 'm=topics&a=delete&s=' . $s . '&q=' . $q . '&x=' . $sys['xk']), 'forums', 'forums_confirm_delete_topic'),
// Генерация HTML для выпадающего списка перемещения темы
'FORUMS_POSTS_MOVEBOX_SELECT' => cot_selectbox('', 'ns', array_keys($movebox), array_values($movebox), false),
// Создание чекбокса для сохранения перемещения
'FORUMS_POSTS_MOVEBOX_KEEP' => cot_checkbox('0', 'ghost'),
]);
// Разбираем шаблон с указанными переменными для админки
$t->parse('MAIN.FORUMS_POSTS_ADMIN');
}
Разбор кода:
- Переменная
$lastpage: Это условие проверяет, является ли текущая страница последней. Если количество отображаемых сообщений (с учетом текущей страницы) меньше общего количества сообщений, то это не последняя страница. - Переменная
$pagenav: Создается навигация по страницам форума. Используется функция cot_pagenav для отображения ссылок на предыдущие/следующие страницы. - Массив
$jumpbox: Содержит URL для быстрого перехода между разделами форума. Каждый раздел добавляется в массив, если у пользователя есть разрешение на его чтение. - Проверка прав пользователя: В цикле
foreach проверяется, есть ли у текущего пользователя права для чтения раздела форума. Если путь раздела является валидным (содержит точку), его добавляют в массив для перехода между разделами. - Для администраторов:
- Если текущий пользователь является администратором, ему предоставляются дополнительные возможности по управлению темами форума, такие как перемещение, поднятие, блокировка, закрепление, создание анонса, установка приватности и очистка.
- Также генерируются ссылки для управления темами и помещаются в шаблон с помощью метода
$t->assign.
Важные моменты:
- cot_auth(): Функция для проверки прав пользователя. В данном случае проверяется, есть ли права на чтение для текущего раздела форума.
- cot_url(): Функция для генерации URL с заданными параметрами.
- cot_selectbox() и cot_checkbox(): Функции для создания HTML-форм, таких как выпадающий список и чекбоксы.