I do not find many parts of code in my mchat.php . You can help me pls ?
This is my mchat.php
Code: Select all
<?php
/**
*
* @package mChat
* @version $Id: mchat.php
* @copyright (c) 2010 RMcGirr83 ( http://www.rmcgirr83.org/ )
* @copyright (c) djs596 ( http://djs596.com/ ), (c) Stokerpiller ( http://www.phpbb3bbcodes.com/ )
* @copyright (c) By Shapoval Andrey Vladimirovich (AllCity) ~ http://allcity.net.ru/
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
**/
/**
* DO NOT CHANGE (IN_PHPBB)!
*/
if(!defined('MCHAT_INCLUDE'))
{
// Custom Page code from http://www.phpbb.com/kb/article/add-a-new-custom-page-to-phpbb/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path.'common.'.$phpEx);
$mchat_include_index = false;
// Start session management.
$user->session_begin();
$auth->acl($user->data);
$user->setup();
}
// Add lang file
$user->add_lang(array('mods/mchat_lang', 'viewtopic', 'posting'));
//chat enabled
if (!$config['mchat_enable'])
{
trigger_error($user->lang['MCHAT_ENABLE'], E_USER_NOTICE);
}
// check for mod installed
if (empty($config['mchat_version']))
{
if($user->data['user_type'] == USER_FOUNDER)
{
$installer = append_sid("{$phpbb_root_path}mchat_install.$phpEx");
$message = sprintf($user->lang['MCHAT_NOT_INSTALLED'], '<a href="' . $installer . '">', '</a>');
}
else
{
$message = $user->lang['MCHAT_NOTINSTALLED_USER'];
}
trigger_error ($message);
}
// avatars
if (!function_exists('get_user_avatar'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
// Get the config entries.
if (!function_exists('mchat_cache'))
{
include($phpbb_root_path . 'includes/functions_mchat.' . $phpEx);
}
if (($config_mchat = $cache->get('_mchat_config')) === false)
{
mchat_cache();
}
$config_mchat = $cache->get('_mchat_config');
// Access rights
$mchat_allow_bbcode = ($config['allow_bbcode'] && $auth->acl_get('u_mchat_bbcode')) ? true : false;
$mchat_smilies = ($config['allow_smilies'] && $auth->acl_get('u_mchat_smilies')) ? true : false;
$mchat_urls = ($config['allow_post_links'] && $auth->acl_get('u_mchat_urls')) ? true : false;
$mchat_ip = ($auth->acl_get('u_mchat_ip')) ? true : false;
$mchat_add_mess = ($auth->acl_get('u_mchat_use')) ? true : false;
$mchat_view = ($auth->acl_get('u_mchat_view')) ? true : false;
$mchat_no_flood = ($auth->acl_get('u_mchat_flood_ignore')) ? true : false;
$mchat_read_archive = ($auth->acl_get('u_mchat_archive')) ? true : false;
$mchat_founder = ($user->data['user_type'] == USER_FOUNDER) ? true : false;
$mchat_session_time = !empty($config_mchat['timeout']) ? $config_mchat['timeout'] : 3600;// you can change this number to a greater number for longer chat sessions
$mchat_rules = (!empty($config_mchat['rules']) || isset($user->lang[strtoupper('mchat_rules')])) ? true : false;
$mchat_avatars = (!empty($config_mchat['avatars']) && $user->optionget('viewavatars') && $user->data['user_mchat_avatars']) ? true : false;
// needed variables
// Request options.
$mchat_mode = request_var('mode', '');
$mchat_read_mode = $mchat_archive_mode = $mchat_custom_page = $mchat_no_message = false;
// set redirect if on index or custom page
$on_page = defined('MCHAT_INCLUDE') ? 'index' : 'mchat';
// Request mode...
switch ($mchat_mode)
{
// rules popup..
case 'rules';
// If the rules are defined in the language file use them, else just use the entry in the database
if ($mchat_rules || isset($user->lang[strtoupper('mchat_rules')]))
{
if(isset($user->lang[strtoupper('mchat_rules')]))
{
$template->assign_var('MCHAT_RULES', $user->lang[strtoupper('mchat_rules')]);
}
else
{
$mchat_rules = $config_mchat['rules'];
$mchat_rules = explode("\n", $mchat_rules);
foreach ($mchat_rules as $mchat_rule)
{
$mchat_rule = htmlspecialchars($mchat_rule);
$template->assign_block_vars('rule', array(
'MCHAT_RULE' => $mchat_rule,
));
}
}
// Output the page
page_header($user->lang['MCHAT_HELP']);
$template->set_filenames(array(
'body' => 'mchat_rules.html')
);
page_footer();
}
else
{
// Show no rules
trigger_error('NO_MCHAT_RULES', E_USER_NOTICE);
}
break;
// whois function..
case 'whois';
// Must have auths
if ($mchat_mode == 'whois' && $mchat_ip)
{
// function already exists..
if (!function_exists('user_ipwhois'))
{
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
}
$user_ip = request_var('ip', '');
$template->assign_var('WHOIS', user_ipwhois($user_ip));
// Output the page
page_header($user->lang['WHO_IS_ONLINE']);
$template->set_filenames(array(
'body' => 'viewonline_whois.html')
);
page_footer();
}
else
{
// Show not authorized
trigger_error('NO_AUTH_OPERATION', E_USER_NOTICE);
}
break;
// Clean function...
case 'clean';
// User logged in?
if(!$user->data['is_registered'] || !$mchat_founder)
{
if(!$user->data['is_registered'])
{
// Login box...
login_box('', $user->lang['LOGIN']);
}
else if (!$mchat_founder)
{
// Show not authorized
trigger_error('NO_AUTH_OPERATION', E_USER_NOTICE);
}
}
$mchat_redirect = request_var('redirect', '');
$mchat_redirect = ($mchat_redirect == 'index') ? append_sid("{$phpbb_root_path}index.$phpEx") : append_sid("{$phpbb_root_path}mchat.$phpEx#mChat");
if(confirm_box(true))
{
// Run cleaner
$sql = 'TRUNCATE TABLE ' . MCHAT_TABLE;
$db->sql_query($sql);
meta_refresh(3, $mchat_redirect);
trigger_error($user->lang['MCHAT_CLEANED'].'<br /><br />'.sprintf($user->lang['RETURN_PAGE'], '<a href="'.$mchat_redirect.'">', '</a>'));
}
else
{
// Display confirm box
confirm_box(false, $user->lang['MCHAT_DELALLMESS']);
}
redirect($mchat_redirect);
break;
// Archive function...
case 'archive';
if (!$mchat_read_archive || !$mchat_view)
{
// redirect to correct page
$mchat_redirect = append_sid("{$phpbb_root_path}index.$phpEx");
// Redirect to previous page
meta_refresh(3, $mchat_redirect);
trigger_error($user->lang['MCHAT_NOACCESS_ARCHIVE'].'<br /><br />'.sprintf($user->lang['RETURN_PAGE'], '<a href="' . $mchat_redirect . '">', '</a>'), E_USER_NOTICE);
}
if ($config['mchat_enable'] && $mchat_read_archive && $mchat_view)
{
// prune the chats if necessary and amount in ACP not empty
if ($config_mchat['prune_enable'] && $config_mchat['prune_num'] > 0)
{
mchat_prune((int) $config_mchat['prune_num']);
}
// Reguest...
$mchat_archive_start = request_var('start', 0);
$sql_where = $user->data['user_mchat_topics'] ? '' : 'WHERE m.forum_id = 0';
// Message row
$sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
FROM ' . MCHAT_TABLE . ' m
LEFT JOIN ' . USERS_TABLE . ' u ON m.user_id = u.user_id
' . $sql_where . '
ORDER BY m.message_id DESC';
$result = $db->sql_query_limit($sql, (int) $config_mchat['archive_limit'], $mchat_archive_start);
$rows = $db->sql_fetchrowset($result);
foreach($rows as $row)
{
// auth check
if ($row['forum_id'] != 0 && !$auth->acl_get('f_read', $row['forum_id']))
{
continue;
}
// edit, delete and permission auths
$mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
$mchat_edit = ($auth->acl_get('u_mchat_edit') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id'])) ? true : false;
$mchat_del = ($auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id'])) ? true : false;
$random_avatar = $phpbb_root_path . 'images/avatars/random/no_avatar' . mt_rand(1, 17) . '.gif';
$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']) : '<img src="' . $random_avatar . '" width="40" height="40" alt="Random Avatar" />';
$message_edit = $row['message'];
decode_message($message_edit, $row['bbcode_uid']);
$message_edit = str_replace('"', '"', $message_edit); // Edit Fix ;)
$template->assign_block_vars('mchatrow', array(
'MCHAT_ALLOW_BAN' => $mchat_ban,
'MCHAT_ALLOW_EDIT' => $mchat_edit,
'MCHAT_ALLOW_DEL' => $mchat_del,
'MCHAT_USER_AVATAR' => $mchat_avatar,
'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) : '',
'MCHAT_MESSAGE_EDIT' => $message_edit,
'MCHAT_MESSAGE_ID' => $row['message_id'],
'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USER_IP' => $row['user_ip'],
'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&ip=' . $row['user_ip']),
'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&mode=setting_user_global&user_id[0]=' . $row['user_id'], true, $user->session_id),
'MCHAT_MESSAGE' => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
));
}
$db->sql_freeresult($result);
// Write no message
if (empty($rows))
{
$mchat_no_message = true;
}
}
// Run query again to get the total message rows...
$sql = 'SELECT COUNT(message_id) AS mess_id FROM ' . MCHAT_TABLE;
$result = $db->sql_query($sql);
$mchat_total_message = $db->sql_fetchfield('mess_id');
$db->sql_freeresult($result);
// Page list function...
$template->assign_vars(array(
'MCHAT_PAGE_NUMBER' => on_page($mchat_total_message, (int) $config_mchat['archive_limit'], $mchat_archive_start),
'MCHAT_TOTAL_MESSAGES' => sprintf($user->lang['MCHAT_TOTALMESSAGES'], $mchat_total_message),
'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)
));
//add to navlinks
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['MCHAT_ARCHIVE_PAGE'],
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=archive'))
);
// If archive mode request set true
$mchat_archive_mode = true;
$old_mode = 'archive';
break;
// Read function...
case 'read':
// If mChat disabled or user can't view the chat
if (!$config['mchat_enable'] || !$mchat_view)
{
// Forbidden (for jQ AJAX request)
header('HTTP/1.0 403 Forbidden');
exit_handler();
}
// Request
$mchat_message_last_id = request_var('message_last_id', 0);
$sql_and = $user->data['user_mchat_topics'] ? '' : 'AND m.forum_id = 0';
$sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
FROM ' . MCHAT_TABLE . ' m, ' . USERS_TABLE . ' u
WHERE m.user_id = u.user_id
AND m.message_id > ' . (int) $mchat_message_last_id . '
' . $sql_and . '
ORDER BY m.message_id DESC';
$result = $db->sql_query_limit($sql, (int) $config_mchat['message_limit']);
$rows = $db->sql_fetchrowset($result);
// Reverse the array wanting messages appear in reverse
$rows = array_reverse($rows);
foreach($rows as $row)
{
// auth check
if ($row['forum_id'] != 0 && !$auth->acl_get('f_read', $row['forum_id']))
{
continue;
}
// edit auths
if ($user->data['user_id'] == ANONYMOUS && $user->data['user_id'] == $row['user_id'])
{
$chat_auths = $user->data['session_ip'] == $row['user_ip'] ? true : false;
}
else
{
$chat_auths = $user->data['user_id'] == $row['user_id'] ? true : false;
}
// edit, delete and permission auths
$mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
$mchat_edit = ($auth->acl_get('u_mchat_edit') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
$mchat_del = ($auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
$random_avatar = $phpbb_root_path . 'images/avatars/random/no_avatar' . mt_rand(1, 17) . '.gif';
$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']) : '<img src="' . $random_avatar . '" width="40" height="40" alt="Random Avatar" />';
$message_edit = $row['message'];
decode_message($message_edit, $row['bbcode_uid']);
$message_edit = str_replace('"', '"', $message_edit);
$template->assign_block_vars('mchatrow', array(
'MCHAT_ALLOW_BAN' => $mchat_ban,
'MCHAT_ALLOW_EDIT' => $mchat_edit,
'MCHAT_ALLOW_DEL' => $mchat_del,
'MCHAT_USER_AVATAR' => $mchat_avatar,
'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) : '',
'MCHAT_MESSAGE_EDIT' => $message_edit,
'MCHAT_MESSAGE_ID' => $row['message_id'],
'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USER_IP' => $row['user_ip'],
'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&ip=' . $row['user_ip']),
'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&mode=setting_user_global&user_id[0]=' . $row['user_id'], true, $user->session_id),
'MCHAT_MESSAGE' => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
));
}
$db->sql_freeresult($result);
// Write no message
if (empty($rows))
{
$mchat_no_message = true;
}
// If read mode request set true
$mchat_read_mode = true;
break;
// Stats function...
case 'stats':
// If mChat disabled or user can't view the chat
if (!$config['mchat_enable'] || !$mchat_view || !$config_mchat['whois'])
{
// Forbidden (for jQ AJAX request)
header('HTTP/1.0 403 Forbidden');
exit_handler();
}
$mchat_stats = mchat_users($mchat_session_time);
if(!empty($mchat_stats['online_userlist']))
{
$message = '<div class="mChatStats" id="mChatStats"><a href="#" onclick="mChat.toggle(\'UserList\'); return false;">' . $mchat_stats['mchat_users_count'] . '</a> ' . $mchat_stats['refresh_message'] . '<br /><span id="mChatUserList" style="display: none; float: left;">' . $mchat_stats['online_userlist'] . '</span></div>';
}
else
{
$message = '<div class="mChatStats" id="mChatStats">' . $user->lang['MCHAT_NO_CHATTERS'] . ' ' . $mchat_stats['refresh_message'] . '</div>';
}
echo $message;
exit_handler();
break;
// Add function...
case 'add':
// If mChat disabled
if (!$config['mchat_enable'] || !$mchat_add_mess || !check_form_key('mchat_posting'))
{
// Forbidden (for jQ AJAX request)
header('HTTP/1.0 403 Forbidden');
exit_handler();
}
// Reguest...
$message = utf8_normalize_nfc(request_var('message', '', true));
// must have something other than bbcode in the message
if (empty($mchatregex))
{
//let's strip all the bbcode
$mchatregex = '#\[/?[^\[\]]+\]#mi';
}
$message_chars = preg_replace($mchatregex, '', $message);
$message_chars = (utf8_strlen(trim($message_chars)) > 0) ? true : false;
if (!$message || !$message_chars)
{
// Not Implemented (for jQ AJAX request)
header('HTTP/1.0 501 Not Implemented');
exit_handler();
}
// Flood control
if (!$mchat_no_flood && $config_mchat['flood_time'])
{
$mchat_flood_current_time = time();
$sql = 'SELECT message_time FROM ' . MCHAT_TABLE . '
WHERE user_id = ' . (int) $user->data['user_id'] . '
ORDER BY message_time DESC';
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if($row['message_time'] > 0 && ($mchat_flood_current_time - $row['message_time']) < (int) $config_mchat['flood_time'])
{
// Locked (for jQ AJAX request)
header('HTTP/1.0 400 Bad Request');
// Stop running code
exit_handler();
}
}
// we override the $config['min_post_chars'] entry?
if ($config_mchat['override_min_post_chars'])
{
$old_cfg['min_post_chars'] = $config['min_post_chars'];
$config['min_post_chars'] = 0;
}
//we do the same for the max number of smilies?
if ($config_mchat['override_smilie_limit'])
{
$old_cfg['max_post_smilies'] = $config['max_post_smilies'];
$config['max_post_smilies'] = 0;
}
// Add function part code from http://wiki.phpbb.com/Parsing_text
$uid = $bitfield = $options = ''; // will be modified by generate_text_for_storage
generate_text_for_storage($message, $uid, $bitfield, $options, $mchat_allow_bbcode, $mchat_urls, $mchat_smilies);
// Not allowed bbcodes
if (!$mchat_allow_bbcode || $config_mchat['bbcode_disallowed'])
{
if (!$mchat_allow_bbcode)
{
$bbcode_remove = '#\[/?[^\[\]]+\]#mi';
$message = preg_replace($bbcode_remove, '', $message);
}
// disallowed bbcodes
else if ($config_mchat['bbcode_disallowed'])
{
if (empty($bbcode_replace))
{
$bbcode_replace = array('#\[(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
'#\[/(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
);
}
$message = preg_replace($bbcode_replace, '', $message);
}
}
$sql_ary = array(
'forum_id' => 0,
'post_id' => 0,
'user_id' => $user->data['user_id'],
'user_ip' => $user->data['session_ip'],
'message' => str_replace('\'', '’', $message),
'bbcode_bitfield' => $bitfield,
'bbcode_uid' => $uid,
'bbcode_options' => $options,
'message_time' => time()
);
$sql = 'INSERT INTO ' . MCHAT_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
//mChat Bot
if($config_mchat['bot_enable'])
{
if ($cache->get('_mchat_bot_randtxt') === false)
{
$sql = 'SELECT cat_id, rand_text FROM ' . MCHAT_BOT_RANDTXT_TABLE . '
ORDER BY cat_id, rand_id';
$result = $db->sql_query($sql);
$mchat_bot_randtxt = array();
while ($row = $db->sql_fetchrow($result))
{
$mchat_bot_randtxt[$row['cat_id']][] = $row['rand_text'];
}
$cache->put('_mchat_bot_randtxt', $mchat_bot_randtxt);
}
else
{
$mchat_bot_randtxt = $cache->get('_mchat_bot_randtxt');
}
if ($cache->get('_mchat_bot_text') === false)
{
$sql = 'SELECT user_text, bot_text FROM ' . MCHAT_BOT_TABLE . '
ORDER BY pos ASC';
$result = $db->sql_query($sql);
$mchat_bot_text = array();
while ($row = $db->sql_fetchrow($result))
{
$mchat_bot_text[$row['user_text']] = $row['bot_text'];
}
$cache->put('_mchat_bot_text', $mchat_bot_text);
}
else
{
$mchat_bot_text = $cache->get('_mchat_bot_text');
}
$mchat_bot_user_colour = get_username_string('colour', $user->data['user_id'], $user->data['username'], $user->data['user_colour'], $user->lang['GUEST']);
$mchat_bot_user = $mchat_bot_user_colour ? '[b][color='.$mchat_bot_user_colour.']'.$user->data['username'].'[/color][/b]' : '[b]'.$user->data['username'].'[/b]';
if (is_array($mchat_bot_text))
{
foreach ($mchat_bot_text as $user_text => $mchat_bot_word)
{
if (strstr(strtolower($message), strtolower($user_text)) && $user->data['user_id'] != $config_mchat['bot_id'])
{
if (!$mchat_bot_word)
{
break;
}
if (strstr($mchat_bot_word, 'randtxt_'))
{
$randtxt_cat_id = intval(substr($mchat_bot_word, 8));
if (empty($mchat_bot_randtxt[$randtxt_cat_id]))
{
break;
}
$mchat_bot_word = $mchat_bot_randtxt[$randtxt_cat_id][ rand(0, (count($mchat_bot_randtxt[$randtxt_cat_id]) - 1)) ];
}
$mchat_bot_word = str_replace('{$username}', $mchat_bot_user, $mchat_bot_word);
// Add function part code from http://wiki.phpbb.com/Parsing_text
$uid = $bitfield = $options = ''; // will be modified by generate_text_for_storage
generate_text_for_storage($mchat_bot_word, $uid, $bitfield, $options, $mchat_allow_bbcode, $mchat_urls, $mchat_smilies);
// Not allowed bbcodes
if (!$mchat_allow_bbcode || $config_mchat['bbcode_disallowed'])
{
if (!$mchat_allow_bbcode)
{
$bbcode_remove = '#\[/?[^\[\]]+\]#mi';
$mchat_bot_word = preg_replace($bbcode_remove, '', $mchat_bot_word);
}
// disallowed bbcodes
else if ($config_mchat['bbcode_disallowed'])
{
if (empty($bbcode_replace))
{
$bbcode_replace = array('#\[(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
'#\[/(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
);
}
$mchat_bot_word = preg_replace($bbcode_replace, '', $mchat_bot_word);
}
}
$sql_ary = array(
'forum_id' => 0,
'post_id' => 0,
'user_id' => $config_mchat['bot_id'],
'user_ip' => '',
'message' => $mchat_bot_word,
'bbcode_bitfield' => $bitfield,
'bbcode_uid' => $uid,
'bbcode_options' => $options,
'message_time' => time(),
);
$sql = 'INSERT INTO ' . MCHAT_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
break;
}
}
}
//Warnings
if ($config_mchat['bot_warning'])
{
$user->add_lang(array('mods/info_acp_mchat_bot'));
$sql = 'SELECT word
FROM ' . WORDS_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$censor_word[] = str_replace('\*', '', $row['word']);
}
if (!empty($censor_word))
{
foreach ($censor_word as $key => $censored)
{
if (strstr(strtolower($message), strtolower($censored)))
{
$warn_notice = $user->data['user_mchat_warnings'] >= $config_mchat['bot_warns'] ? $user->lang['BOT_GIVE_WARN'] : $user->lang['BOT_WARN'];
$warn_notice = str_replace('{$username}', $mchat_bot_user, $warn_notice);
// Add function part code from http://wiki.phpbb.com/Parsing_text
$uid = $bitfield = $options = ''; // will be modified by generate_text_for_storage
generate_text_for_storage($warn_notice, $uid, $bitfield, $options, $mchat_allow_bbcode, $mchat_urls, $mchat_smilies);
// Not allowed bbcodes
if (!$mchat_allow_bbcode || $config_mchat['bbcode_disallowed'])
{
if (!$mchat_allow_bbcode)
{
$bbcode_remove = '#\[/?[^\[\]]+\]#mi';
$warn_notice = preg_replace($bbcode_remove, '', $warn_notice);
}
// disallowed bbcodes
else if ($config_mchat['bbcode_disallowed'])
{
if (empty($bbcode_replace))
{
$bbcode_replace = array('#\[(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
'#\[/(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
);
}
$warn_notice = preg_replace($bbcode_replace, '', $warn_notice);
}
}
$sql_ary = array(
'forum_id' => 0,
'post_id' => 0,
'user_id' => $config_mchat['bot_id'],
'user_ip' => '',
'message' => $warn_notice,
'bbcode_bitfield' => $bitfield,
'bbcode_uid' => $uid,
'bbcode_options' => $options,
'message_time' => time(),
);
$sql = 'INSERT INTO ' . MCHAT_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
$sql = 'UPDATE ' . USERS_TABLE . ' SET user_mchat_warnings = (`user_mchat_warnings` + 1) WHERE user_id = ' . $user->data['user_id'];
$db->sql_query($sql);
if ($user->data['user_mchat_warnings'] >= $config_mchat['bot_warns'])
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_mchat_warnings = 0
WHERE user_id = ' . $user->data['user_id'];
$db->sql_query($sql);
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$warning = sprintf($user->lang['BOT_WARN_INFO'], $message);
if (!function_exists('add_warning'))
{
include($phpbb_root_path . 'includes/mcp/mcp_warn.' . $phpEx);
}
add_warning($user_row, $warning, false);
}
break;
}
}
}
}
}
//mChat Bot
// reset the config settings
if(isset($old_cfg['min_post_chars']))
{
$config['min_post_chars'] = $old_cfg['min_post_chars'];
unset($old_cfg['min_post_chars']);
}
if(isset($old_cfg['max_post_smilies']))
{
$config['max_post_smilies'] = $old_cfg['max_post_smilies'];
unset($old_cfg['max_post_smilies']);
}
// insert user into the mChat sessions table
mchat_sessions($mchat_session_time, true);
// Stop run code!
exit_handler();
break;
// Edit function...
case 'edit':
$message_id = request_var('message_id', 0);
// check for the correct user
$sql = 'SELECT *
FROM ' . MCHAT_TABLE . '
WHERE message_id = ' . (int) $message_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
// edit and delete auths
$mchat_edit = $auth->acl_get('u_mchat_edit')&& ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
$mchat_del = $auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
// If mChat disabled and not edit
if (!$config['mchat_enable'] || !$mchat_edit)
{
// Forbidden (for jQ AJAX request)
header('HTTP/1.0 403 Forbidden');
exit_handler();
}
// Reguest...
$message = utf8_normalize_nfc(request_var('message', '', true));
// stop run code
if (!$message_id )
{
// Forbidden (for jQ AJAX request)
header('HTTP/1.0 403 Forbidden');
// Stop running code
exit_handler();
}
// must have something other than bbcode in the message
if (empty($mchatregex))
{
//let's strip all the bbcode
$mchatregex = '#\[/?[^\[\]]+\]#mi';
}
$message_chars = preg_replace($mchatregex, '', $message);
$message_chars = (utf8_strlen(trim($message_chars)) > 0) ? true : false;
if (!$message || !$message_chars)
{
// Not Implemented (for jQ AJAX request)
header('HTTP/1.0 501 Not Implemented');
// Stop running code
exit_handler();
}
// Message limit
$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;
// we override the $config['min_post_chars'] entry?
if ($config_mchat['override_min_post_chars'])
{
$old_cfg['min_post_chars'] = $config['min_post_chars'];
$config['min_post_chars'] = 0;
}
//we do the same for the max number of smilies?
if ($config_mchat['override_smilie_limit'])
{
$old_cfg['max_post_smilies'] = $config['max_post_smilies'];
$config['max_post_smilies'] = 0;
}
// Edit function part code from http://wiki.phpbb.com/Parsing_text
$uid = $bitfield = $options = ''; // will be modified by generate_text_for_storage
generate_text_for_storage($message, $uid, $bitfield, $options, $mchat_allow_bbcode, $mchat_urls, $mchat_smilies);
// Not allowed bbcodes
if (!$mchat_allow_bbcode || $config_mchat['bbcode_disallowed'])
{
if (!$mchat_allow_bbcode)
{
$bbcode_remove = '#\[/?[^\[\]]+\]#mi';
$message = preg_replace($bbcode_remove, '', $message);
}
// disallowed bbcodes
else if ($config_mchat['bbcode_disallowed'])
{
if (empty($bbcode_replace))
{
$bbcode_replace = array('#\[(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
'#\[/(' . $config_mchat['bbcode_disallowed'] . ')[^\[\]]+\]#Usi',
);
}
$message = preg_replace($bbcode_replace, '', $message);
}
}
$sql_ary = array(
'message' => $message,
'bbcode_bitfield' => $bitfield,
'bbcode_uid' => $uid,
'bbcode_options' => $options
);
$sql = 'UPDATE ' . MCHAT_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary).'
WHERE message_id = ' . $message_id;
$db->sql_query($sql);
// Message edited...now read it
$sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
FROM ' . MCHAT_TABLE . ' m, ' . USERS_TABLE . ' u
WHERE m.user_id = u.user_id
AND m.message_id = ' . (int) $message_id . '
ORDER BY m.message_id DESC';
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$message_edit = $row['message'];
decode_message($message_edit, $row['bbcode_uid']);
$message_edit = str_replace('"', '"', $message_edit); // Edit Fix ;)
$mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
$random_avatar = $phpbb_root_path . 'images/avatars/random/no_avatar' . mt_rand(1, 17) . '.gif';
// END random avatar
$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']) : '<img src="' . $random_avatar . '" width="40" height="40" alt="Random Avatar" />';
$template->assign_block_vars('mchatrow', array(
'MCHAT_ALLOW_BAN' => $mchat_ban,
'MCHAT_ALLOW_EDIT' => $mchat_edit,
'MCHAT_ALLOW_DEL' => $mchat_del,
'MCHAT_MESSAGE_EDIT' => $message_edit,
'MCHAT_USER_AVATAR' => $mchat_avatar,
'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) : '',
'MCHAT_MESSAGE_ID' => $row['message_id'],
'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USER_IP' => $row['user_ip'],
'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&ip=' . $row['user_ip']),
'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&mode=setting_user_global&user_id[0]=' . $row['user_id'], true, $user->session_id),
'MCHAT_MESSAGE' => censor_text(generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options'])),
'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
));
// reset the config settings
if(isset($old_cfg['min_post_chars']))
{
$config['min_post_chars'] = $old_cfg['min_post_chars'];
unset($old_cfg['min_post_chars']);
}
if(isset($old_cfg['max_post_smilies']))
{
$config['max_post_smilies'] = $old_cfg['max_post_smilies'];
unset($old_cfg['max_post_smilies']);
}
// insert user into the mChat sessions table
mchat_sessions($mchat_session_time, true);
// If read mode request set true
$mchat_read_mode = true;
break;
// Delete function...
case 'delete':
$message_id = request_var('message_id', 0);
// check for the correct user
$sql = 'SELECT *
FROM ' . MCHAT_TABLE . '
WHERE message_id = ' . (int) $message_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
// edit and delete auths
$mchat_edit = $auth->acl_get('u_mchat_edit')&& ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
$mchat_del = $auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $user->data['user_id'] == $row['user_id']) ? true : false;
// If mChat disabled
if (!$config['mchat_enable'] || !$mchat_del || !$message_id)
{
// Forbidden (for jQ AJAX request)
header('HTTP/1.0 403 Forbidden');
exit_handler();
}
// Run delete!
$sql = 'DELETE FROM ' . MCHAT_TABLE . '
WHERE message_id = ' . (int) $message_id;
$db->sql_query($sql);
// insert user into the mChat sessions table
mchat_sessions($mchat_session_time, true);
// Stop running code
exit_handler();
break;
// Default function...
default:
// If not include in index.php set mchat.php page true
if (!$mchat_include_index)
{
// Yes its custom page...
$mchat_custom_page = true;
// If custom page false mchat.php page redirect to index...
if (!$config_mchat['custom_page'] && $mchat_custom_page)
{
$mchat_redirect = append_sid("{$phpbb_root_path}index.$phpEx");
// Redirect to previous page
meta_refresh(3, $mchat_redirect);
trigger_error($user->lang['MCHAT_NO_CUSTOM_PAGE'].'<br /><br />'.sprintf($user->lang['RETURN_PAGE'], '<a href="' . $mchat_redirect . '">', '</a>'), E_USER_NOTICE);
}
// user has permissions to view the custom chat?
if (!$mchat_view && $mchat_custom_page)
{
trigger_error($user->lang['NOT_AUTHORISED'], E_USER_NOTICE);
}
// prune the chats if nescessary and amount in ACP not empty
if ($config_mchat['prune_enable'] && $config_mchat['prune_num'] > 0)
{
mchat_prune((int) $config_mchat['prune_num']);
}
// if whois true
if ($config_mchat['whois'])
{
// Grab group details for legend display for who is online on the custom page.
if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
{
$sql = 'SELECT group_id, group_name, group_colour, group_type FROM ' . GROUPS_TABLE . '
WHERE group_legend = 1
ORDER BY group_name ASC';
}
else
{
$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type FROM ' . GROUPS_TABLE . ' g
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)
WHERE g.group_legend = 1
AND (g.group_type <> ' . GROUP_HIDDEN . '
OR ug.user_id = ' . (int) $user->data['user_id'] . ')
ORDER BY g.group_name ASC';
}
$result = $db->sql_query($sql);
$legend = array();
while ($row = $db->sql_fetchrow($result))
{
$colour_text = ($row['group_colour']) ? ' style="color:#'.$row['group_colour'].'"' : '';
$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_'.$row['group_name']] : $row['group_name'];
if ($row['group_name'] == 'BOTS' || ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')))
{
$legend[] = '<span'.$colour_text.'>'.$group_name.'</span>';
}
else
{
$legend[] = '<a'.$colour_text.' href="'.append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g='.$row['group_id']).'">'.$group_name.'</a>';
}
}
$db->sql_freeresult($result);
$legend = implode(', ', $legend);
// Assign index specific vars
$template->assign_vars(array(
'LEGEND' => $legend,
));
}
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['MCHAT_TITLE'],
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}mchat.$phpEx"))
);
}
// Run code...
if ($mchat_view)
{
$sql_where = $user->data['user_mchat_topics'] ? '' : 'WHERE m.forum_id = 0';
// Message row
$sql = 'SELECT m.*, u.username, u.user_colour, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height
FROM ' . MCHAT_TABLE . ' m
LEFT JOIN ' . USERS_TABLE . ' u ON (m.user_id = u.user_id)
' . $sql_where . '
ORDER BY message_id DESC';
$result = $db->sql_query_limit($sql, $config_mchat['message_limit']);
$rows = $db->sql_fetchrowset($result);
$rows = array_reverse($rows, true);
foreach($rows as $row)
{
// auth check
if ($row['forum_id'] != 0 && !$auth->acl_get('f_read', $row['forum_id']))
{
continue;
}
// edit, delete and permission auths
$mchat_ban = ($auth->acl_get('a_authusers') && $user->data['user_id'] != $row['user_id']) ? true : false;
// edit auths
if ($user->data['user_id'] == ANONYMOUS && $user->data['user_id'] == $row['user_id'])
{
$chat_auths = $user->data['session_ip'] == $row['user_ip'] ? true : false;
}
else
{
$chat_auths = $user->data['user_id'] == $row['user_id'] ? true : false;
}
$mchat_edit = ($auth->acl_get('u_mchat_edit') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
$mchat_del = ($auth->acl_get('u_mchat_delete') && ($auth->acl_get('m_') || $chat_auths)) ? true : false;
$random_avatar = $phpbb_root_path . 'images/avatars/random/no_avatar' . mt_rand(1, 17) . '.gif';
$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']) : '<img src="' . $random_avatar . '" width="40" height="40" alt="Random Avatar" />';
$message_edit = $row['message'];
decode_message($message_edit, $row['bbcode_uid']);
$message_edit = str_replace('"', '"', $message_edit); // Edit Fix ;)
$template->assign_block_vars('mchatrow', array(
'MCHAT_ALLOW_BAN' => $mchat_ban,
'MCHAT_ALLOW_EDIT' => $mchat_edit,
'MCHAT_ALLOW_DEL' => $mchat_del,
'MCHAT_USER_AVATAR' => $mchat_avatar,
'U_VIEWPROFILE' => ($row['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) : '',
'MCHAT_MESSAGE_EDIT' => $message_edit,
'MCHAT_MESSAGE_ID' => $row['message_id'],
'MCHAT_USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USERNAME_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST']),
'MCHAT_USER_IP' => $row['user_ip'],
'MCHAT_U_WHOIS' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=whois&ip=' . $row['user_ip']),
'MCHAT_U_BAN' => append_sid("{$phpbb_root_path}adm/index.$phpEx" ,'i=permissions&mode=setting_user_global&user_id[0]=' . $row['user_id'], true, $user->session_id),
'MCHAT_MESSAGE' => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
'MCHAT_TIME' => $user->format_date($row['message_time'], $config_mchat['date']),
'MCHAT_CLASS' => ($row['message_id'] % 2) ? 1 : 2
));
}
$db->sql_freeresult($result);
// Write no message
if (empty($rows))
{
$mchat_no_message = true;
}
// display custom bbcodes
if($mchat_allow_bbcode && $config['allow_bbcode'])
{
display_mchat_bbcodes();
}
// Smile row
if ($mchat_smilies)
{
if (!function_exists('generate_smilies'))
{
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
}
generate_smilies('inline', 0);
}
// If the static message is defined in the language file use it, else just use the entry in the database
if (isset($user->lang[strtoupper('static_message')]) || !empty($config_mchat['static_message']))
{
$config_mchat['static_message'] = $config_mchat['static_message'];
if(isset($user->lang[strtoupper('static_message')]))
{
$config_mchat['static_message'] = $user->lang[strtoupper('static_message')];
}
}
// a list of users using the chat
if ($mchat_custom_page)
{
$mchat_users = mchat_users($mchat_session_time, true);
}
else
{
$mchat_users = mchat_users($mchat_session_time);
}
$template->assign_vars(array(
'MCHAT_USERS_COUNT' => $mchat_users['mchat_users_count'],
'MCHAT_USERS_LIST' => $mchat_users['online_userlist'],
));
}
break;
}
add_form_key('mchat_posting');
// Template function...
$template->assign_vars(array(
'MCHAT_FILE_NAME' => append_sid("{$phpbb_root_path}mchat.$phpEx"),
'MCHAT_REFRESH_JS' => 1000 * $config_mchat['refresh'],
'MCHAT_ADD_MESSAGE' => $mchat_add_mess,
'MCHAT_READ_MODE' => $mchat_read_mode,
'MCHAT_ARCHIVE_MODE' => $mchat_archive_mode,
'MCHAT_RULES' => $mchat_rules,
'MCHAT_ALLOW_SMILES' => $mchat_smilies,
'MCHAT_ALLOW_IP' => $mchat_ip,
'MCHAT_NOMESSAGE_MODE' => $mchat_no_message,
'MCHAT_ALLOW_BBCODES' => ($mchat_allow_bbcode && $config['allow_bbcode']) ? true : false,
'MCHAT_ENABLE' => $config['mchat_enable'],
'MCHAT_ARCHIVE_URL' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=archive'),
'MCHAT_CUSTOM_PAGE' => $mchat_custom_page,
'MCHAT_INDEX_HEIGHT' => $config_mchat['index_height'],
'MCHAT_CUSTOM_HEIGHT' => $config_mchat['custom_height'],
'MCHAT_READ_ARCHIVE_BUTTON' => $mchat_read_archive,
'MCHAT_FOUNDER' => $mchat_founder,
'MCHAT_CLEAN_URL' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=clean&redirect=' . $on_page),
'MCHAT_STATIC_MESS' => !empty($config_mchat['static_message']) ? htmlspecialchars_decode($config_mchat['static_message']) : '',
'MCHAT_COPYRIGHT' => $user->lang['MCHAT_COPYRIGHT'],
'MCHAT_WHOIS' => $config_mchat['whois'],
'MCHAT_MESSAGE_LNGTH' => $config_mchat['max_message_lngth'],
'MCHAT_MESS_LONG' => sprintf($user->lang['MCHAT_MESS_LONG'], $config_mchat['max_message_lngth']),
'MCHAT_USER_TIMEOUT' => $config_mchat['timeout'] ? 1000 * $config_mchat['timeout'] : false,
'MCHAT_WHOIS_REFRESH' => 1000 * $config_mchat['whois_refresh'],
'MCHAT_PAUSE_ON_INPUT' => $config_mchat['pause_on_input'] ? true : false,
'L_MCHAT_ONLINE_EXPLAIN' => mchat_session_time($mchat_session_time),
'MCHAT_REFRESH_YES' => sprintf($user->lang['MCHAT_REFRESH_YES'], $config_mchat['refresh']),
'L_MCHAT_WHOIS_REFRESH_EXPLAIN' => sprintf($user->lang['WHO_IS_REFRESH_EXPLAIN'], $config_mchat['whois_refresh']),
'L_MCHAT_WELCOME_USER' => sprintf($user->lang['MCHAT_WELCOME_USER'], $user->data['username'], $config['sitename']),
'S_MCHAT_AVATARS' => $mchat_avatars,
'S_MCHAT_LOCATION' => $config_mchat['location'],
'S_MCHAT_SOUND_YES' => $user->data['user_mchat_sound'],
'S_MCHAT_INDEX_STATS' => $user->data['user_mchat_stats_index'],
'U_MORE_SMILIES' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies'),
'U_MCHAT_RULES' => append_sid("{$phpbb_root_path}mchat.$phpEx", 'mode=rules'),
));
// Template
if (!$mchat_include_index)
{
page_header($user->lang['MCHAT_TITLE']);
$template->set_filenames(array('body' => 'mchat_body.html'));
page_footer();
}
?>
This is my mchat_body.html
Code: Select all
<!-- IF MCHAT_ARCHIVE_MODE or MCHAT_CUSTOM_PAGE -->
<!-- INCLUDE overall_header.html -->
<!-- ENDIF -->
<!-- IF MCHAT_ARCHIVE_MODE -->
<!--**
*
* @package mChat
* @version $Id: mchat_body.html
* @copyright (c) 2010 Rich McGirr
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/-->
<ul class="linklist">
<li class="rightside pagination">{MCHAT_TOTAL_MESSAGES} • <!-- IF MCHAT_PAGINATION --><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{MCHAT_PAGE_NUMBER}</a> • <span>{MCHAT_PAGINATION}</span><!-- ELSE -->{MCHAT_PAGE_NUMBER}<!-- ENDIF --></li>
</ul>
<!-- ENDIF -->
<!-- IF not MCHAT_READ_MODE -->
<div class="forumlist">
<div class="catglow">
<div class="cathead-m">
<div class="cathead-r">
<div class="cathead-l">
<ul class="topiclist">
<li class="header">
<dl class="icon">
<dt><div class="cat-name" style="margin:-4px 0 -2px 0;"><span>{L_MCHAT_WELCOME_USER}</span></div></dt>
<dt><!-- IF MCHAT_ARCHIVE_MODE --><div class="cat-name" style="margin:-4px 0 -2px 0;"><span>{L_MCHAT_ARCHIVE_PAGE}</span></div><!-- ENDIF --></dt>
</dl>
</li>
</ul>
</div>
</div>
</div>
<div class="trigger active"></div>
<div class="trigger active"></div>
<div class="collapsethis">
<div class="postbody mChatBodyFix">
<!-- ENDIF -->
<!-- IF MCHAT_ENABLE -->
<!-- IF not MCHAT_READ_MODE -->
<script type="text/javascript">
// <![CDATA[
// Define mChat setting
var mChatNoMessage = '{MCHAT_NOMESSAGE_MODE}';
var mChatFile = '{MCHAT_FILE_NAME}';
var mChatForumRoot = '{ROOT_PATH}';
var mChatCustomPage = '{MCHAT_CUSTOM_PAGE}';
<!-- IF not MCHAT_ARCHIVE_MODE -->
var mChatPause = '{MCHAT_PAUSE_ON_INPUT}';
var mChatRefresh = '{MCHAT_REFRESH_JS}';
<!-- ELSE -->
var mChatPause = false;
var mChatRefresh = false;
<!-- ENDIF -->
<!-- IF MCHAT_USER_TIMEOUT -->
var mChatUserTimeout = '{MCHAT_USER_TIMEOUT}';
<!-- ELSE -->
var mChatUserTimeout = false;
<!-- ENDIF -->
var mChatNoMessageInput = '{LA_MCHAT_NOMESSAGEINPUT}';
var mChatNoMessage = '{LA_MCHAT_NOMESSAGE}';
var mChatEditInfo = '{LA_MCHAT_EDITINFO}';
var mChatNoAccess = '{LA_MCHAT_NOACCESS}';
var mChatFlood = '{LA_MCHAT_FLOOD}';
var mChatDelConfirm = '{LA_MCHAT_DELCONFIRM}';
var mChatReset = '{LA_MCHAT_RESET_QUESTION}';
var mChatRefreshing = '{LA_MCHAT_REFRESHING}';
var mChatSessOut = '{LA_MCHAT_SESSION_OUT}';
var mChatSessEnds = '{LA_MCHAT_SESSION_ENDS}';
var mChatRefreshYes = '{MCHAT_REFRESH_YES}';
var mChatRefreshNo = '{LA_MCHAT_REFRESH_NO}';
var mChatMssgLngthLong = '{MCHAT_MESS_LONG}';
<!-- IF MCHAT_MESSAGE_LNGTH -->
var mChatMssgLngth = '{MCHAT_MESSAGE_LNGTH}';
<!-- ELSE -->
var mChatMssgLngth = false;
<!-- ENDIF -->
<!-- IF S_MCHAT_SOUND_YES -->
var mChatSound = true;
<!-- ELSE -->
var mChatSound = false;
<!-- ENDIF -->
<!-- IF MCHAT_WHOIS -->
var mChatWhois = true;
var mChatWhoisRefresh = '{MCHAT_WHOIS_REFRESH}';
<!-- ELSE -->
var mChatWhois = false;
var mChatWhoisRefresh = false;
<!-- ENDIF -->
<!-- IF MCHAT_ARCHIVE_MODE -->
var mChatArchiveMode = true;
<!-- ELSE -->
var mChatArchiveMode = false;
var form_name = 'postform';
var text_name = 'message';
var mChatFocusFix = true;
<!-- ENDIF -->
function insert_quote(user,text)
{
var quote = decodeURIComponent(text.replace(/\+/g, " "));
quote = quote.replace(/</g, "<");
quote = quote.replace(/>/g, ">");
quote = quote.replace(/:/g, ':');
quote = quote.replace(/./g, '.');
quote = quote.replace(/&/g, '&');
quote = quote.replace(/"/g, '"');
var username = decodeURIComponent(user.replace(/\+/g, " "));
username = username.replace(/</g, "<");
username = username.replace(/>/g, ">");
username = username.replace(/:/g, ':');
username = username.replace(/./g, '.');
username = username.replace(/&/g, '&');
username = username.replace(/"/g, '"');
document.getElementById('mChatMessage').value += '[quote="' + username + '"]' + ' ' + quote + '[/quote]';
document.getElementById('mChatMessage').focus();
}
function insert_quote(user,text)
{
var quote = decodeURIComponent(text.replace(/\+/g, " "));
quote = quote.replace(/</g, "<");
quote = quote.replace(/>/g, ">");
quote = quote.replace(/:/g, ':');
quote = quote.replace(/./g, '.');
quote = quote.replace(/&/g, '&');
quote = quote.replace(/"/g, '"');
var username = decodeURIComponent(user.replace(/\+/g, " "));
username = username.replace(/</g, "<");
username = username.replace(/>/g, ">");
username = username.replace(/:/g, ':');
username = username.replace(/./g, '.');
username = username.replace(/&/g, '&');
username = username.replace(/"/g, '"');
document.getElementById('mChatMessage').value += '[quote="' + username + '"]' + ' ' + quote + '[/quote]';
document.getElementById('mChatMessage').focus();
}
// ]]>
</script>
<!-- IF not MCHAT_ARCHIVE_MODE -->
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/editor.js"></script>
<div id="mChatmain" <!-- IF MCHAT_CUSTOM_PAGE -->class="mChatRowLimitCustom" style="height: {MCHAT_CUSTOM_HEIGHT}px;"<!-- ELSE -->class="mChatRowLimit" style="height: {MCHAT_INDEX_HEIGHT}px;"<!-- ENDIF -->>
<!-- ENDIF -->
<div id="mChatData">
<!-- ENDIF -->
<!-- IF S_MCHAT_AVATARS -->
<!-- INCLUDE mchat_avatars.html -->
<!-- ELSE -->
<!-- INCLUDE mchat_no_avatars.html -->
<!-- ENDIF -->
<!-- IF not MCHAT_READ_MODE -->
<!-- IF MCHAT_NOMESSAGE_MODE --><div id="mChatNoMessage">{L_MCHAT_NOMESSAGE}</div><!-- ENDIF -->
</div>
<!-- IF not MCHAT_ARCHIVE_MODE -->
</div>
<!-- IF MCHAT_STATIC_MESS --><div class="mChatStatic"><strong>{L_MCHAT_ANNOUNCEMENT}:</strong> <span style="color:#990000;">{MCHAT_STATIC_MESS}</span></div><!-- ENDIF -->
<!-- IF not (MCHAT_ARCHIVE_MODE or MCHAT_CUSTOM_PAGE) and MCHAT_WHOIS and S_MCHAT_INDEX_STATS --><div class="mChatStats" id="mChatStats"><!-- IF MCHAT_USERS_LIST --><a href="#" onclick="mChat.toggle('UserList'); return false;">{MCHAT_USERS_COUNT}</a><!-- ELSE -->{MCHAT_USERS_COUNT}<!-- ENDIF --> {L_MCHAT_ONLINE_EXPLAIN}<br /><span id="mChatUserList">{MCHAT_USERS_LIST}</span></div><!-- ENDIF -->
<form method="post" action="javascript://" onsubmit="mChat.add();" id="postform">
<div class="mChatPanel">
<noscript><div class="mchat_alert">{L_MCHAT_NOJAVASCRIPT}</div></noscript>
<!-- IF MCHAT_ADD_MESSAGE -->
<input type="hidden" name="mode" value="add" />
<input type="text" name="message" class="inputbox medium mChatText" id="mChatMessage" /><br />
<input id="submit_button" type="button" class="button2"value="" style="width: 50px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/invia.png') center;""cursor:pointer;font-weight:bold;width:25px" onclick="mChat.add();" title="{L_MCHAT_ADD}" />
<input id="mChatClear" type="button" class="button2" style="width: 25px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/gomma.png') center"; onclick="mChat.clear();" title="{L_MCHAT_CLEAR_INPUT}" />
<!-- IF MCHAT_ALLOW_SMILES and .smiley -->
<input type="button" class="button2"value="" class="button1" style="width: 25px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/emoticons.png') center"; onclick="mChat.toggle('Smiles');" title="{L_MCHAT_SMILES}" />
<!-- ENDIF -->
<!-- IF MCHAT_ALLOW_BBCODES -->
<input type="button" class="button2"value="" class="button1" style="width: 25px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/bbcode.png') center"; onclick="mChat.toggle('BBCodes');" title="{L_MCHAT_BBCODES}" />
<!-- ENDIF -->
<!-- ENDIF -->
<!-- IF MCHAT_READ_ARCHIVE_BUTTON -->
<input type="button" class="button2" style="width: 25px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/archivio.png') center"; onclick="window.location.href = '{MCHAT_ARCHIVE_URL}';" title="{L_MCHAT_ARCHIVE}" />
<!-- ENDIF -->
<!-- IF MCHAT_FOUNDER -->
<input type="button" class="button2""value="" style="width: 25px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/pulisci.png') center;" onclick="window.location.href = '{MCHAT_CLEAN_URL}';" title="{L_MCHAT_CLEAN}" />
<!-- ENDIF --> <!-- IF MCHAT_ADD_MESSAGE -->
<!-- IF MCHAT_RULES -->
<input type="button" class="button2" value="" style="width: 50px !important; height: 25px !important; background: url('{ROOT_PATH}/images/tagboard/regole.png') center;""cursor:pointer;font-weight:bold;width:25px" onclick="popup('{U_MCHAT_RULES}', 450, 275); return false;" value="{L_MCHAT_HELP}" />
<!-- ENDIF -->
<!-- IF MCHAT_ALLOW_BBCODES -->
<!-- INCLUDE mchat_bbcodes.html -->
<!-- ENDIF -->
<!-- ENDIF -->
{S_FORM_TOKEN}
<!-- IF MCHAT_ALLOW_SMILES and .smiley -->
<div id="mChatSmiles" style="padding: 5px; display: none;">
<div style="width:100%; height:150px;border: solid 1px gray; overflow:auto;">
<!-- BEGIN smiley -->
<a href="#" onclick="insert_text('{smiley.A_SMILEY_CODE}', true); return false;"><img src="{smiley.SMILEY_IMG}" width="{smiley.SMILEY_WIDTH}" height="{smiley.SMILEY_HEIGHT}" alt="{smiley.SMILEY_CODE}" title="{smiley.SMILEY_DESC}" /></a>
<!-- END smiley -->
<a href="{U_MORE_SMILIES}" onclick="popup(this.href, 300, 350, '_phpbbsmilies'); return false;">{L_MORE_SMILIES}</a>
</div>
</div>
<!-- ENDIF -->
<div style="padding: 3px;">
<img src="{ROOT_PATH}mchat/load.gif" alt="{L_MCHAT_LOAD}" title="{L_MCHAT_LOAD}" id="mChatLoadIMG" class="mChatImageLoad" />
<img src="{ROOT_PATH}mchat/ok.gif" alt="{L_MCHAT_OK}" title="{L_MCHAT_OK}" id="mChatOkIMG" class="mChatImageOk" />
<img src="{ROOT_PATH}mchat/error.gif" alt="{L_MCHAT_ERROR}" title="{L_MCHAT_ERROR}" id="mChatErrorIMG" class="mChatImageHideImg" />
<img src="{ROOT_PATH}mchat/paused.gif" alt="{L_MCHAT_PAUSE}" title="{L_MCHAT_PAUSE}" id="mChatPauseIMG" class="mChatImageHideImg" />
<span id="mChatRefreshText">{MCHAT_REFRESH_YES}</span><!-- IF MCHAT_USER_TIMEOUT --> • <span id="mChatSessMess"> </span><!-- ENDIF --> • <label for="mChatUseSound">{L_MCHAT_USESOUND} <input type="checkbox" id="mChatUseSound" <!-- IF S_MCHAT_SOUND_YES -->checked="checked"<!-- ENDIF --> /></label>
{L_MCHAT_COPYRIGHT}
</div>
</div>
</form>
<!-- ENDIF -->
<div id="mChatSound" class="mChatSound"></div>
<!-- ENDIF -->
<!-- ELSE -->
<div class="mchat_alert">{L_MCHAT_ENABLE}</div>
<!-- ENDIF -->
<!-- IF not MCHAT_READ_MODE -->
</div>
<span class="corners-bottom"><span></span></span></div>
</div>
</div>
<!-- ENDIF -->
<!-- IF MCHAT_ARCHIVE_MODE -->
<ul class="linklist">
<li class="rightside pagination">{MCHAT_TOTAL_MESSAGES} • <!-- IF MCHAT_PAGINATION --><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{MCHAT_PAGE_NUMBER}</a> • <span>{MCHAT_PAGINATION}</span><!-- ELSE -->{MCHAT_PAGE_NUMBER}<!-- ENDIF --></li>
</ul>
<!-- ENDIF -->
<!-- IF MCHAT_CUSTOM_PAGE and MCHAT_WHOIS -->
<h3>{L_WHO_IS_CHATTING}</h3>
<div class="mChatStats" id="mChatStats"><!-- IF MCHAT_USERS_LIST --><a href="#" onclick="mChat.toggle('UserList'); return false;">{MCHAT_USERS_COUNT}</a><!-- ELSE -->{MCHAT_USERS_COUNT}<!-- ENDIF --> {L_MCHAT_ONLINE_EXPLAIN}<br /><span id="mChatUserList">{MCHAT_USERS_LIST}</span></div>
<div class="mChatRefresh"><span id="mChatRefresh">{L_MCHAT_WHOIS_REFRESH_EXPLAIN}</span><span id="mChatRefreshN" style="display: none;">{L_MCHAT_REFRESHING}</span>
<!-- IF LEGEND --><br /><em>{L_LEGEND}: {LEGEND}</em><!-- ENDIF --></div>
<!-- ENDIF -->
<!-- IF MCHAT_ARCHIVE_MODE or MCHAT_CUSTOM_PAGE -->
<!-- INCLUDE overall_footer.html -->
<!-- ENDIF -->
Thanks in advance