Guest User

mchat.php

a guest
Mar 4th, 2015
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.52 KB | None | 0 0
  1. <?php
  2. /**
  3. *
  4. * @package mChat
  5. * @version $Id: mchat.php
  6. * @copyright (c) 2010 RMcGirr83 ( http://www.rmcgirr83.org/ )
  7. * @copyright (c) djs596 ( http://djs596.com/ ), (c) Stokerpiller ( http://www.phpbb3bbcodes.com/ )
  8. * @copyright (c) By Shapoval Andrey Vladimirovich (AllCity) ~ http://allcity.net.ru/
  9. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  10. *
  11. **/
  12.  
  13. /**
  14. * DO NOT CHANGE (IN_PHPBB)!
  15. */
  16. if(!defined('MCHAT_INCLUDE'))
  17. {
  18. // Custom Page code from http://www.phpbb.com/kb/article/add-a-new-custom-page-to-phpbb/
  19. define('IN_PHPBB', true);
  20. $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
  21. $phpEx = substr(strrchr(__FILE__, '.'), 1);
  22. include($phpbb_root_path.'common.'.$phpEx);
  23. $mchat_include_index = false;
  24. // Start session management.
  25. $user->session_begin();
  26. $auth->acl($user->data);
  27. $user->setup();
  28. }
  29.  
  30. // Add lang file
  31. $user->add_lang(array('mods/mchat_lang', 'viewtopic', 'posting'));
  32.  
  33. //chat enabled
  34. if (!$config['mchat_enable'])
  35. {
  36. trigger_error($user->lang['MCHAT_ENABLE'], E_USER_NOTICE);
  37. }
  38. // check for mod installed
  39. if (empty($config['mchat_version']))
  40. {
  41. if($user->data['user_type'] == USER_FOUNDER)
  42. {
  43. $installer = append_sid("{$phpbb_root_path}mchat_install.$phpEx");
  44. $message = sprintf($user->lang['MCHAT_NOT_INSTALLED'], '<a href="' . $installer . '">', '</a>');
  45. }
  46. else
  47. {
  48. $message = $user->lang['MCHAT_NOTINSTALLED_USER'];
  49. }
  50. trigger_error ($message);
  51. }
  52. // avatars
  53. if (!function_exists('get_user_avatar'))
  54. {
  55. include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
  56. }
  57. // Get the config entries.
  58. if (!function_exists('mchat_cache'))
  59. {
  60. include($phpbb_root_path . 'includes/functions_mchat.' . $phpEx);
  61. }
  62. if (($config_mchat = $cache->get('_mchat_config')) === false)
  63. {
  64. mchat_cache();
  65. }
  66. $config_mchat = $cache->get('_mchat_config');
  67. // Access rights
  68. $mchat_allow_bbcode = ($config['allow_bbcode'] && $auth->acl_get('u_mchat_bbcode')) ? true : false;
  69. $mchat_smilies = ($config['allow_smilies'] && $auth->acl_get('u_mchat_smilies')) ? true : false;
  70. $mchat_urls = ($config['allow_post_links'] && $auth->acl_get('u_mchat_urls')) ? true : false;
  71. $mchat_ip = ($auth->acl_get('u_mchat_ip')) ? true : false;
  72. $mchat_add_mess = ($auth->acl_get('u_mchat_use')) ? true : false;
  73. $mchat_view = ($auth->acl_get('u_mchat_view')) ? true : false;
  74. $mchat_no_flood = ($auth->acl_get('u_mchat_flood_ignore')) ? true : false;
  75. $mchat_read_archive = ($auth->acl_get('u_mchat_archive')) ? true : false;
  76. $mchat_founder = ($user->data['user_type'] == USER_FOUNDER) ? true : false;
  77. $mchat_session_time = !empty($config_mchat['timeout']) ? $config_mchat['timeout'] : (!empty($config['load_online_time']) ? $config['load_online_time'] * 60 : $config['session_length']);
  78. $mchat_rules = (!empty($config_mchat['rules']) || isset($user->lang[strtoupper('mchat_rules')])) ? true : false;
  79. $mchat_avatars = (!empty($config_mchat['avatars']) && $user->optionget('viewavatars') && $user->data['user_mchat_avatars']) ? true : false;
  80.  
  81. // needed variables
  82. // Request options.
  83. $mchat_mode = request_var('mode', '');
  84. $mchat_read_mode = $mchat_archive_mode = $mchat_custom_page = $mchat_no_message = false;
  85. // set redirect if on index or custom page
  86. $on_page = defined('MCHAT_INCLUDE') ? 'index' : 'mchat';
  87.  
  88. // grab fools..uhmmm, foes the user has
  89. $foes_array = array();
  90. $sql = 'SELECT * FROM ' . ZEBRA_TABLE . '
  91. WHERE user_id = ' . $user->data['user_id'] . ' AND foe = 1';
  92. $result = $db->sql_query($sql);
  93. while ($row = $db->sql_fetchrow($result))
  94. {
  95. $foes_array[] = $row['zebra_id'];
  96. }
  97. $db->sql_freeresult($result);
  98.  
  99. // Request mode...
  100. switch ($mchat_mode)
  101. {
  102. // rules popup..
  103. case 'rules':
  104. // If the rules are defined in the language file use them, else just use the entry in the database
  105. if ($mchat_rules || isset($user->lang[strtoupper('mchat_rules')]))
  106. {
  107. if(isset($user->lang[strtoupper('mchat_rules')]))
  108. {
  109. $template->assign_var('MCHAT_RULES', $user->lang[strtoupper('mchat_rules')]);
  110. }
  111. else
  112. {
  113. $mchat_rules = $config_mchat['rules'];
  114. $mchat_rules = explode("\n", $mchat_rules);
  115.  
  116. foreach ($mchat_rules as $mchat_rule)
  117. {
  118. $mchat_rule = htmlspecialchars($mchat_rule);
  119. $template->assign_block_vars('rule', array(
  120. 'MCHAT_RULE' => $mchat_rule,
  121. ));
  122. }
  123. }
  124. // Output the page
  125. page_header($user->lang['MCHAT_HELP']);
  126.  
  127. $template->set_filenames(array(
  128. 'body' => 'mchat_rules.html')
  129. );
  130.  
  131. page_footer();
  132. }
  133. else
  134. {
  135. // Show no rules
  136. trigger_error('NO_MCHAT_RULES', E_USER_NOTICE);
  137. }
  138.  
  139. break;
  140. // whois function..
  141. case 'whois':
  142.  
  143. // Must have auths
  144. if ($mchat_mode == 'whois' && $mchat_ip)
  145. {
  146. // function already exists..
  147. if (!function_exists('user_ipwhois'))
  148. {
  149. include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
  150. }
  151.  
  152. $user_ip = request_var('ip', '');
  153.  
  154. $template->assign_var('WHOIS', user_ipwhois($user_ip));
  155.  
  156. // Output the page
  157. page_header($user->lang['WHO_IS_ONLINE']);
  158.  
  159. $template->set_filenames(array(
  160. 'body' => 'viewonline_whois.html')
  161. );
  162.  
  163. page_footer();
  164. }
  165. else
  166. {
  167. // Show not authorized
  168. trigger_error('NO_AUTH_OPERATION', E_USER_NOTICE);
  169. }
  170. break;
  171. // Clean function...
  172. case 'clean':
  173.  
  174. // User logged in?
  175. if(!$user->data['is_registered'] || !$mchat_founder)
  176. {
  177. if(!$user->data['is_registered'])
  178. {
  179. // Login box...
  180. login_box('', $user->lang['LOGIN']);
  181. }
  182. else if (!$mchat_founder)
  183. {
  184. // Show not authorized
  185. trigger_error('NO_AUTH_OPERATION', E_USER_NOTICE);
  186. }
  187. }
  188.  
  189. $mchat_redirect = request_var('redirect', '');
  190. $mchat_redirect = ($mchat_redirect == 'index') ? append_sid("{$phpbb_root_path}index.$phpEx") : append_sid("{$phpbb_root_path}mchat.$phpEx#mChat");
  191.  
  192. if(confirm_box(true))
  193. {
  194. // Run cleaner
  195. $sql = 'TRUNCATE TABLE ' . MCHAT_TABLE;
  196. $db->sql_query($sql);
  197.  
  198. meta_refresh(3, $mchat_redirect);
  199. trigger_error($user->lang['MCHAT_CLEANED'].'<br /><br />'.sprintf($user->lang['RETURN_PAGE'], '<a href="'.$mchat_redirect.'">', '</a>'), E_USER_NOTICE);
  200. }
  201. else
  202. {
  203. // Display confirm box
  204. confirm_box(false, $user->lang['MCHAT_DELALLMESS']);
  205. }
  206. add_log('admin', 'LOG_MCHAT_TABLE_PRUNED');
  207. redirect($mchat_redirect);
  208. break;
  209.  
  210. // Archive function...
  211. case 'archive':
  212.  
  213. if (!$mchat_read_archive || !$mchat_view)
  214. {
  215. // redirect to correct page
  216. $mchat_redirect = append_sid("{$phpbb_root_path}index.$phpEx");
  217. // Redirect to previous page
  218. meta_refresh(3, $mchat_redirect);
  219. trigger_error($user->lang['MCHAT_NOACCESS_ARCHIVE'].'<br /><br />'.sprintf($user->lang['RETURN_PAGE'], '<a href="' . $mchat_redirect . '">', '</a>'), E_USER_NOTICE);
  220. }
  221.  
  222. if ($config['mchat_enable'] && $mchat_read_archive && $mchat_view)
  223. {
  224. // how many chats do we have?
  225. $sql = 'SELECT COUNT(message_id) AS messages FROM ' . MCHAT_TABLE;
  226. $result = $db->sql_query($sql);
  227. $mchat_total_messages = $db->sql_fetchfield('messages');
  228. $db->sql_freeresult($result);
  229. // prune the chats if necessary and amount in ACP not empty
  230. if ($config_mchat['prune_enable'] && ($mchat_total_messages > $config_mchat['prune_num'] && $config_mchat['prune_num'] > 0))
  231. {
  232. mchat_prune((int) $config_mchat['prune_num']);
  233. }
  234.  
  235. // Reguest...
  236. $mchat_archive_start = request_var('start', 0);
  237. $sql_where = $user->data['user_mchat_topics'] ? '' : 'WHERE m.forum_id = 0';
  238. // Message row
  239. $sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
  240. FROM ' . MCHAT_TABLE . ' m
  241. LEFT JOIN ' . USERS_TABLE . ' u ON m.user_id = u.user_id
  242. ' . $sql_where . '
  243. ORDER BY m.message_id DESC';
  244. $result = $db->sql_query_limit($sql, (int) $config_mchat['archive_limit'], $mchat_archive_start);
  245. $rows = $db->sql_fetchrowset($result);
  246. $db->sql_freeresult($result);
  247.  
  248. foreach($rows as $row)
  249. {
  250. // auth check
  251. if ($row['forum_id'] != 0 && !$auth->acl_get('f_read', $row['forum_id']))
  252. {
  253. continue;
  254. }
  255. // edit, delete and permission auths
  256. $mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
  257. $mchat_edit = ($auth->acl_get('u_mchat_edit') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id'])) ? true : false;
  258. $mchat_del = ($auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id'])) ? true : false;
  259. $mchat_avatar = $row['user_avatar'] ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], ($row['user_avatar_width'] > $row['user_avatar_height']) ? 40 : (40 / $row['user_avatar_height']) * $row['user_avatar_width'], ($row['user_avatar_height'] > $row['user_avatar_width']) ? 40 : (40 / $row['user_avatar_width']) * $row['user_avatar_height']) : '';
  260. $message_edit = $row['message'];
  261. decode_message($message_edit, $row['bbcode_uid']);
  262. $message_edit = str_replace('"', '&quot;', $message_edit); // Edit Fix ;)
  263. if (sizeof($foes_array))
  264. {
  265. if (in_array($row['user_id'], $foes_array))
  266. {
  267. $row['message'] = sprintf($user->lang['MCHAT_FOE'], get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']));
  268. }
  269. }
  270. $row['username'] = mb_ereg_replace("'", "&#146;", $row['username']);
  271. $template->assign_block_vars('mchatrow', array(
  272. 'MCHAT_ALLOW_BAN' => $mchat_ban,
  273. 'MCHAT_ALLOW_EDIT' => $mchat_edit,
  274. 'MCHAT_ALLOW_DEL' => $mchat_del,
  275. 'MCHAT_USER_AVATAR' => $mchat_avatar,
  276. 'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']) : '',
  277. 'MCHAT_MESSAGE_EDIT' => $message_edit,
  278. 'MCHAT_MESSAGE_ID' => $row['message_id'],
  279. 'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  280. 'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  281. 'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  282. 'MCHAT_USER_IP' => $row['user_ip'],
  283. 'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&amp;ip=' . $row['user_ip']),
  284. 'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&amp;mode=setting_user_global&amp;user_id[0]=' . $row['user_id'], true, $user->session_id),
  285. 'MCHAT_MESSAGE' => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
  286. 'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
  287. 'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
  288. ));
  289. }
  290.  
  291. // Write no message
  292. if (empty($rows))
  293. {
  294. $mchat_no_message = true;
  295. }
  296. }
  297.  
  298. // Run query again to get the total message rows...
  299. $sql = 'SELECT COUNT(message_id) AS mess_id FROM ' . MCHAT_TABLE;
  300. $result = $db->sql_query($sql);
  301. $mchat_total_message = $db->sql_fetchfield('mess_id');
  302. $db->sql_freeresult($result);
  303. // Page list function...
  304. $template->assign_vars(array(
  305. 'MCHAT_PAGE_NUMBER' => on_page($mchat_total_message, (int) $config_mchat['archive_limit'], $mchat_archive_start),
  306. 'MCHAT_TOTAL_MESSAGES' => sprintf($user->lang['MCHAT_TOTALMESSAGES'], $mchat_total_message),
  307. 'MCHAT_PAGINATION' => generate_pagination(append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=archive'), $mchat_total_message, (int) $config_mchat['archive_limit'], $mchat_archive_start, true)
  308. ));
  309.  
  310. //add to navlinks
  311. $template->assign_block_vars('navlinks', array(
  312. 'FORUM_NAME' => $user->lang['MCHAT_ARCHIVE_PAGE'],
  313. 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=archive'))
  314. );
  315. // If archive mode request set true
  316. $mchat_archive_mode = true;
  317. $old_mode = 'archive';
  318.  
  319. break;
  320.  
  321. // Read function...
  322. case 'read':
  323.  
  324. // If mChat disabled or user can't view the chat
  325. if (!$config['mchat_enable'] || !$mchat_view)
  326. {
  327. // Forbidden (for jQ AJAX request)
  328. header('HTTP/1.0 403 Forbidden');
  329. exit_handler();
  330. }
  331. // if we're reading on the custom page, then we are chatting
  332. if ($mchat_custom_page)
  333. {
  334. // insert user into the mChat sessions table
  335. mchat_sessions($mchat_session_time, true);
  336. }
  337. // Request
  338. $mchat_message_last_id = request_var('message_last_id', 0);
  339. $sql_and = $user->data['user_mchat_topics'] ? '' : 'AND m.forum_id = 0';
  340. $sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
  341. FROM ' . MCHAT_TABLE . ' m, ' . USERS_TABLE . ' u
  342. WHERE m.user_id = u.user_id
  343. AND m.message_id > ' . (int) $mchat_message_last_id . '
  344. ' . $sql_and . '
  345. ORDER BY m.message_id DESC';
  346. $result = $db->sql_query_limit($sql, (int) $config_mchat['message_limit']);
  347. $rows = $db->sql_fetchrowset($result);
  348. $db->sql_freeresult($result);
  349. // Reverse the array wanting messages appear in reverse
  350. $rows = array_reverse($rows);
  351.  
  352. foreach($rows as $row)
  353. {
  354. // auth check
  355. if ($row['forum_id'] != 0 && !$auth->acl_get('f_read', $row['forum_id']))
  356. {
  357. continue;
  358. }
  359. // edit auths
  360. if ($user->data['user_id'] == ANONYMOUS && $user->data['user_id'] == $row['user_id'])
  361. {
  362. $chat_auths = $user->data['session_ip'] == $row['user_ip'] ? true : false;
  363. }
  364. else
  365. {
  366. $chat_auths = $user->data['user_id'] == $row['user_id'] ? true : false;
  367. }
  368. // edit, delete and permission auths
  369. $mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
  370. $mchat_edit = ($auth->acl_get('u_mchat_edit') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
  371. $mchat_del = ($auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
  372. $mchat_avatar = $row['user_avatar'] ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], ($row['user_avatar_width'] > $row['user_avatar_height']) ? 40 : (40 / $row['user_avatar_height']) * $row['user_avatar_width'], ($row['user_avatar_height'] > $row['user_avatar_width']) ? 40 : (40 / $row['user_avatar_width']) * $row['user_avatar_height']) : '';
  373. $message_edit = $row['message'];
  374. decode_message($message_edit, $row['bbcode_uid']);
  375. $message_edit = str_replace('"', '&quot;', $message_edit);
  376. $message_edit = mb_ereg_replace("'", "&#146;", $message_edit); // Edit Fix ;)
  377. if (sizeof($foes_array))
  378. {
  379. if (in_array($row['user_id'], $foes_array))
  380. {
  381. $row['message'] = sprintf($user->lang['MCHAT_FOE'], get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']));
  382. }
  383. }
  384. $row['username'] = mb_ereg_replace("'", "&#146;", $row['username']);
  385. $template->assign_block_vars('mchatrow', array(
  386. 'MCHAT_ALLOW_BAN' => $mchat_ban,
  387. 'MCHAT_ALLOW_EDIT' => $mchat_edit,
  388. 'MCHAT_ALLOW_DEL' => $mchat_del,
  389. 'MCHAT_USER_AVATAR' => $mchat_avatar,
  390. 'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']) : '',
  391. 'MCHAT_MESSAGE_EDIT' => $message_edit,
  392. 'MCHAT_MESSAGE_ID' => $row['message_id'],
  393. 'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  394. 'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  395. 'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  396. 'MCHAT_USER_IP' => $row['user_ip'],
  397. 'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&amp;ip=' . $row['user_ip']),
  398. 'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&amp;mode=setting_user_global&amp;user_id[0]=' . $row['user_id'], true, $user->session_id),
  399. 'MCHAT_MESSAGE' => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
  400. 'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
  401. 'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
  402. ));
  403. }
  404.  
  405. // Write no message
  406. if (empty($rows))
  407. {
  408. $mchat_no_message = true;
  409. }
  410.  
  411. // If read mode request set true
  412. $mchat_read_mode = true;
  413.  
  414. break;
  415.  
  416. // Stats function...
  417. case 'stats':
  418.  
  419. // If mChat disabled or user can't view the chat
  420. if (!$config['mchat_enable'] || !$mchat_view || !$config_mchat['whois'])
  421. {
  422. // Forbidden (for jQ AJAX request)
  423. header('HTTP/1.0 403 Forbidden');
  424. exit_handler();
  425. }
  426.  
  427. $mchat_stats = mchat_users($mchat_session_time);
  428.  
  429. if(!empty($mchat_stats['online_userlist']))
  430. {
  431. $message = '<div class="mChatStats" id="mChatStats"><a href="#" onclick="mChat.toggle(\'UserList\'); return false;">' . $mchat_stats['mchat_users_count'] . '</a>&nbsp;' . $mchat_stats['refresh_message'] . '<br /><span id="mChatUserList" style="display: none; float: left;">' . $mchat_stats['online_userlist'] . '</span></div>';
  432. }
  433. else
  434. {
  435. $message = '<div class="mChatStats" id="mChatStats">' . $user->lang['MCHAT_NO_CHATTERS'] . '&nbsp;(' . $mchat_stats['refresh_message'] . ')</div>';
  436. }
  437.  
  438. echo $message;
  439. exit_handler();
  440. break;
  441.  
  442. // Add function...
  443. case 'add':
  444.  
  445. // If mChat disabled
  446. if (!$config['mchat_enable'] || !$mchat_add_mess || !check_form_key('mchat_posting', -1))
  447. {
  448. // Forbidden (for jQ AJAX request)
  449. header('HTTP/1.0 403 Forbidden');
  450. exit_handler();
  451. }
  452.  
  453. // Reguest...
  454. $message = utf8_normalize_nfc(request_var('message', '', true));
  455.  
  456. // must have something other than bbcode in the message
  457. if (empty($mchatregex))
  458. {
  459. //let's strip all the bbcode
  460. $mchatregex = '#\[/?[^\[\]]+\]#mi';
  461. }
  462. $message_chars = preg_replace($mchatregex, '', $message);
  463. $message_chars = (utf8_strlen(trim($message_chars)) > 0) ? true : false;
  464.  
  465. if (!$message || !$message_chars)
  466. {
  467. // Not Implemented (for jQ AJAX request)
  468. header('HTTP/1.0 501 Not Implemented');
  469. exit_handler();
  470. }
  471.  
  472. // Flood control
  473. if (!$mchat_no_flood && $config_mchat['flood_time'])
  474. {
  475. $mchat_flood_current_time = time();
  476. $sql = 'SELECT message_time FROM ' . MCHAT_TABLE . '
  477. WHERE user_id = ' . (int) $user->data['user_id'] . '
  478. ORDER BY message_time DESC';
  479. $result = $db->sql_query_limit($sql, 1);
  480. $row = $db->sql_fetchrow($result);
  481. $db->sql_freeresult($result);
  482. if($row['message_time'] > 0 && ($mchat_flood_current_time - $row['message_time']) < (int) $config_mchat['flood_time'])
  483. {
  484. // Locked (for jQ AJAX request)
  485. header('HTTP/1.0 400 Bad Request');
  486. // Stop running code
  487. exit_handler();
  488. }
  489. }
  490. // insert user into the mChat sessions table
  491. mchat_sessions($mchat_session_time, true);
  492. // we override the $config['min_post_chars'] entry?
  493. if ($config_mchat['override_min_post_chars'])
  494. {
  495. $old_cfg['min_post_chars'] = $config['min_post_chars'];
  496. $config['min_post_chars'] = 0;
  497. }
  498. //we do the same for the max number of smilies?
  499. if ($config_mchat['override_smilie_limit'])
  500. {
  501. $old_cfg['max_post_smilies'] = $config['max_post_smilies'];
  502. $config['max_post_smilies'] = 0;
  503. }
  504.  
  505. // Add function part code from http://wiki.phpbb.com/Parsing_text
  506. $uid = $bitfield = $options = ''; // will be modified by generate_text_for_storage
  507. generate_text_for_storage($message, $uid, $bitfield, $options, $mchat_allow_bbcode, $mchat_urls, $mchat_smilies);
  508. // Not allowed bbcodes
  509. if (!$mchat_allow_bbcode || $config_mchat['bbcode_disallowed'])
  510. {
  511. if (!$mchat_allow_bbcode)
  512. {
  513. $bbcode_remove = '#\[/?[^\[\]]+\]#Usi';
  514. $message = preg_replace($bbcode_remove, '', $message);
  515. }
  516. // disallowed bbcodes
  517. else if ($config_mchat['bbcode_disallowed'])
  518. {
  519. if (empty($bbcode_replace))
  520. {
  521. $bbcode_replace = array('#\[(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
  522. '#\[/(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
  523. );
  524. }
  525. $message = preg_replace($bbcode_replace, '', $message);
  526. }
  527. }
  528.  
  529. $sql_ary = array(
  530. 'forum_id' => 0,
  531. 'post_id' => 0,
  532. 'user_id' => $user->data['user_id'],
  533. 'user_ip' => $user->data['session_ip'],
  534. 'message' => str_replace('\'', '&rsquo;', $message),
  535. 'bbcode_bitfield' => $bitfield,
  536. 'bbcode_uid' => $uid,
  537. 'bbcode_options' => $options,
  538. 'message_time' => time()
  539. );
  540. $sql = 'INSERT INTO ' . MCHAT_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
  541. $db->sql_query($sql);
  542.  
  543. // reset the config settings
  544. if(isset($old_cfg['min_post_chars']))
  545. {
  546. $config['min_post_chars'] = $old_cfg['min_post_chars'];
  547. unset($old_cfg['min_post_chars']);
  548. }
  549. if(isset($old_cfg['max_post_smilies']))
  550. {
  551. $config['max_post_smilies'] = $old_cfg['max_post_smilies'];
  552. unset($old_cfg['max_post_smilies']);
  553. }
  554.  
  555. // Stop run code!
  556. exit_handler();
  557. break;
  558.  
  559. // Edit function...
  560. case 'edit':
  561.  
  562. $message_id = request_var('message_id', 0);
  563.  
  564. // If mChat disabled and not edit
  565. if (!$config['mchat_enable'] || !$message_id)
  566. {
  567. // Forbidden (for jQ AJAX request)
  568. header('HTTP/1.0 403 Forbidden');
  569. exit_handler();
  570. }
  571.  
  572. // check for the correct user
  573. $sql = 'SELECT *
  574. FROM ' . MCHAT_TABLE . '
  575. WHERE message_id = ' . (int) $message_id;
  576. $result = $db->sql_query($sql);
  577. $row = $db->sql_fetchrow($result);
  578. $db->sql_freeresult($result);
  579. // edit and delete auths
  580. $mchat_edit = $auth->acl_get('u_mchat_edit')&& ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
  581. $mchat_del = $auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
  582. // If mChat disabled and not edit
  583. if (!$mchat_edit)
  584. {
  585. // Forbidden (for jQ AJAX request)
  586. header('HTTP/1.0 403 Forbidden');
  587. exit_handler();
  588. }
  589. // Reguest...
  590. $message = request_var('message', '', true);
  591.  
  592. // must have something other than bbcode in the message
  593. if (empty($mchatregex))
  594. {
  595. //let's strip all the bbcode
  596. $mchatregex = '#\[/?[^\[\]]+\]#mi';
  597. }
  598. $message_chars = preg_replace($mchatregex, '', $message);
  599. $message_chars = (utf8_strlen(trim($message_chars)) > 0) ? true : false;
  600. if (!$message || !$message_chars)
  601. {
  602. // Not Implemented (for jQ AJAX request)
  603. header('HTTP/1.0 501 Not Implemented');
  604. // Stop running code
  605. exit_handler();
  606. }
  607.  
  608. // Message limit
  609. $message = ($config_mchat['max_message_lngth'] != 0 && utf8_strlen($message) >= $config_mchat['max_message_lngth'] + 3) ? utf8_substr($message, 0, $config_mchat['max_message_lngth']).'...' : $message;
  610.  
  611. // we override the $config['min_post_chars'] entry?
  612. if ($config_mchat['override_min_post_chars'])
  613. {
  614. $old_cfg['min_post_chars'] = $config['min_post_chars'];
  615. $config['min_post_chars'] = 0;
  616. }
  617. //we do the same for the max number of smilies?
  618. if ($config_mchat['override_smilie_limit'])
  619. {
  620. $old_cfg['max_post_smilies'] = $config['max_post_smilies'];
  621. $config['max_post_smilies'] = 0;
  622. }
  623.  
  624. // Edit function part code from http://wiki.phpbb.com/Parsing_text
  625. $uid = $bitfield = $options = ''; // will be modified by generate_text_for_storage
  626. generate_text_for_storage($message, $uid, $bitfield, $options, $mchat_allow_bbcode, $mchat_urls, $mchat_smilies);
  627.  
  628. // Not allowed bbcodes
  629. if (!$mchat_allow_bbcode || $config_mchat['bbcode_disallowed'])
  630. {
  631. if (!$mchat_allow_bbcode)
  632. {
  633. $bbcode_remove = '#\[/?[^\[\]]+\]#Usi';
  634. $message = preg_replace($bbcode_remove, '', $message);
  635. }
  636. // disallowed bbcodes
  637. else if ($config_mchat['bbcode_disallowed'])
  638. {
  639. if (empty($bbcode_replace))
  640. {
  641. $bbcode_replace = array('#\[(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
  642. '#\[/(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
  643. );
  644. }
  645. $message = preg_replace($bbcode_replace, '', $message);
  646. }
  647. }
  648.  
  649. $sql_ary = array(
  650. 'message' => str_replace('\'', '&rsquo;', $message),
  651. 'bbcode_bitfield' => $bitfield,
  652. 'bbcode_uid' => $uid,
  653. 'bbcode_options' => $options
  654. );
  655.  
  656. $sql = 'UPDATE ' . MCHAT_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary).'
  657. WHERE message_id = ' . (int) $message_id;
  658. $db->sql_query($sql);
  659.  
  660. // Message edited...now read it
  661. $sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
  662. FROM ' . MCHAT_TABLE . ' m, ' . USERS_TABLE . ' u
  663. WHERE m.user_id = u.user_id
  664. AND m.message_id = ' . (int) $message_id . '
  665. ORDER BY m.message_id DESC';
  666. $result = $db->sql_query($sql);
  667. $row = $db->sql_fetchrow($result);
  668. $db->sql_freeresult($result);
  669.  
  670. $message_edit = $row['message'];
  671.  
  672. decode_message($message_edit, $row['bbcode_uid']);
  673. $message_edit = str_replace('"', '&quot;', $message_edit); // Edit Fix ;)
  674. $message_edit = mb_ereg_replace("'", "&#146;", $message_edit); // Edit Fix ;)
  675. $mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
  676. $mchat_avatar = $row['user_avatar'] ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], ($row['user_avatar_width'] > $row['user_avatar_height']) ? 40 : (40 / $row['user_avatar_height']) * $row['user_avatar_width'], ($row['user_avatar_height'] > $row['user_avatar_width']) ? 40 : (40 / $row['user_avatar_width']) * $row['user_avatar_height']) : '';
  677. $template->assign_block_vars('mchatrow', array(
  678. 'MCHAT_ALLOW_BAN' => $mchat_ban,
  679. 'MCHAT_ALLOW_EDIT' => $mchat_edit,
  680. 'MCHAT_ALLOW_DEL' => $mchat_del,
  681. 'MCHAT_MESSAGE_EDIT' => $message_edit,
  682. 'MCHAT_USER_AVATAR' => $mchat_avatar,
  683. 'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']) : '',
  684. 'MCHAT_MESSAGE_ID' => $row['message_id'],
  685. 'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  686. 'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  687. 'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  688. 'MCHAT_USER_IP' => $row['user_ip'],
  689. 'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&amp;ip=' . $row['user_ip']),
  690. 'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&amp;mode=setting_user_global&amp;user_id[0]=' . $row['user_id'], true, $user->session_id),
  691. 'MCHAT_MESSAGE' => censor_text(generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options'])),
  692. 'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
  693. 'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
  694. ));
  695. // reset the config settings
  696. if(isset($old_cfg['min_post_chars']))
  697. {
  698. $config['min_post_chars'] = $old_cfg['min_post_chars'];
  699. unset($old_cfg['min_post_chars']);
  700. }
  701. if(isset($old_cfg['max_post_smilies']))
  702. {
  703. $config['max_post_smilies'] = $old_cfg['max_post_smilies'];
  704. unset($old_cfg['max_post_smilies']);
  705. }
  706. //adds a log
  707. $message_author = get_username_string('no_profile', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']);
  708. add_log('admin', 'LOG_EDITED_MCHAT', $message_author);
  709. // insert user into the mChat sessions table
  710. mchat_sessions($mchat_session_time, true);
  711. // If read mode request set true
  712. $mchat_read_mode = true;
  713.  
  714. break;
  715.  
  716. // Delete function...
  717. case 'delete':
  718.  
  719. $message_id = request_var('message_id', 0);
  720. // If mChat disabled
  721. if (!$config['mchat_enable'] || !$message_id)
  722. {
  723. // Forbidden (for jQ AJAX request)
  724. header('HTTP/1.0 403 Forbidden');
  725. exit_handler();
  726. }
  727. // check for the correct user
  728. $sql = 'SELECT m.*, u.username, u.user_colour
  729. FROM ' . MCHAT_TABLE . ' m
  730. LEFT JOIN ' . USERS_TABLE . ' u ON m.user_id = u.user_id
  731. WHERE m.message_id = ' . (int) $message_id;
  732. $result = $db->sql_query($sql);
  733. $row = $db->sql_fetchrow($result);
  734. $db->sql_freeresult($result);
  735. // edit and delete auths
  736. $mchat_edit = $auth->acl_get('u_mchat_edit')&& ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
  737. $mchat_del = $auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
  738.  
  739. // If mChat disabled
  740. if (!$mchat_del)
  741. {
  742. // Forbidden (for jQ AJAX request)
  743. header('HTTP/1.0 403 Forbidden');
  744. exit_handler();
  745. }
  746.  
  747. // Run delete!
  748. $sql = 'DELETE FROM ' . MCHAT_TABLE . '
  749. WHERE message_id = ' . (int) $message_id;
  750. $db->sql_query($sql);
  751. //adds a log
  752. $message_author = get_username_string('no_profile', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']);
  753. add_log('admin', 'LOG_DELETED_MCHAT', $message_author);
  754. // insert user into the mChat sessions table
  755. mchat_sessions($mchat_session_time, true);
  756.  
  757. // Stop running code
  758. exit_handler();
  759. break;
  760.  
  761. // Default function...
  762. default:
  763.  
  764. // If not include in index.php set mchat.php page true
  765. if (!$mchat_include_index)
  766. {
  767. // Yes its custom page...
  768. $mchat_custom_page = true;
  769.  
  770. // If custom page false mchat.php page redirect to index...
  771. if (!$config_mchat['custom_page'] && $mchat_custom_page)
  772. {
  773. $mchat_redirect = append_sid("{$phpbb_root_path}index.$phpEx");
  774. // Redirect to previous page
  775. meta_refresh(3, $mchat_redirect);
  776. trigger_error($user->lang['MCHAT_NO_CUSTOM_PAGE'].'<br /><br />'.sprintf($user->lang['RETURN_PAGE'], '<a href="' . $mchat_redirect . '">', '</a>'), E_USER_NOTICE);
  777. }
  778.  
  779. // user has permissions to view the custom chat?
  780. if (!$mchat_view && $mchat_custom_page)
  781. {
  782. trigger_error($user->lang['NOT_AUTHORISED'], E_USER_NOTICE);
  783. }
  784.  
  785. // if whois true
  786. if ($config_mchat['whois'])
  787. {
  788. // Grab group details for legend display for who is online on the custom page.
  789. if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
  790. {
  791. $sql = 'SELECT group_id, group_name, group_colour, group_type FROM ' . GROUPS_TABLE . '
  792. WHERE group_legend = 1
  793. ORDER BY group_name ASC';
  794. }
  795. else
  796. {
  797. $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type FROM ' . GROUPS_TABLE . ' g
  798. LEFT JOIN ' . USER_GROUP_TABLE . ' ug ON (g.group_id = ug.group_id AND ug.user_id = ' . $user->data['user_id'] . ' AND ug.user_pending = 0)
  799. WHERE g.group_legend = 1
  800. AND (g.group_type <> ' . GROUP_HIDDEN . '
  801. OR ug.user_id = ' . (int) $user->data['user_id'] . ')
  802. ORDER BY g.group_name ASC';
  803. }
  804. $result = $db->sql_query($sql);
  805. $legend = array();
  806.  
  807. while ($row = $db->sql_fetchrow($result))
  808. {
  809. $colour_text = ($row['group_colour']) ? ' style="color:#'.$row['group_colour'].'"' : '';
  810. $group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_'.$row['group_name']] : $row['group_name'];
  811. if ($row['group_name'] == 'BOTS' || ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')))
  812. {
  813. $legend[] = '<span'.$colour_text.'>'.$group_name.'</span>';
  814. }
  815. else
  816. {
  817. $legend[] = '<a'.$colour_text.' href="'.append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g='.$row['group_id']).'">'.$group_name.'</a>';
  818. }
  819. }
  820. $db->sql_freeresult($result);
  821. $legend = implode(', ', $legend);
  822.  
  823. // Assign index specific vars
  824. $template->assign_vars(array(
  825. 'LEGEND' => $legend,
  826. ));
  827. }
  828. $template->assign_block_vars('navlinks', array(
  829. 'FORUM_NAME' => $user->lang['MCHAT_TITLE'],
  830. 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}mchat.$phpEx"))
  831. );
  832. }
  833.  
  834. // Run code...
  835. if ($mchat_view)
  836. {
  837. $message_number = $mchat_custom_page ? $config_mchat['message_limit'] : $config_mchat['message_num'];
  838. $sql_where = $user->data['user_mchat_topics'] ? '' : 'WHERE m.forum_id = 0';
  839. // Message row
  840. $sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
  841. FROM ' . MCHAT_TABLE . ' m
  842. LEFT JOIN ' . USERS_TABLE . ' u ON m.user_id = u.user_id
  843. ' . $sql_where . '
  844. ORDER BY message_id DESC';
  845. $result = $db->sql_query_limit($sql, $message_number);
  846. $rows = $db->sql_fetchrowset($result);
  847. $db->sql_freeresult($result);
  848.  
  849. $rows = array_reverse($rows, true);
  850.  
  851. foreach($rows as $row)
  852. {
  853. // auth check
  854. if ($row['forum_id'] != 0 && !$auth->acl_get('f_read', $row['forum_id']))
  855. {
  856. continue;
  857. }
  858. // edit, delete and permission auths
  859. $mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
  860. // edit auths
  861. if ($user->data['user_id'] == ANONYMOUS && $user->data['user_id'] == $row['user_id'])
  862. {
  863. $chat_auths = $user->data['session_ip'] == $row['user_ip'] ? true : false;
  864. }
  865. else
  866. {
  867. $chat_auths = $user->data['user_id'] == $row['user_id'] ? true : false;
  868. }
  869. $mchat_edit = ($auth->acl_get('u_mchat_edit') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
  870. $mchat_del = ($auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
  871. $mchat_avatar = $row['user_avatar'] ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], ($row['user_avatar_width'] > $row['user_avatar_height']) ? 40 : (40 / $row['user_avatar_height']) * $row['user_avatar_width'], ($row['user_avatar_height'] > $row['user_avatar_width']) ? 40 : (40 / $row['user_avatar_width']) * $row['user_avatar_height']) : '';
  872. $message_edit = $row['message'];
  873. decode_message($message_edit, $row['bbcode_uid']);
  874. $message_edit = str_replace('"', '&quot;', $message_edit); // Edit Fix ;)
  875. $message_edit = mb_ereg_replace("'", "&#146;", $message_edit);
  876. if (sizeof($foes_array))
  877. {
  878. if (in_array($row['user_id'], $foes_array))
  879. {
  880. $row['message'] = sprintf($user->lang['MCHAT_FOE'], get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']));
  881. }
  882. }
  883. $row['username'] = mb_ereg_replace("'", "&#146;", $row['username']);
  884. $message = str_replace('\'', '&rsquo;', $row['message']);
  885. $template->assign_block_vars('mchatrow', array(
  886. 'MCHAT_ALLOW_BAN' => $mchat_ban,
  887. 'MCHAT_ALLOW_EDIT' => $mchat_edit,
  888. 'MCHAT_ALLOW_DEL' => $mchat_del,
  889. 'MCHAT_USER_AVATAR' => $mchat_avatar,
  890. 'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']) : '',
  891. 'MCHAT_MESSAGE_EDIT' => $message_edit,
  892. 'MCHAT_MESSAGE_ID' => $row['message_id'],
  893. 'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  894. 'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  895. 'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
  896. 'MCHAT_USER_IP' => $row['user_ip'],
  897. 'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&amp;ip=' . $row['user_ip']),
  898. 'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&amp;mode=setting_user_global&amp;user_id[0]=' . $row['user_id'], true, $user->session_id),
  899. 'MCHAT_MESSAGE' => generate_text_for_display($message, $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
  900. 'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
  901. 'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
  902. ));
  903.  
  904. }
  905.  
  906. // Write no message
  907. if (empty($rows))
  908. {
  909. $mchat_no_message = true;
  910. }
  911. // display custom bbcodes
  912. if($mchat_allow_bbcode && $config['allow_bbcode'])
  913. {
  914. display_mchat_bbcodes();
  915. }
  916. // Smile row
  917. if ($mchat_smilies)
  918. {
  919. if (!function_exists('generate_smilies'))
  920. {
  921. include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
  922. }
  923. generate_smilies('inline', 0);
  924. }
  925. // If the static message is defined in the language file use it, else just use the entry in the database
  926. if (isset($user->lang[strtoupper('static_message')]) || !empty($config_mchat['static_message']))
  927. {
  928. $config_mchat['static_message'] = $config_mchat['static_message'];
  929. if(isset($user->lang[strtoupper('static_message')]))
  930. {
  931. $config_mchat['static_message'] = $user->lang[strtoupper('static_message')];
  932. }
  933. }
  934. // If the static message is defined in the language file use it, else just use the entry in the database
  935. if (isset($user->lang[strtoupper('mchat_rules')]) || !empty($config_mchat['rules']))
  936. {
  937. if(isset($user->lang[strtoupper('mchat_rules')]))
  938. {
  939. $config_mchat['rules'] = $user->lang[strtoupper('mchat_rules')];
  940. }
  941. }
  942. // a list of users using the chat
  943. if ($mchat_custom_page)
  944. {
  945. $mchat_users = mchat_users($mchat_session_time, true);
  946. }
  947. else
  948. {
  949. $mchat_users = mchat_users($mchat_session_time);
  950. }
  951. $template->assign_vars(array(
  952. 'MCHAT_USERS_COUNT' => $mchat_users['mchat_users_count'],
  953. 'MCHAT_USERS_LIST' => $mchat_users['online_userlist'],
  954. ));
  955. }
  956. break;
  957. }
  958. $copyright = base64_decode('JmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly9ybWNnaXJyODMub3JnIj5STWNHaXJyODM8L2E+');
  959. add_form_key('mchat_posting');
  960. // Template function...
  961. $template->assign_vars(array(
  962. 'MCHAT_FILE_NAME' => append_sid("{$phpbb_root_path}mchat.$phpEx"),
  963. 'MCHAT_REFRESH_JS' => 1000 * $config_mchat['refresh'],
  964. 'MCHAT_ADD_MESSAGE' => $mchat_add_mess,
  965. 'MCHAT_READ_MODE' => $mchat_read_mode,
  966. 'MCHAT_ARCHIVE_MODE' => $mchat_archive_mode,
  967. 'MCHAT_INPUT_TYPE' => $user->data['user_mchat_input_area'],
  968. 'MCHAT_RULES' => $mchat_rules,
  969. 'MCHAT_ALLOW_SMILES' => $mchat_smilies,
  970. 'MCHAT_ALLOW_IP' => $mchat_ip,
  971. 'MCHAT_NOMESSAGE_MODE' => $mchat_no_message,
  972. 'MCHAT_ALLOW_BBCODES' => ($mchat_allow_bbcode && $config['allow_bbcode']) ? true : false,
  973. 'MCHAT_ENABLE' => $config['mchat_enable'],
  974. 'MCHAT_ARCHIVE_URL' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=archive'),
  975. 'MCHAT_CUSTOM_PAGE' => $mchat_custom_page,
  976. 'MCHAT_INDEX_HEIGHT' => $config_mchat['index_height'],
  977. 'MCHAT_CUSTOM_HEIGHT' => $config_mchat['custom_height'],
  978. 'MCHAT_READ_ARCHIVE_BUTTON' => $mchat_read_archive,
  979. 'MCHAT_FOUNDER' => $mchat_founder,
  980. 'MCHAT_CLEAN_URL' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=clean&amp;redirect=' . $on_page),
  981. 'MCHAT_STATIC_MESS' => !empty($config_mchat['static_message']) ? htmlspecialchars_decode($config_mchat['static_message']) : '',
  982. 'L_MCHAT_COPYRIGHT' => $copyright,
  983. 'MCHAT_WHOIS' => $config_mchat['whois'],
  984. 'MCHAT_MESSAGE_LNGTH' => $config_mchat['max_message_lngth'],
  985. 'MCHAT_MESS_LONG' => sprintf($user->lang['MCHAT_MESS_LONG'], $config_mchat['max_message_lngth']),
  986. 'MCHAT_USER_TIMEOUT' => $config_mchat['timeout'] ? 1000 * $config_mchat['timeout'] : false,
  987. 'MCHAT_WHOIS_REFRESH' => 1000 * $config_mchat['whois_refresh'],
  988. 'MCHAT_PAUSE_ON_INPUT' => $config_mchat['pause_on_input'] ? true : false,
  989. 'L_MCHAT_ONLINE_EXPLAIN' => mchat_session_time($mchat_session_time),
  990. 'MCHAT_REFRESH_YES' => sprintf($user->lang['MCHAT_REFRESH_YES'], $config_mchat['refresh']),
  991. 'L_MCHAT_WHOIS_REFRESH_EXPLAIN' => sprintf($user->lang['WHO_IS_REFRESH_EXPLAIN'], $config_mchat['whois_refresh']),
  992. 'S_MCHAT_AVATARS' => $mchat_avatars,
  993. 'S_MCHAT_LOCATION' => $config_mchat['location'],
  994. 'S_MCHAT_SOUND_YES' => $user->data['user_mchat_sound'],
  995. 'S_MCHAT_INDEX_STATS' => $user->data['user_mchat_stats_index'],
  996. 'U_MORE_SMILIES' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies'),
  997. 'U_MCHAT_RULES' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=rules'),
  998. ));
  999.  
  1000. // Template
  1001. if (!$mchat_include_index)
  1002. {
  1003. page_header($user->lang['MCHAT_TITLE'], false);
  1004. $template->set_filenames(array('body' => 'mchat_body.html'));
  1005. page_footer();
  1006. }
  1007.  
  1008. ?>
Add Comment
Please, Sign In to add comment