torrentpier/viewforum.php
Roman Kelesidis 66b9b7bdc4
Fixed download counter for torrents (#1346)
* Fixed download counter for torrents

* Updated

* Updated

* Update CHANGELOG.md
2024-01-27 11:04:10 +07:00

534 lines
21 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2024 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
define('BB_SCRIPT', 'forum');
require __DIR__ . '/common.php';
$page_cfg['include_bbcode_js'] = true;
$show_last_topic = true;
$last_topic_max_len = 40;
$title_match_key = 'nm';
$title_match_max_len = 60;
$page_cfg['load_tpl_vars'] = [
'post_icons',
'topic_icons'
];
// Init request vars
$forum_id = (int)request_var('f', '');
$start = abs((int)request_var('start', ''));
$mark_read = (request_var('mark', '') === 'topics');
$anon = GUEST_UID;
// Start session
$user->session_start();
$lastvisit = IS_GUEST ? TIMENOW : $userdata['user_lastvisit'];
// Caching output
$req_page = "forum_f{$forum_id}";
$req_page .= ($start) ? "_start{$start}" : '';
define('REQUESTED_PAGE', $req_page);
caching_output(IS_GUEST, 'send', REQUESTED_PAGE . '_guest');
set_die_append_msg();
if (!$forums = $datastore->get('cat_forums')) {
$datastore->update('cat_forums');
$forums = $datastore->get('cat_forums');
}
if (!$forum_id or !$forum_data = @$forums['forum'][$forum_id]) {
bb_die($lang['FORUM_NOT_EXIST']);
}
// Make jumpbox
make_jumpbox();
// Only new
$only_new = $user->opt_js['only_new'];
$only_new_sql = '';
if ($only_new == ONLY_NEW_POSTS) {
$only_new_sql = "AND t.topic_last_post_time > $lastvisit";
} elseif ($only_new == ONLY_NEW_TOPICS) {
$only_new_sql = "AND t.topic_time > $lastvisit";
}
// Auth
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_data);
$moderation = (!empty($_REQUEST['mod']) && $is_auth['auth_mod']);
if (!$is_auth['auth_view']) {
if (IS_GUEST) {
$redirect = ($start) ? "&start=$start" : '';
redirect(LOGIN_URL . "?redirect=" . FORUM_URL . $forum_id . $redirect);
}
// The user is not authed to read this forum ...
$message = sprintf($lang['SORRY_AUTH_VIEW'], $is_auth['auth_view_type']);
bb_die($message);
}
// Redirect to login page if not admin session
$mod_redirect_url = '';
// Filter by torrent status
$tor_status = -1; // all by default
if ($is_auth['auth_mod']) {
$redirect = $_POST['redirect'] ?? $_SERVER['REQUEST_URI'];
$redirect = url_arg($redirect, 'mod', 1, '&');
$mod_redirect_url = LOGIN_URL . "?redirect=$redirect&admin=1";
if ($moderation && !$userdata['session_admin']) {
redirect($mod_redirect_url);
}
if (isset($_REQUEST['tst']) && $_REQUEST['tst'] != -1) {
$tor_status = (int)$_REQUEST['tst'];
// reset other req values
unset($_REQUEST['sort'], $_REQUEST['order'], $_REQUEST[$title_match_key]);
$show_type_separator = false;
}
$select_tst = array_merge([$lang['TOR_STATUS_SELECT_ALL'] => -1], array_flip($lang['TOR_STATUS_NAME']));
$template->assign_vars(['SELECT_TST' => build_select('tst', $select_tst, $tor_status)]);
$select_st = array_merge([$lang['TOR_STATUS_SELECT_ACTION'] => -1], array_flip($lang['TOR_STATUS_NAME']));
$template->assign_vars(['SELECT_ST' => build_select('st', $select_st, -1)]);
}
// Topics read tracks
$tracking_topics = get_tracks('topic');
$tracking_forums = get_tracks('forum');
if ($mark_read && !IS_GUEST) {
set_tracks(COOKIE_FORUM, $tracking_forums, $forum_id);
set_die_append_msg($forum_id);
bb_die($lang['TOPICS_MARKED_READ']);
}
// Subforums
$show_subforums = $bb_cfg['sf_on_first_page_only'] ? !$start : true;
if (!$forums = $datastore->get('cat_forums')) {
$datastore->update('cat_forums');
$forums = $datastore->get('cat_forums');
}
if ($forums['forum'][$forum_id]['allow_porno_topic'] && bf($userdata['user_opt'], 'user_opt', 'user_porn_forums')) {
bb_die($lang['ERROR_PORNO_FORUM']);
}
if (!$forum_data['forum_parent'] && isset($forums['f'][$forum_id]['subforums']) && $show_subforums) {
$not_auth_forums = $user->get_excluded_forums(AUTH_VIEW);
$ignore_forum_sql = ($not_auth_forums) ? "AND f.forum_id NOT IN($not_auth_forums)" : '';
$sql = "
SELECT
f.forum_id, f.forum_status, f.forum_last_post_id, f.forum_posts, f.forum_topics,
t.topic_last_post_time, t.topic_id AS last_topic_id, t.topic_title AS last_topic_title,
p.poster_id AS sf_last_user_id, IF(p.poster_id = $anon, p.post_username, u.username) AS sf_last_username, u.user_rank
FROM " . BB_FORUMS . " f
LEFT JOIN " . BB_TOPICS . " t ON(f.forum_last_post_id = t.topic_last_post_id)
LEFT JOIN " . BB_POSTS . " p ON(f.forum_last_post_id = p.post_id)
LEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id)
WHERE f.forum_parent = $forum_id
$only_new_sql
$ignore_forum_sql
GROUP BY f.forum_id
ORDER BY f.forum_order
";
if ($rowset = DB()->fetch_rowset($sql)) {
$template->assign_vars([
'SHOW_SUBFORUMS' => true,
'FORUM_IMG' => $images['forum'],
'FORUM_NEW_IMG' => $images['forum_new'],
'FORUM_LOCKED_IMG' => $images['forum_locked']
]);
}
foreach ($rowset as $sf_data) {
$sf_forum_id = $sf_data['forum_id'];
$sf_last_tid = $sf_data['last_topic_id'];
$folder_image = $images['forum'];
$last_post = $lang['NO_POSTS'];
if (!$fname_html =& $forums['forum_name_html'][$sf_forum_id]) {
continue;
}
if ($sf_data['forum_status'] == FORUM_LOCKED) {
$folder_image = $images['forum_locked'];
} elseif (is_unread($sf_data['topic_last_post_time'], $sf_last_tid, $sf_forum_id)) {
$folder_image = $images['forum_new'];
}
$last_post_user = profile_url(['username' => $sf_data['sf_last_username'], 'user_id' => $sf_data['sf_last_user_id'], 'user_rank' => $sf_data['user_rank']]);
if ($sf_data['forum_last_post_id']) {
$last_post = bb_date($sf_data['topic_last_post_time'], $bb_cfg['last_post_date_format']);
$last_post .= "<br />$last_post_user";
$last_post .= '<a href="' . POST_URL . $sf_data['forum_last_post_id'] . '#' . $sf_data['forum_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" class="icon2" alt="latest" title="' . $lang['VIEW_LATEST_POST'] . '" /></a>';
}
$template->assign_block_vars('f', [
'FORUM_FOLDER_IMG' => $folder_image,
'FORUM_ID' => $sf_forum_id,
'FORUM_NAME' => $fname_html,
'FORUM_DESC' => $forums['f'][$sf_forum_id]['forum_desc'],
'U_VIEWFORUM' => FORUM_URL . $sf_forum_id,
'TOPICS' => commify($sf_data['forum_topics']),
'POSTS' => commify($sf_data['forum_posts']),
'LAST_POST' => $last_post
]);
if ($sf_data['forum_last_post_id']) {
$template->assign_block_vars('f.last', [
'FORUM_LAST_POST' => true,
'SHOW_LAST_TOPIC' => $show_last_topic,
'LAST_TOPIC_ID' => $sf_data['last_topic_id'],
'LAST_TOPIC_TIP' => $sf_data['last_topic_title'],
'LAST_TOPIC_TITLE' => str_short($sf_data['last_topic_title'], $last_topic_max_len),
'LAST_POST_TIME' => bb_date($sf_data['topic_last_post_time'], $bb_cfg['last_post_date_format']),
'LAST_POST_ID' => $sf_data['forum_last_post_id'],
'LAST_POST_USER' => $last_post_user,
'ICON_LATEST_REPLY' => $images['icon_latest_reply']
]);
} else {
$template->assign_block_vars('f.last', ['FORUM_LAST_POST' => false]);
}
}
}
unset($rowset);
$datastore->rm('cat_forums');
// Topics per page
$topics_per_page = $bb_cfg['topics_per_page'];
$select_tpp = '';
if ($is_auth['auth_mod']) {
if ($req_tpp = abs((int)(@$_REQUEST['tpp'])) and in_array($req_tpp, $bb_cfg['allowed_topics_per_page'])) {
$topics_per_page = $req_tpp;
}
$select_tpp = [];
foreach ($bb_cfg['allowed_topics_per_page'] as $tpp) {
$select_tpp[$tpp] = $tpp;
}
}
// Generate a 'Show topics in previous x days' select box.
$topic_days = 0; // all the time
$forum_topics = $forum_data['forum_topics'];
$sel_previous_days = [
0 => $lang['ALL_POSTS'],
1 => $lang['1_DAY'],
7 => $lang['7_DAYS'],
14 => $lang['2_WEEKS'],
30 => $lang['1_MONTH'],
90 => $lang['3_MONTHS'],
180 => $lang['6_MONTHS'],
364 => $lang['1_YEAR']
];
if (!empty($_REQUEST['topicdays'])) {
if ($req_topic_days = abs((int)$_REQUEST['topicdays']) and isset($sel_previous_days[$req_topic_days])) {
$sql = "
SELECT COUNT(*) AS forum_topics
FROM " . BB_TOPICS . "
WHERE forum_id = $forum_id
AND topic_last_post_time > " . (TIMENOW - 86400 * $req_topic_days) . "
";
if ($row = DB()->fetch_row($sql)) {
$topic_days = $req_topic_days;
$forum_topics = $row['forum_topics'];
}
}
}
// Correct $start value
if ($start > $forum_topics) {
redirect(FORUM_URL . $forum_id);
}
// Generate SORT and ORDER selects
$sort_value = isset($_REQUEST['sort']) ? (int)$_REQUEST['sort'] : $forum_data['forum_display_sort'];
$order_value = isset($_REQUEST['order']) ? (int)$_REQUEST['order'] : $forum_data['forum_display_order'];
$sort_list = '<select name="sort">' . get_forum_display_sort_option($sort_value, 'list', 'sort') . '</select>';
$order_list = '<select name="order">' . get_forum_display_sort_option($order_value, 'list', 'order') . '</select>';
$s_display_order = '&nbsp;' . $lang['SORT_BY'] . ':&nbsp;' . $sort_list . '&nbsp;' . $order_list . '&nbsp;';
// Selected SORT and ORDER methods
$sort_method = get_forum_display_sort_option($sort_value, 'field', 'sort');
$order_method = get_forum_display_sort_option($order_value, 'field', 'order');
$order_sql = "ORDER BY t.topic_type DESC, $sort_method $order_method";
$limit_topics_time_sql = ($topic_days) ? "AND t.topic_last_post_time > " . (TIMENOW - 86400 * $topic_days) : '';
$select_tor_sql = $join_tor_sql = '';
$join_dl = ($bb_cfg['show_dl_status_in_forum'] && !IS_GUEST);
$where_tor_sql = '';
if ($forum_data['allow_reg_tracker']) {
if ($tor_status != -1) {
$where_tor_sql = "AND tor.tor_status = $tor_status";
}
$select_tor_sql = ',
bt.auth_key, tor.info_hash, tor.info_hash_v2, tor.size AS tor_size, tor.reg_time, tor.complete_count, tor.seeder_last_seen, tor.attach_id, tor.tor_status, tor.tor_type,
sn.seeders, sn.leechers, ad.download_count
';
$select_tor_sql .= ($join_dl) ? ', dl.user_status AS dl_status' : '';
$join_tor_sql = "
LEFT JOIN " . BB_BT_TORRENTS . " tor ON(t.topic_id = tor.topic_id)
LEFT JOIN " . BB_BT_USERS . " bt ON(bt.user_id = {$userdata['user_id']})
LEFT JOIN " . BB_BT_TRACKER_SNAP . " sn ON(tor.topic_id = sn.topic_id)
LEFT JOIN " . BB_ATTACHMENTS_DESC . " ad ON(tor.attach_id = ad.attach_id)
";
$join_tor_sql .= ($join_dl) ? " LEFT JOIN " . BB_BT_DLSTATUS . " dl ON(dl.user_id = {$userdata['user_id']} AND dl.topic_id = t.topic_id)" : '';
}
// Title match
$title_match_sql = '';
if ($title_match =& $_REQUEST[$title_match_key]) {
if ($tmp = mb_substr(trim($title_match), 0, $title_match_max_len)) {
$title_match_val = clean_text_match($tmp, true, false);
$title_match_topics = get_title_match_topics($title_match_val, [0 => $forum_id]);
if ($search_match_topics_csv = implode(',', $title_match_topics)) {
$title_match_sql = "AND t.topic_id IN($search_match_topics_csv)";
}
}
}
// Get topics
$topic_ids = $topic_rowset = [];
// IDs
$sql = "
SELECT t.topic_id
FROM " . BB_TOPICS . " t
WHERE t.forum_id = $forum_id
$only_new_sql
$title_match_sql
$limit_topics_time_sql
$order_sql
LIMIT $start, $topics_per_page
";
foreach (DB()->fetch_rowset($sql) as $row) {
$topic_ids[] = $row['topic_id'];
}
// Titles, posters etc.
if ($topics_csv = implode(',', $topic_ids)) {
$topic_rowset = DB()->fetch_rowset("
SELECT
t.*, t.topic_poster AS first_user_id, u1.user_rank as first_user_rank,
IF(t.topic_poster = $anon, p1.post_username, u1.username) AS first_username,
p2.poster_id AS last_user_id, u2.user_rank as last_user_rank,
IF(p2.poster_id = $anon, p2.post_username, u2.username) AS last_username
$select_tor_sql
FROM " . BB_TOPICS . " t
LEFT JOIN " . BB_POSTS . " p1 ON(t.topic_first_post_id = p1.post_id)
LEFT JOIN " . BB_USERS . " u1 ON(t.topic_poster = u1.user_id)
LEFT JOIN " . BB_POSTS . " p2 ON(t.topic_last_post_id = p2.post_id)
LEFT JOIN " . BB_USERS . " u2 ON(p2.poster_id = u2.user_id)
$join_tor_sql
WHERE t.topic_id IN($topics_csv)
$where_tor_sql
GROUP BY t.topic_id
$order_sql
");
}
// Define censored word matches
$orig_word = $replacement_word = [];
obtain_word_list($orig_word, $replacement_word);
if ($forum_data['allow_reg_tracker']) {
$post_new_topic_url = POSTING_URL . "?mode=new_rel&amp;f=$forum_id";
$post_img = $images['release_new'];
$post_new_topic = $lang['POST_NEW_RELEASE'];
} else {
$post_new_topic_url = POSTING_URL . "?mode=newtopic&amp;f=$forum_id";
$post_img = $images['post_new'];
$post_new_topic = $lang['POST_NEW_TOPIC'];
}
// Post URL generation for templating vars
$template->assign_vars([
'U_POST_NEW_TOPIC' => $post_new_topic_url,
'S_SELECT_TOPIC_DAYS' => build_select('topicdays', array_flip($sel_previous_days), $topic_days),
'S_POST_DAYS_ACTION' => FORUM_URL . "$forum_id&amp;start=$start",
'S_DISPLAY_ORDER' => $s_display_order,
]);
// User authorisation levels output
$u_auth = [];
$u_auth[] = ($is_auth['auth_post']) ? $lang['RULES_POST_CAN'] : $lang['RULES_POST_CANNOT'];
$u_auth[] = ($is_auth['auth_reply']) ? $lang['RULES_REPLY_CAN'] : $lang['RULES_REPLY_CANNOT'];
$u_auth[] = ($is_auth['auth_edit']) ? $lang['RULES_EDIT_CAN'] : $lang['RULES_EDIT_CANNOT'];
$u_auth[] = ($is_auth['auth_delete']) ? $lang['RULES_DELETE_CAN'] : $lang['RULES_DELETE_CANNOT'];
$u_auth[] = ($is_auth['auth_vote']) ? $lang['RULES_VOTE_CAN'] : $lang['RULES_VOTE_CANNOT'];
$u_auth[] = ($is_auth['auth_attachments']) ? $lang['RULES_ATTACH_CAN'] : $lang['RULES_ATTACH_CANNOT'];
$u_auth[] = ($is_auth['auth_download']) ? $lang['RULES_DOWNLOAD_CAN'] : $lang['RULES_DOWNLOAD_CANNOT'];
$u_auth[] = ($is_auth['auth_mod']) ? $lang['RULES_MODERATE'] : '';
$u_auth = implode("<br />\n", $u_auth);
$template->assign_vars([
'PAGE_TITLE' => htmlCHR($forum_data['forum_name']),
'FORUM_ID' => $forum_id,
'FORUM_NAME' => htmlCHR($forum_data['forum_name']),
'FORUM_DESC' => htmlCHR($forum_data['forum_desc']),
'TORRENTS' => $forum_data['allow_reg_tracker'],
'POST_IMG' => ($forum_data['forum_status'] == FORUM_LOCKED) ? $images['post_locked'] : $post_img,
'FOLDER_IMG' => $images['folder'],
'FOLDER_NEW_IMG' => $images['folder_new'],
'FOLDER_LOCKED_IMG' => $images['folder_locked'],
'FOLDER_STICKY_IMG' => $images['folder_sticky'],
'FOLDER_ANNOUNCE_IMG' => $images['folder_announce'],
'FOLDER_DOWNLOAD_IMG' => $images['folder_dl'],
'SHOW_ONLY_NEW_MENU' => true,
'ONLY_NEW_POSTS_ON' => ($only_new == ONLY_NEW_POSTS),
'ONLY_NEW_TOPICS_ON' => ($only_new == ONLY_NEW_TOPICS),
'TITLE_MATCH' => htmlCHR($title_match),
'SELECT_TPP' => ($select_tpp) ? build_select('tpp', $select_tpp, $topics_per_page, null, null, 'onchange="$(\'#tpp\').submit();"') : '',
'T_POST_NEW_TOPIC' => ($forum_data['forum_status'] == FORUM_LOCKED) ? $lang['FORUM_LOCKED'] : $post_new_topic,
'S_AUTH_LIST' => $u_auth,
'U_VIEW_FORUM' => FORUM_URL . $forum_id,
'U_MARK_READ' => FORUM_URL . $forum_id . "&amp;mark=topics",
'U_SEARCH_SELF' => "search.php?uid={$userdata['user_id']}&f=$forum_id",
]);
// Okay, lets dump out the page ...
$found_topics = 0;
foreach ($topic_rowset as $topic) {
$topic_id = $topic['topic_id'];
$moved = ($topic['topic_status'] == TOPIC_MOVED);
$replies = $topic['topic_replies'];
$t_hot = ($replies >= $bb_cfg['hot_threshold']);
$t_type = $topic['topic_type'];
$separator = '';
$is_unread = is_unread($topic['topic_last_post_time'], $topic_id, $forum_id);
if ($t_type == POST_ANNOUNCE && !defined('ANNOUNCE_SEP')) {
define('ANNOUNCE_SEP', true);
$separator = $lang['TOPICS_ANNOUNCEMENT'];
} elseif ($t_type == POST_STICKY && !defined('STICKY_SEP')) {
define('STICKY_SEP', true);
$separator = $lang['TOPICS_STICKY'];
} elseif ($t_type == POST_NORMAL && !defined('NORMAL_SEP')) {
if (defined('ANNOUNCE_SEP') || defined('STICKY_SEP')) {
define('NORMAL_SEP', true);
$separator = $lang['TOPICS_NORMAL'];
}
}
$template->assign_block_vars('t', [
'FORUM_ID' => $forum_id,
'TOPIC_ID' => $topic_id,
'HREF_TOPIC_ID' => $moved ? $topic['topic_moved_id'] : $topic['topic_id'],
'TOPIC_TITLE' => wbr($topic['topic_title']),
'TOPICS_SEPARATOR' => $separator,
'IS_UNREAD' => $is_unread,
'TOPIC_ICON' => get_topic_icon($topic, $is_unread),
'PAGINATION' => $moved ? '' : build_topic_pagination(TOPIC_URL . $topic_id, $replies, $bb_cfg['posts_per_page']),
'REPLIES' => $replies,
'VIEWS' => $topic['topic_views'],
'TOR_STALED' => ($forum_data['allow_reg_tracker'] && !($t_type == POST_ANNOUNCE || $t_type == POST_STICKY || $topic['tor_size'])),
'TOR_FROZEN' => isset($topic['tor_status']) ? ((!IS_AM) ? isset($bb_cfg['tor_frozen'][$topic['tor_status']]) : '') : '',
'TOR_TYPE' => isset($topic['tor_type']) ? is_gold($topic['tor_type']) : '',
'TOR_STATUS_ICON' => isset($topic['tor_status']) ? $bb_cfg['tor_icons'][$topic['tor_status']] : '',
'TOR_STATUS_TEXT' => isset($topic['tor_status']) ? $lang['TOR_STATUS_NAME'][$topic['tor_status']] : '',
'ATTACH' => $topic['topic_attachment'] ?? false,
'STATUS' => $topic['topic_status'],
'TYPE' => $topic['topic_type'],
'DL' => ($topic['topic_dl_type'] == TOPIC_DL_TYPE_DL && !$forum_data['allow_reg_tracker']),
'POLL' => !IS_GUEST && $topic['topic_vote'],
'DL_CLASS' => isset($topic['dl_status']) ? $dl_link_css[$topic['dl_status']] : '',
'TOPIC_AUTHOR' => profile_url(['username' => str_short($topic['first_username'], 15), 'user_id' => $topic['first_user_id'], 'user_rank' => $topic['first_user_rank']]),
'LAST_POSTER' => profile_url(['username' => str_short($topic['last_username'], 15), 'user_id' => $topic['last_user_id'], 'user_rank' => $topic['last_user_rank']]),
'LAST_POST_TIME' => bb_date($topic['topic_last_post_time']),
'LAST_POST_ID' => $topic['topic_last_post_id'],
]);
if (isset($topic['tor_size'])) {
$tor_magnet = create_magnet($topic['info_hash'], $topic['info_hash_v2'], $topic['auth_key'], html_ent_decode($topic['topic_title']));
$template->assign_block_vars('t.tor', [
'SEEDERS' => (int)$topic['seeders'],
'LEECHERS' => (int)$topic['leechers'],
'TOR_SIZE' => humn_size($topic['tor_size'], 1),
'COMPL_CNT' => declension((int)$topic['complete_count'], 'times'),
'DOWNLOADED' => (int)$topic['download_count'],
'ATTACH_ID' => $topic['attach_id'],
'MAGNET' => $tor_magnet,
]);
}
$found_topics++;
}
unset($topic_rowset);
$pg_url = FORUM_URL . $forum_id;
$pg_url .= $sort_value ? "&sort=$sort_value" : '';
$pg_url .= $order_value ? "&order=$order_value" : '';
$template->assign_var('MOD_URL', $pg_url);
$pg_url = FORUM_URL . $forum_id;
$pg_url .= $topic_days ? "&amp;topicdays=$topic_days" : '';
$pg_url .= $sort_value ? "&amp;sort=$sort_value" : '';
$pg_url .= $order_value ? "&amp;order=$order_value" : '';
$pg_url .= $moderation ? "&amp;mod=1" : '';
$pg_url .= ($topics_per_page != $bb_cfg['topics_per_page']) ? "&amp;tpp=$topics_per_page" : '';
if ($found_topics) {
generate_pagination($pg_url, $forum_topics, $topics_per_page, $start);
} else {
if ($only_new) {
$no_topics_msg = $lang['NO_NEW_POSTS'];
} else {
$no_topics_msg = ($topic_days || $title_match) ? $lang['NO_SEARCH_MATCH'] : ($forum_data['allow_reg_tracker'] ? $lang['NO_RELEASES_POST_ONE'] : $lang['NO_TOPICS_POST_ONE']);
}
$template->assign_vars([
'NO_TOPICS' => $no_topics_msg,
]);
}
$template->assign_vars([
'PAGE_URL' => $pg_url,
'PAGE_URL_TPP' => url_arg($pg_url, 'tpp', null),
'FOUND_TOPICS' => $found_topics,
'AUTH_MOD' => $is_auth['auth_mod'],
'SESSION_ADMIN' => $userdata['session_admin'],
'MOD_REDIRECT_URL' => $mod_redirect_url,
'MODERATION_ON' => $moderation,
'PRUNE_DAYS' => !empty($forum_data['prune_days']) ? delta_time((TIMENOW - 86400 * $forum_data['prune_days']), TIMENOW, 'days') : false,
'CAT_ID' => $forum_data['cat_id'],
'CAT_TITLE' => $forums['cat_title_html'][$forum_data['cat_id']],
'U_VIEWCAT' => CAT_URL . $forum_data['cat_id'],
'PARENT_FORUM_HREF' => ($parent_id = $forum_data['forum_parent']) ? FORUM_URL . $forum_data['forum_parent'] : '',
'PARENT_FORUM_NAME' => ($parent_id = $forum_data['forum_parent']) ? $forums['forum_name_html'][$parent_id] : '',
]);
print_page('viewforum.tpl');