System Ban mchat

Support for mods released by phpbbmodders.net found at either https://github.com/phpbbmodders/ or the MODDB at http://www.phpbb.com
Forum rules
Please only request support for mods released by phpbbmodders.net found at either https://github.com/phpbbmodders/ or the MODDB at http://www.phpbb.com
hackexpress
New member
New member
Posts: 8
Joined: 10 Feb 2013, 03:27

System Ban mchat

Postby hackexpress » 08 Feb 2016, 13:28

http://web-codes.net/viewtopic.php?p=36623#p36623
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('"', '&quot;', $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&amp;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&amp;ip=' . $row['user_ip']),
               '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),
               '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('"', '&quot;', $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&amp;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&amp;ip=' . $row['user_ip']),
            '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),
            '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>&nbsp;' . $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'] . '&nbsp;' . $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('\'', '&rsquo;', $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('"', '&quot;', $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&amp;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&amp;ip=' . $row['user_ip']),
         '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),
         '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&amp;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('"', '&quot;', $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&amp;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&amp;ip=' . $row['user_ip']),
               '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),
               '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&amp;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} &bull; <!-- IF MCHAT_PAGINATION --><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{MCHAT_PAGE_NUMBER}</a> &bull; <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(/&lt;/g, "<");
               quote = quote.replace(/&gt;/g, ">");
               quote = quote.replace(/&#58;/g, ':');
               quote = quote.replace(/&#46;/g, '.');
               quote = quote.replace(/&amp;/g, '&');
               quote = quote.replace(/&quot;/g, '"');
               var username = decodeURIComponent(user.replace(/\+/g, " "));
               username = username.replace(/&lt;/g, "<");
               username = username.replace(/&gt;/g, ">");
               username = username.replace(/&#58;/g, ':');
               username = username.replace(/&#46;/g, '.');
               username = username.replace(/&amp;/g, '&');
               username = username.replace(/&quot;/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(/&lt;/g, "<");
               quote = quote.replace(/&gt;/g, ">");
               quote = quote.replace(/&#58;/g, ':');
               quote = quote.replace(/&#46;/g, '.');
               quote = quote.replace(/&amp;/g, '&');
               quote = quote.replace(/&quot;/g, '"');
               var username = decodeURIComponent(user.replace(/\+/g, " "));
               username = username.replace(/&lt;/g, "<");
               username = username.replace(/&gt;/g, ">");
               username = username.replace(/&#58;/g, ':');
               username = username.replace(/&#46;/g, '.');
               username = username.replace(/&amp;/g, '&');
               username = username.replace(/&quot;/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 -->&nbsp;{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 --> &bull; <span id="mChatSessMess">&nbsp;</span><!-- ENDIF --> &bull; <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} &bull; <!-- IF MCHAT_PAGINATION --><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{MCHAT_PAGE_NUMBER}</a> &bull; <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 -->&nbsp;{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

Return to “Modders MOD support”

Who is online

Users browsing this forum: CommonCrawl [Bot] and 1 guest