Просмотр файла includes/page_header.php

Размер файла: 14.68Kb
  1. <?php
  2. /***************************************************************************
  3. * mides.ru
  4. * -------------------
  5. ***************************************************************************/
  6. if ( !defined('IN_PHPBB') )
  7. {
  8. die("Hacking attempt");
  9. }
  10.  
  11. define('HEADER_INC', TRUE);
  12.  
  13. $do_gzip_compress = FALSE;
  14. if ( $board_config['gzip_compress'] )
  15. {
  16. $phpver = phpversion();
  17.  
  18. $useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');
  19.  
  20. if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
  21. {
  22. if ( extension_loaded('zlib') )
  23. {
  24. ob_start('ob_gzhandler');
  25. }
  26. }
  27. else if ( $phpver > '4.0' )
  28. {
  29. if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
  30. {
  31. if ( extension_loaded('zlib') )
  32. {
  33. $do_gzip_compress = TRUE;
  34. ob_start();
  35. ob_implicit_flush(0);
  36.  
  37. header('Content-Encoding: gzip');
  38. }
  39. }
  40. }
  41. }
  42.  
  43. $template->set_filenames(array(
  44. 'header' => 'header.tpl')
  45. );
  46.  
  47. $current_time = time();
  48.  
  49. if ($board_config['reputation_last_check_time'] + $board_config['reputation_check_rate'] * 60 < $current_time)
  50. {
  51. if ($board_config['reputation_delete_expired'] != -1)
  52. {
  53. $delete_time = $current_time - $board_config['reputation_delete_expired'] * 86400;
  54. $result = db_query('SELECT id
  55. FROM {REPUTATION_TABLE}
  56. WHERE (modification = {REPUTATION_WARNING_EXPIRED} OR modification = {REPUTATION_BAN_EXPIRED})
  57. AND expire < %d', $delete_time);
  58.  
  59. $in_sql = '';
  60. while ($row = $db->sql_fetchrow($result))
  61. {
  62. $in_sql .= ($in_sql ? ',' : '') . $row['id'];
  63. }
  64. if ($in_sql)
  65. {
  66. db_query('DELETE FROM {REPUTATION_TABLE}
  67. WHERE id IN (' . $in_sql . ')');
  68. db_query('DELETE FROM {REPUTATION_TEXT_TABLE}
  69. WHERE id IN (' . $in_sql . ')');
  70. }
  71. }
  72. else
  73. {
  74. $delete_time = -1;
  75. }
  76.  
  77. $result = db_query('SELECT id, user_id, modification FROM {REPUTATION_TABLE}
  78. WHERE (modification = {REPUTATION_WARNING} OR modification = {REPUTATION_BAN})
  79. AND expire < %d', $current_time);
  80.  
  81. while ($row = $db->sql_fetchrow($result))
  82. {
  83. if ($delete_time != -1 && $row['expire'] < $delete_time)
  84. {
  85. db_query('DELETE FROM {REPUTATION_TABLE} WHERE id = %d', $row['id']);
  86. db_query('DELETE FROM {REPUTATION_TEXT_TABLE} WHERE id = %d', $row['id']);
  87. }
  88. else
  89. {
  90. $set = ($row['modification'] == REPUTATION_WARNING) ? REPUTATION_WARNING_EXPIRED : REPUTATION_BAN_EXPIRED;
  91. db_query('UPDATE {REPUTATION_TABLE} SET modification = %d WHERE id = %d', $set, $row['id']);
  92. }
  93. if ($row['modification'] == REPUTATION_BAN)
  94. {
  95. db_query('DELETE FROM {BANLIST_TABLE} WHERE ban_userid = %d', $row['user_id']);
  96. db_query('UPDATE {USERS_TABLE} SET user_allow_pm = 1 WHERE user_id = %d', $row['user_id']);
  97. }
  98. db_query('UPDATE {USERS_TABLE} SET user_warnings = user_warnings - 1 WHERE user_id = %d', $row['user_id']);
  99. }
  100.  
  101. db_query('UPDATE {CONFIG_TABLE} SET config_value = %d WHERE config_name = \'reputation_last_check_time\'', $current_time);
  102. }
  103.  
  104. if ( $userdata['session_logged_in'] )
  105. {
  106. $u_login_logout = 'login.'.$phpEx.'?logout=true&amp;sid=' . $userdata['session_id'];
  107. $l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
  108. }
  109. else
  110. {
  111. $u_login_logout = 'login.'.$phpEx;
  112. $l_login_logout = $lang['Login'];
  113. }
  114.  
  115. $s_last_visit = ( $userdata['session_logged_in'] ) ? create_date($board_config['default_dateformat'], $userdata['user_lastvisit'], $board_config['board_timezone']) : '';
  116.  
  117. $logged_visible_online = 0;
  118. $logged_hidden_online = 0;
  119. $guests_online = 0;
  120. $online_userlist = '';
  121. $l_online_users = '';
  122.  
  123.  
  124.  
  125. $user_forum_sql = ( !empty($forum_id) ) ? "AND s.session_page = " . intval($forum_id) : '';
  126. $sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip
  127. FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
  128. WHERE u.user_id = s.session_user_id
  129. AND s.session_time >= ".( time() - 300 ) . "
  130. $user_forum_sql
  131. ORDER BY u.username ASC, s.session_ip ASC";
  132. if( !($result = $db->sql_query($sql)) )
  133. {
  134. message_die(GENERAL_ERROR, 'Could not obtain user/online information', '', __LINE__, __FILE__, $sql);
  135. }
  136.  
  137. $userlist_ary = array();
  138. $userlist_visible = array();
  139.  
  140. $prev_user_id = 0;
  141. $prev_user_ip = $prev_session_ip = '';
  142.  
  143. while( $row = $db->sql_fetchrow($result) )
  144. {
  145. if ( $row['session_logged_in'] )
  146. {
  147. if ( $row['user_id'] != $prev_user_id )
  148. {
  149.  
  150. if ( $row['user_allow_viewonline'] )
  151. {
  152. $user_online_link = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']) . '"' . $style_color .'>' . $row['username'] . '</a>';
  153. $logged_visible_online++;
  154. }
  155. else
  156. {
  157. $user_online_link = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']) . '"' . $style_color .'><i>' . $row['username'] . '</i></a>';
  158. $logged_hidden_online++;
  159. }
  160.  
  161. if ( $row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN )
  162. {
  163. $online_userlist .= ( $online_userlist != '' ) ? ', ' . $user_online_link : $user_online_link;
  164. }
  165. }
  166.  
  167. $prev_user_id = $row['user_id'];
  168. }
  169. else
  170. {
  171. if ( $row['session_ip'] != $prev_session_ip )
  172. {
  173. $guests_online++;
  174. }
  175. }
  176.  
  177. $prev_session_ip = $row['session_ip'];
  178. }
  179. $db->sql_freeresult($result);
  180.  
  181. if ( empty($online_userlist) )
  182. {
  183. $online_userlist = $lang['None'];
  184. }
  185. $online_userlist = ( ( isset($forum_id) ) ? $lang['Browsing_forum'] : $lang['Registered_users'] ) . ' ' . $online_userlist;
  186.  
  187. $total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online;
  188.  
  189. if ( $total_online_users > $board_config['record_online_users'])
  190. {
  191. $board_config['record_online_users'] = $total_online_users;
  192. $board_config['record_online_date'] = time();
  193.  
  194. $sql = "UPDATE " . CONFIG_TABLE . "
  195. SET config_value = '$total_online_users'
  196. WHERE config_name = 'record_online_users'";
  197. if ( !$db->sql_query($sql) )
  198. {
  199. message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql);
  200. }
  201.  
  202. $sql = "UPDATE " . CONFIG_TABLE . "
  203. SET config_value = '" . $board_config['record_online_date'] . "'
  204. WHERE config_name = 'record_online_date'";
  205. if ( !$db->sql_query($sql) )
  206. {
  207. message_die(GENERAL_ERROR, 'Could not update online user record (date)', '', __LINE__, __FILE__, $sql);
  208. }
  209. }
  210.  
  211. if ( $total_online_users == 0 )
  212. {
  213. $l_t_user_s = $lang['Online_users_zero_total1'];
  214. }
  215. else if ( $total_online_users == 1 )
  216. {
  217. $l_t_user_s = $lang['Online_user_total1'];
  218. }
  219. else
  220. {
  221. $l_t_user_s = $lang['Online_users_total1'];
  222. }
  223.  
  224. if ( $logged_visible_online == 0 )
  225. {
  226. $l_r_user_s = $lang['Reg_users_zero_total1'];
  227. }
  228. else if ( $logged_visible_online == 1 )
  229. {
  230. $l_r_user_s = $lang['Reg_user_total1'];
  231. }
  232. else
  233. {
  234. $l_r_user_s = $lang['Reg_users_total1'];
  235. }
  236.  
  237. if ( $logged_hidden_online == 0 )
  238. {
  239. $l_h_user_s = $lang['Hidden_users_zero_total1'];
  240. }
  241. else if ( $logged_hidden_online == 1 )
  242. {
  243. $l_h_user_s = $lang['Hidden_user_total1'];
  244. }
  245. else
  246. {
  247. $l_h_user_s = $lang['Hidden_users_total1'];
  248. }
  249.  
  250. if ( $guests_online == 0 )
  251. {
  252. $l_g_user_s = $lang['Guest_users_zero_total1'];
  253. }
  254. else if ( $guests_online == 1 )
  255. {
  256. $l_g_user_s = $lang['Guest_user_total1'];
  257. }
  258. else
  259. {
  260. $l_g_user_s = $lang['Guest_users_total1'];
  261. }
  262.  
  263.  
  264. $l_online_users = sprintf($l_r_user_s, $logged_visible_online);
  265. $l_online_users .= sprintf($l_h_user_s, $logged_hidden_online);
  266. $l_online_users .= sprintf($l_t_user_s, $total_online_users);
  267.  
  268. if ( ($userdata['session_logged_in']) && (empty($gen_simple_header)) )
  269. {
  270.  
  271. if ( $userdata['user_new_privmsg'] )
  272. {
  273. $l_message_new = ( $userdata['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : 'Вам сообщение! (%d)';
  274. $l_message_neww = ( $userdata['user_new_privmsg'] == 1 ) ? 'Вам сообщение! (%d)' : 'Вам сообщения! (%d)';
  275. $l_privmsgs_text = sprintf($l_message_new, $userdata['user_new_privmsg']);
  276. $l_privmsgs_text1 = '&nbsp;<img src="../images/img/mail.gif"> <a href="'.append_sid('../pages/privmsg.'.$phpEx.'?folder=inbox').'"><font color="red">'.sprintf($l_message_neww, $userdata['user_new_privmsg']).'</a></font><br/>';
  277.  
  278.  
  279. if ( $userdata['user_last_privmsg'] > $userdata['user_lastvisit'] )
  280. {
  281. $sql = "UPDATE " . USERS_TABLE . "
  282. SET user_last_privmsg = " . $userdata['user_lastvisit'] . "
  283. WHERE user_id = " . $userdata['user_id'];
  284. if ( !$db->sql_query($sql) )
  285. {
  286. message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql);
  287. }
  288.  
  289. $s_privmsg_new = 1;
  290. $icon_pm = $images['pm_new_msg'];
  291. }
  292. else
  293. {
  294. $s_privmsg_new = 0;
  295. $icon_pm = $images['pm_new_msg'];
  296. }
  297. }
  298. else
  299. {
  300. $l_privmsgs_text = $lang['No_new_pm'];
  301.  
  302. $s_privmsg_new = 0;
  303. $icon_pm = $images['pm_no_new_msg'];
  304. }
  305.  
  306. if ( $userdata['user_unread_privmsg'] )
  307. {
  308. $l_message_unread = ( $userdata['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms'];
  309. $l_privmsgs_text_unread = sprintf($l_message_unread, $userdata['user_unread_privmsg']);
  310. }
  311. else
  312. {
  313. $l_privmsgs_text_unread = $lang['No_unread_pm'];
  314. }
  315. if ($userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD)
  316. {
  317. $result = db_query('SELECT COUNT(report_id) AS num_reports FROM {POST_REPORTS_TABLE}');
  318. $row = $db->sql_fetchrow($result);
  319. if ( $row['num_reports'] == 1 )
  320. {
  321. $l_privmsgs_text1 .= ( $userdata['user_new_privmsg'] ) ? '<br/><a href="' . append_sid("report.$phpEx?mode=view") . '">поступила 1 жалоба</a>' : '<a href="' . append_sid("report.$phpEx?mode=view") . '">поступила 1 жалоба</a>';
  322. }
  323. elseif ( $row['num_reports'] > 1 )
  324. {
  325. $l_privmsgs_text1 .= ( $userdata['user_new_privmsg'] ) ? '<br/><a href="' . append_sid("report.$phpEx?mode=view") . '">поступило ' . $row['num_reports'] . ' жалобы</a>' : '<a href="' . append_sid("report.$phpEx?mode=view") . '">поступило ' . $row['num_reports'] . ' жалобы</a>';
  326. }
  327. }
  328. }
  329. else
  330. {
  331. $icon_pm = $images['pm_no_new_msg'];
  332. $l_privmsgs_text = $lang['Login_check_pm'];
  333. $l_privmsgs_text_unread = '';
  334. $s_privmsg_new = 0;
  335. }
  336.  
  337. $online_color = ' style="color: #0fff0f"';
  338. $offline_color = ' style="color: #b40000"';
  339. $hidden_color = ' style="color: #888888"';
  340.  
  341. $l_timezone = explode('.', $board_config['board_timezone']);
  342. $l_timezone = (count($l_timezone) > 1 && $l_timezone[count($l_timezone)-1] != 0) ? $lang[sprintf('%.1f', $board_config['board_timezone'])] : $lang[number_format($board_config['board_timezone'])];
  343.  
  344. $template->assign_vars(array(
  345. 'SITENAME' => $board_config['sitename'],
  346. 'SITE_DESCRIPTION' => $board_config['site_desc'],
  347. 'PAGE_TITLE' => $page_title,
  348. 'LAST_VISIT_DATE' => sprintf($lang['You_last_visit'], $s_last_visit),
  349. 'CURRENT_TIME' => sprintf($lang['Current_time'], create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])),
  350. 'TOTAL_USERS_ONLINE' => $l_online_users,
  351. 'LOGGED_IN_USER_LIST' => $online_userlist,
  352. 'RECORD_USERS' => sprintf($lang['Record_online_users'], $board_config['record_online_users'], create_date($board_config['default_dateformat'], $board_config['record_online_date'], $board_config['board_timezone'])),
  353. 'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text,
  354. 'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread,
  355. 'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new,
  356.  
  357. 'PRIVMSG_IMG' => $icon_pm,
  358.  
  359. 'PRIVAT' => $l_privmsgs_text1,
  360.  
  361. 'L_USERNAME' => $lang['Username'],
  362. 'L_PASSWORD' => $lang['Password'],
  363. 'L_LOGIN_LOGOUT' => $l_login_logout,
  364. 'L_LOGIN' => $lang['Login'],
  365. 'L_LOG_ME_IN' => $lang['Log_me_in'],
  366. 'L_AUTO_LOGIN' => $lang['Log_me_in'],
  367. 'L_INDEX' => sprintf($lang['Forum_Index'], $board_config['sitename']),
  368. 'L_REGISTER' => $lang['Register'],
  369. 'L_PROFILE' => $lang['Profile'],
  370. 'L_SEARCH' => $lang['Search'],
  371. 'L_PRIVATEMSGS' => $lang['Private_Messages'],
  372. 'L_WHO_IS_ONLINE' => $lang['Who_is_Online'],
  373. 'L_MEMBERLIST' => $lang['Memberlist'],
  374. 'L_FAQ' => $lang['FAQ'],
  375. 'L_BANK' => $lang['bank'],
  376. 'L_RULES' => $lang['Rules'],
  377. 'L_USERGROUPS' => $lang['Usergroups'],
  378. 'L_SEARCH_NEW' => $lang['Search_new'],
  379. 'L_SEARCH_UNANSWERED' => $lang['Search_unanswered'],
  380. 'L_SEARCH_SELF' => $lang['Search_your_posts'],
  381. 'L_MEDALS' => $lang['Medals'],
  382.  
  383. 'U_SEARCH_UNANSWERED' => append_sid('search.'.$phpEx.'?search_id=unanswered'),
  384. 'U_SEARCH_SELF' => append_sid('search.'.$phpEx.'?search_id=egosearch'),
  385. 'U_SEARCH_NEW' => append_sid('search.'.$phpEx.'?search_id=newposts'),
  386. 'U_INDEX' => append_sid('index.'.$phpEx),
  387. 'U_REGISTER' => append_sid('profile.'.$phpEx.'?mode=register'),
  388. 'U_PROFILE' => append_sid('profile.'.$phpEx.'?mode=viewprofile&amp;u='.$userdata['user_id']),
  389. 'U_PRIVATEMSGS' => append_sid('privmsg.'.$phpEx.'?folder=inbox'),
  390. 'U_PRIVATEMSGS_POPUP' => append_sid('privmsg.'.$phpEx.'?mode=newpm'),
  391. 'U_SEARCH' => append_sid('search.'.$phpEx),
  392. 'U_MEMBERLIST' => append_sid('memberlist.'.$phpEx),
  393. 'U_BANLIST' => append_sid('memberlist.'.$phpEx.'?ban'),
  394. 'U_MODCP' => append_sid('modcp.'.$phpEx),
  395. 'U_VIEWONLINE' => append_sid('viewonline.'.$phpEx),
  396. 'U_LOGIN_LOGOUT' => append_sid($u_login_logout),
  397. 'U_GROUP_CP' => append_sid('groupcp.'.$phpEx),
  398. 'U_BANK' => append_sid('bank.'.$phpEx),
  399. 'U_RULES' => append_sid('rules.'.$phpEx),
  400. 'U_STAFF' => append_sid('memberlist.'.$phpEx.'?admin'),
  401. 'L_STAFF' => $lang['Staff'],
  402. 'L_ALBUM' => $lang['Album'],
  403. 'U_ALBUM' => append_sid('album.'.$phpEx),
  404. 'U_SHOP' => append_sid('shop.'.$phpEx),
  405. 'U_MEDALS' => append_sid('medals.'.$phpEx),
  406. 'CSS_STYLE' => style_text(),
  407.  
  408. 'S_CONTENT_DIRECTION' => $lang['DIRECTION'],
  409. 'S_CONTENT_ENCODING' => $lang['ENCODING'],
  410. 'S_CONTENT_DIR_LEFT' => $lang['LEFT'],
  411. 'S_CONTENT_DIR_RIGHT' => $lang['RIGHT'],
  412. 'S_TIMEZONE' => sprintf($lang['All_times'], $l_timezone),
  413. 'S_LOGIN_ACTION' => append_sid('login.'.$phpEx))
  414. );
  415.  
  416. if ( !$userdata['session_logged_in'] )
  417. {
  418. $template->assign_block_vars('switch_user_logged_out', array());
  419.  
  420. if (!isset($board_config['allow_autologin']) || $board_config['allow_autologin'] )
  421. {
  422. $template->assign_block_vars('switch_allow_autologin', array());
  423. $template->assign_block_vars('switch_user_logged_out.switch_allow_autologin', array());
  424. }
  425. }
  426. else
  427. {
  428. $template->assign_block_vars('switch_user_logged_in', array());
  429.  
  430. if ( !empty($userdata['user_popup_pm']) )
  431. {
  432. $template->assign_block_vars('switch_enable_pm_popup', array());
  433. }
  434. }
  435.  
  436. if ( $board_config['shop'] )
  437. {
  438. $template->assign_block_vars('shop_on', array());
  439. }
  440.  
  441. //$c_no_cache = (isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']) || isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_data'])) ? 'no-cache="set-cookie", ' : '';
  442.  
  443. if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
  444. {
  445. header ('Cache-Control: no-cache, pre-check=0, post-check=0');
  446. }
  447. else
  448. {
  449. header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
  450. }
  451. header ('Expires: 0');
  452. header ('Pragma: no-cache');
  453.  
  454. $template->pparse('header');
  455.  
  456. ?>