<?php /** * TorrentPier – Bull-powered BitTorrent tracker engine * * @copyright Copyright (c) 2005-2025 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 */ if (!defined('BB_ROOT')) { die(basename(__FILE__)); } if (defined('PAGE_HEADER_SENT')) { return; } // Parse and show the overall page header global $page_cfg, $userdata, $user, $ads, $bb_cfg, $template, $lang, $images; $logged_in = (int)!empty($userdata['session_logged_in']); // Generate logged in/logged out status if ($logged_in) { $u_login_logout = BB_ROOT . LOGIN_URL . "?logout=1"; } else { $u_login_logout = BB_ROOT . LOGIN_URL; } // Online userlist if (defined('SHOW_ONLINE') && SHOW_ONLINE) { $online_full = !empty($_REQUEST['online_full']); $online_list = $online_full ? 'online_' . $userdata['user_lang'] : 'online_short_' . $userdata['user_lang']; ${$online_list} = [ 'stat' => '', 'userlist' => '', 'cnt' => '' ]; if (defined('IS_GUEST') && !(IS_GUEST || IS_USER)) { $template->assign_var('SHOW_ONLINE_LIST'); if (!${$online_list} = CACHE('bb_cache')->get($online_list)) { require INC_DIR . '/online_userlist.php'; ${$online_list} = CACHE('bb_cache')->get($online_list); } } $template->assign_vars([ 'TOTAL_USERS_ONLINE' => ${$online_list}['stat'], 'LOGGED_IN_USER_LIST' => ${$online_list}['userlist'], 'USERS_ONLINE_COUNTS' => ${$online_list}['cnt'], 'RECORD_USERS' => sprintf($lang['RECORD_ONLINE_USERS'], $bb_cfg['record_online_users'], bb_date($bb_cfg['record_online_date'])), ]); } // Info about new private messages $icon_pm = $images['pm_no_new_msg']; $pm_info = $lang['NO_NEW_PM']; $have_new_pm = $have_unread_pm = 0; if ($logged_in && empty($gen_simple_header) && !defined('IN_ADMIN')) { if ($userdata['user_new_privmsg']) { $have_new_pm = $userdata['user_new_privmsg']; $icon_pm = $images['pm_new_msg']; $pm_info = declension($userdata['user_new_privmsg'], $lang['NEW_PMS_DECLENSION'], $lang['NEW_PMS_FORMAT']); if ($userdata['user_last_privmsg'] > $userdata['user_lastvisit'] && defined('IN_PM')) { $userdata['user_last_privmsg'] = $userdata['user_lastvisit']; \TorrentPier\Sessions::db_update_userdata($userdata, [ 'user_last_privmsg' => $userdata['user_lastvisit'] ]); $have_new_pm = ($userdata['user_new_privmsg'] > 1); } } if (!$have_new_pm && $userdata['user_unread_privmsg']) { // sync unread pm count if (defined('IN_PM')) { $row = DB()->fetch_row(" SELECT COUNT(*) AS pm_count FROM " . BB_PRIVMSGS . " WHERE privmsgs_to_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " GROUP BY privmsgs_to_userid "); $real_unread_pm_count = (int)($row['pm_count'] ?? 0); if ($userdata['user_unread_privmsg'] != $real_unread_pm_count) { $userdata['user_unread_privmsg'] = $real_unread_pm_count; \TorrentPier\Sessions::db_update_userdata($userdata, [ 'user_unread_privmsg' => $real_unread_pm_count ]); } } $pm_info = declension($userdata['user_unread_privmsg'], $lang['UNREAD_PMS_DECLENSION'], $lang['UNREAD_PMS_FORMAT']); $have_unread_pm = true; } } $template->assign_vars([ 'HAVE_NEW_PM' => $have_new_pm, 'HAVE_UNREAD_PM' => $have_unread_pm ]); // The following assigns all _common_ variables that may be used at any point in a template $template->assign_vars([ 'SIMPLE_HEADER' => !empty($gen_simple_header), 'CONTENT_ENCODING' => DEFAULT_CHARSET, 'IN_ADMIN' => defined('IN_ADMIN'), 'USER_HIDE_CAT' => (BB_SCRIPT == 'index'), 'USER_LANG' => $userdata['user_lang'], 'INCLUDE_BBCODE_JS' => !empty($page_cfg['include_bbcode_js']), 'USER_OPTIONS_JS' => IS_GUEST ? '{}' : json_encode($user->opt_js, JSON_THROW_ON_ERROR), 'USE_TABLESORTER' => !empty($page_cfg['use_tablesorter']), 'ALLOW_ROBOTS' => !$bb_cfg['board_disable'] && (!isset($page_cfg['allow_robots']) || $page_cfg['allow_robots'] === true), 'SITENAME' => $bb_cfg['sitename'], 'U_INDEX' => BB_ROOT . 'index.php', 'T_INDEX' => sprintf($lang['FORUM_INDEX'], $bb_cfg['sitename']), 'IS_GUEST' => IS_GUEST, 'IS_USER' => IS_USER, 'IS_ADMIN' => IS_ADMIN, 'IS_MOD' => IS_MOD, 'IS_AM' => IS_AM, 'FORUM_PATH' => FORUM_PATH, 'FULL_URL' => FULL_URL, 'CURRENT_TIME' => sprintf($lang['CURRENT_TIME'], bb_date(TIMENOW, $bb_cfg['last_visit_date_format'], false)), 'S_TIMEZONE' => preg_replace('/\(.*?\)/', '', sprintf($lang['ALL_TIMES'], $lang['TZ'][str_replace(',', '.', (float)$bb_cfg['board_timezone'])])), 'BOARD_TIMEZONE' => $bb_cfg['board_timezone'], 'PM_INFO' => $pm_info, 'PRIVMSG_IMG' => $icon_pm, 'LOGGED_IN' => $logged_in, 'SESSION_USER_ID' => $userdata['user_id'], 'POINTS' => $userdata['user_points'], 'THIS_USER' => profile_url($userdata), 'THIS_AVATAR' => get_avatar($userdata['user_id'], $userdata['avatar_ext_id'], !bf($userdata['user_opt'], 'user_opt', 'dis_avatar')), 'SHOW_LOGIN_LINK' => !defined('IN_LOGIN'), 'AUTOLOGIN_DISABLED' => !$bb_cfg['allow_autologin'], 'S_LOGIN_ACTION' => LOGIN_URL, 'U_CUR_DOWNLOADS' => PROFILE_URL . $userdata['user_id'], 'U_FORUM' => 'viewforum.php', 'U_GROUPS' => 'group.php', 'U_LOGIN_LOGOUT' => $u_login_logout, 'U_MEMBERLIST' => 'memberlist.php', 'U_MODCP' => 'modcp.php', 'U_OPTIONS' => 'profile.php?mode=editprofile', 'U_PRIVATEMSGS' => PM_URL . "?folder=inbox", 'U_PROFILE' => PROFILE_URL . $userdata['user_id'], 'U_READ_PM' => PM_URL . "?folder=inbox" . (($userdata['user_newest_pm_id'] && $userdata['user_new_privmsg'] == 1) ? "&mode=read&" . POST_POST_URL . "={$userdata['user_newest_pm_id']}" : ''), 'U_REGISTER' => 'profile.php?mode=register', 'U_SEARCH' => 'search.php', 'U_SEND_PASSWORD' => "profile.php?mode=sendpassword", 'U_TERMS' => $bb_cfg['terms_and_conditions_url'], 'U_TRACKER' => 'tracker.php', 'SHOW_SIDEBAR1' => !empty($bb_cfg['page']['show_sidebar1'][BB_SCRIPT]) || $bb_cfg['show_sidebar1_on_every_page'], 'SHOW_SIDEBAR2' => !empty($bb_cfg['page']['show_sidebar2'][BB_SCRIPT]) || $bb_cfg['show_sidebar2_on_every_page'], 'HTML_AGREEMENT' => LANG_DIR . 'html/user_agreement.html', 'HTML_COPYRIGHT' => LANG_DIR . 'html/copyright_holders.html', 'HTML_ADVERT' => LANG_DIR . 'html/advert.html', 'HTML_SIDEBAR_1' => LANG_DIR . 'html/sidebar1.html', 'HTML_SIDEBAR_2' => LANG_DIR . 'html/sidebar2.html', // Common urls 'AVATARS_URL' => 'data/avatars', 'CAT_URL' => BB_ROOT . CAT_URL, 'DOWNLOAD_URL' => BB_ROOT . DL_URL, 'FORUM_URL' => BB_ROOT . FORUM_URL, 'GROUP_URL' => BB_ROOT . GROUP_URL, 'LOGIN_URL' => $bb_cfg['login_url'], 'NEWEST_URL' => '&view=newest#newest', 'PM_URL' => $bb_cfg['pm_url'], 'POST_URL' => BB_ROOT . POST_URL, 'POSTING_URL' => $bb_cfg['posting_url'], 'PROFILE_URL' => BB_ROOT . PROFILE_URL, 'BONUS_URL' => BB_ROOT . BONUS_URL, 'TOPIC_URL' => BB_ROOT . TOPIC_URL, // Misc 'BOT_UID' => BOT_UID, 'SID' => $userdata['session_id'], 'SID_HIDDEN' => '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />', 'CHECKED' => HTML_CHECKED, 'DISABLED' => HTML_DISABLED, 'READONLY' => HTML_READONLY, 'SELECTED' => HTML_SELECTED, 'U_SEARCH_SELF_BY_LAST' => "search.php?uid={$userdata['user_id']}&o=5", 'U_WATCHED_TOPICS' => 'profile.php?mode=watch' ]); if (!empty($bb_cfg['page']['show_torhelp'][BB_SCRIPT]) && !empty($userdata['torhelp'])) { $ignore_time = !empty($_COOKIE['torhelp']) ? (int)$_COOKIE['torhelp'] : 0; if (TIMENOW > $ignore_time) { if ($ignore_time) { bb_setcookie('torhelp', null); } $sql = " SELECT topic_id, topic_title FROM " . BB_TOPICS . " WHERE topic_id IN(" . $userdata['torhelp'] . ") LIMIT 8 "; $torhelp_topics = []; foreach (DB()->fetch_rowset($sql) as $row) { $torhelp_topics[] = '<a href="' . TOPIC_URL . $row['topic_id'] . '">' . $row['topic_title'] . '</a>'; } $template->assign_vars([ 'TORHELP_TOPICS' => implode("</li>\n<li>", $torhelp_topics) ]); } } // Login box $in_out = ($logged_in) ? 'in' : 'out'; $template->assign_block_vars("switch_user_logged_{$in_out}", []); if (!IS_GUEST) { header('Cache-Control: private, pre-check=0, post-check=0, max-age=0'); header('Expires: 0'); header('Pragma: no-cache'); } $template->set_filenames(['page_header' => 'page_header.tpl']); $template->pparse('page_header'); define('PAGE_HEADER_SENT', true); if (!$bb_cfg['gzip_compress']) { flush(); }