Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

Файл forums.posts.php в Cotonti. Часть 4

Файл forums.posts.php в Cotonti. Часть 4

 

// Устанавливаем переменную $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');
}

Разбор кода:

  1. Переменная $lastpage: Это условие проверяет, является ли текущая страница последней. Если количество отображаемых сообщений (с учетом текущей страницы) меньше общего количества сообщений, то это не последняя страница.
  2. Переменная $pagenav: Создается навигация по страницам форума. Используется функция cot_pagenav для отображения ссылок на предыдущие/следующие страницы.
  3. Массив $jumpbox: Содержит URL для быстрого перехода между разделами форума. Каждый раздел добавляется в массив, если у пользователя есть разрешение на его чтение.
  4. Проверка прав пользователя: В цикле foreach проверяется, есть ли у текущего пользователя права для чтения раздела форума. Если путь раздела является валидным (содержит точку), его добавляют в массив для перехода между разделами.
  5. Для администраторов:
    • Если текущий пользователь является администратором, ему предоставляются дополнительные возможности по управлению темами форума, такие как перемещение, поднятие, блокировка, закрепление, создание анонса, установка приватности и очистка.
    • Также генерируются ссылки для управления темами и помещаются в шаблон с помощью метода $t->assign.

Важные моменты:

  • cot_auth(): Функция для проверки прав пользователя. В данном случае проверяется, есть ли права на чтение для текущего раздела форума.
  • cot_url(): Функция для генерации URL с заданными параметрами.
  • cot_selectbox() и cot_checkbox(): Функции для создания HTML-форм, таких как выпадающий список и чекбоксы.

 

No comments yet
Only registered users can post new comments
Account