- <?php
- #Chatbox 1.1 For Discuz!X2 By I~DiscuzX_Serie
- global $_G;
- include('cache.lib.php');
- include('version.php');
- loadcache('plugin');
- $config = $_G['cache']['plugin']['chatbox'];
- $user = GetUserInfo($_G['username']);
- $clang = ($user['lang']?$user['lang']:$config['defaultlang']);
- include('lang/'.$clang.'/'.$clang.'.php');
- $langs = get_lang();
- foreach($langs as $v) {
- $langlist[] = "['$v[langname]','$v[lang]']";
- }
- $langlist = '['.implode(',',$langlist).']';
- $_CB = array(
- 'authkey' => encode($_G['username'],$key),
- 'update' => $config['updatetime']*1000,
- 'messagelimit' => $config['messagelimit'],
- 'sendlimit' => $config['sendmessagelimit'],
- 'roomname' => $config['roomindex'],
- 'welcome' => $config['welcome'],
- 'height' => $config['height'],
- 'botname' => addslashes(htmlspecialchars($config['botname'])),
- 'messagelength' => $config['messagelength'],
- 'clear_message' => $config['clear_message'],
- 'defaultlang' => $config['defaultlang'],
- 'lang' => $clang,
- 'langlist' => $langlist,
- );
- $_CB['bot'] = array(
- 'Chatbox1'=>array('nick'=>'Bot <<---','color'=>'blue','admin'=>2),
- 'Chatbox2'=>array('nick'=>'Bot --->>','color'=>'green','admin'=>2)
- );
- function GetUserInfo($username) {
- $discuz_user = DB::fetch_first("SELECT * FROM ".DB::table('common_member')." WHERE `username` = '{$username}'");
- $group = DB::fetch_first("SELECT * FROM ".DB::table('common_usergroup')." WHERE `groupid` = '$discuz_user[groupid]'");
- $user = DB::fetch_first("SELECT * FROM ".DB::table('chatbox_member')." WHERE `username` = '{$discuz_user[username]}'");
- if($discuz_user['adminid']==1) {
- $admin=1;
- } elseif($group['radminid']>0||$user['admin']==1) {
- $admin=2;
- } else {
- $admin=0;
- }
- $return['uid'] = (string)$user['uid'];
- $return['username'] = (string)$user['username'];
- $return['color'] = (string)$group['color'];
- $return['point']['like'] = $user['point_like'];
- $return['point']['dislike'] = $user['point_dislike'];
- $return['like'] = explode(',',(string)$user['like']);
- $return['showsys'] = (string)$user['showsys'];
- $return['private'] = explode(',',(string)$user['private']);
- $return['uprivate'] = (string)$user['uprivate'];
- $return['lang'] = (string)$user['lang'];
- $return['nick'] = (string)$user['nick'];
- $return['background'] = explode('|',(string)$user['background']);
- $return['ban'] = (int)$user['ban'];
- $return['admin'] = (int)$admin;
- return $return;
- }
- function clang($lang,$mod='') {
- if(is_array($mod)) {
- foreach($mod as $k => $v) {
- $lang = str_replace('{'.$k.'}', $v, $lang);
- }
- }
- return $lang;
- }
- function get_lang() {
- $langlist = array();
- $dir = dirname(__FILE__).'/lang';
- if($handle = opendir($dir)) {
- while($langs = readdir($handle)) {
- $file = $dir.'/'.$langs.'/'.$langs;
- if(file_exists($file.'.php')&&file_exists($file.'.js')) {
- include($file.'.php');
- $langlist[] = array('langname'=>$lang['name'],'lang'=>$langs);
- }
- }
- }
- rsort($langlist);
- return $langlist;
- }
- function ip($ip) {
- $ip = explode('.',$ip);
- return "{$ip[0]}.{$ip[1]}.{$ip[2]}.xxx";
- }
- function checkauth($text,$key) {
- global $_G;
- if(decode($text,$key)==$_G['username']) {
- return true;
- } else {
- return false;
- }
- }
- function encode($string,$key) {
- $key = sha1($key);
- $strLen = strlen($string);
- $keyLen = strlen($key);
- for ($i=0;$i<$strLen;$i++) {
- $ordStr = ord(substr($string,$i,1));
- if($j==$keyLen) { $j = 0; }
- $ordKey = ord(substr($key,$j,1));
- $j++;
- $hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
- }
- return $hash;
- }
- function decode($string,$key) {
- $key = sha1($key);
- $strLen = strlen($string);
- $keyLen = strlen($key);
- for($i=0;$i<$strLen;$i+=2) {
- $ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16));
- if($j==$keyLen) { $j = 0; }
- $ordKey = ord(substr($key,$j,1));
- $j++;
- $hash .= chr($ordStr - $ordKey);
- }
- return $hash;
- }
- ?>

