torrentpier/library/includes/page_header.php
Roman Kelesidis 6bcf69cfb8
Minor improvements (#1615)
* Minor improvements

* Update CHANGELOG.md
2024-08-27 14:22:50 +07:00

254 lines
8.9 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
*/
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' => $bb_cfg['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' => '&amp;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']}&amp;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();
}