From 27b057dec0fd3ff9df5ce588c388db3a04e542a9 Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Sat, 11 Jul 2015 22:01:56 +0200 Subject: [PATCH] Version 1.11 Clean all messages of someone Kick via active session display Change languages supported without cookies Global password only in setup and not in admin section CSS Styling supported Moved many configurations from file to database More simplifications and bugfixes --- CHANGELOG | 9 + chat.php | 593 ++++++++++++++++++++++++++-------------------------- lang_de.php | 23 +- lang_en.php | 22 +- 4 files changed, 342 insertions(+), 305 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8aaa7da..3832e3a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,12 @@ +Version 1.11 - Jul. 11, 2015 +Clean all messages of someone +Kick via active session display +Change languages supported without cookies +Global password only in setup and not in admin section +CSS Styling supported +Moved many configurations from file to database +More simplifications and bugfixes + Version 1.10 - Jun. 7, 2015 Added message encryption option diff --git a/chat.php b/chat.php index 99d4bf7..239be7d 100755 --- a/chat.php +++ b/chat.php @@ -73,7 +73,7 @@ if(!isSet($_REQUEST['action'])){ send_controls(); }elseif($_REQUEST['action']=='delete'){ check_session(); - if($_REQUEST['what']=='all') del_all_messages($U['nickname']); + if($_REQUEST['what']=='all') del_all_messages($U['nickname'], 10); if($_REQUEST['what']=='last') del_last_message(); send_post(); }elseif($_REQUEST['action']=='profile'){ @@ -104,8 +104,9 @@ if(!isSet($_REQUEST['action'])){ send_admin(); }elseif($_REQUEST['do']=='clean'){ if($_REQUEST['what']=='choose') send_choose_messages(); - if($_REQUEST['what']=='selected') clean_selected(); - if($_REQUEST['what']=='room') clean_room(); + elseif($_REQUEST['what']=='selected') clean_selected(); + elseif($_REQUEST['what']=='room') clean_room(); + elseif($_REQUEST['what']=='nick') del_all_messages($_REQUEST['nickname'], $U['status']); send_admin(); }elseif($_REQUEST['do']=='kick'){ if(!isSet($_REQUEST['name'])) send_admin(); @@ -117,6 +118,7 @@ if(!isSet($_REQUEST['action'])){ logout_chatter($_REQUEST['name']); send_admin(); }elseif($_REQUEST['do']=='sessions'){ + if(isSet($_REQUEST['nick'])) kick_chatter(array($_REQUEST['nick']), '', false); send_sessions(); }elseif($_REQUEST['do']=='register'){ register_guest(3); @@ -140,13 +142,6 @@ if(!isSet($_REQUEST['action'])){ }elseif($_REQUEST['do']=='filter'){ manage_filter(); send_filter(); - }elseif($_REQUEST['do']=='globalpass'){ - if(isSet($_REQUEST['globalpass'])){ - update_setting('globalpass', $_REQUEST['globalpass']); - } - if(isSet($_REQUEST['englobalpass']) && preg_match('/^[012]$/', $_REQUEST['englobalpass'])){ - update_setting('englobalpass', $_REQUEST['englobalpass']); - } } send_admin(); }elseif($_REQUEST['action']=='setup'){ @@ -162,18 +157,21 @@ if(!isSet($_REQUEST['action'])){ if($num_tables<7) send_init(); update_db(); if(!valid_admin()) send_alogin(); + $setting_update=array('guestaccess', 'dateformat', 'captcha', 'css', 'memberexpire', 'guestexpire', 'kickpenalty', 'entrywait', 'captchatime', 'messageexpire', 'messagelimit', 'maxmessage'); if(!isSet($_REQUEST['do'])){ - }elseif($_REQUEST['do']=='guestaccess'){ - if(isSet($_REQUEST['set']) && preg_match('/^[0123]$/', $_REQUEST['set'])){ - update_setting('guestaccess', $_REQUEST['set']); + }elseif(in_array($_REQUEST['do'], $setting_update)){ + if(isSet($_REQUEST[$_REQUEST['do']])){ + update_setting($_REQUEST['do'], $_REQUEST[$_REQUEST['do']]); } }elseif($_REQUEST['do']=='messages'){ update_messages(); }elseif($_REQUEST['do']=='rules'){ - $_REQUEST['rulestxt']=preg_replace("/\r\n/", '
', $_REQUEST['rulestxt']); - $_REQUEST['rulestxt']=preg_replace("/\n/", '
', $_REQUEST['rulestxt']); - $_REQUEST['rulestxt']=preg_replace("/\r/", '
', $_REQUEST['rulestxt']); - update_setting('rulestxt', $_REQUEST['rulestxt']); + if(isSet($_REQUEST['rulestxt'])){ + $_REQUEST['rulestxt']=preg_replace("/\r\n/", '
', $_REQUEST['rulestxt']); + $_REQUEST['rulestxt']=preg_replace("/\n/", '
', $_REQUEST['rulestxt']); + $_REQUEST['rulestxt']=preg_replace("/\r/", '
', $_REQUEST['rulestxt']); + update_setting('rulestxt', $_REQUEST['rulestxt']); + } }elseif($_REQUEST['do']=='globalpass'){ if(isSet($_REQUEST['globalpass'])){ update_setting('globalpass', $_REQUEST['globalpass']); @@ -181,14 +179,6 @@ if(!isSet($_REQUEST['action'])){ if(isSet($_REQUEST['englobalpass']) && preg_match('/^[012]$/', $_REQUEST['englobalpass'])){ update_setting('englobalpass', $_REQUEST['englobalpass']); } - }elseif($_REQUEST['do']=='dateformat'){ - if(isSet($_REQUEST['dateformat'])){ - update_setting('dateformat', $_REQUEST['dateformat']); - } - }elseif($_REQUEST['do']=='captcha'){ - if(isSet($_REQUEST['captcha'])){ - update_setting('captcha', $_REQUEST['captcha']); - } } send_setup(); }elseif($_REQUEST['action']=='init'){ @@ -196,34 +186,26 @@ if(!isSet($_REQUEST['action'])){ }else{ send_login(); } +mysqli_close($mysqli); exit; // html output subs - -function print_credits(){ - global $C, $I; - echo ''; - if($C['showcredits']){ - echo "

$I[contributors]

"; - echo 'Programming - Daniel Winzen
'; - echo 'German - Daniel Winzen
'; - echo 'English - Daniel Winzen
'; - } - echo "

LE CHAT-PHP - $C[version]
"; -} - -function print_stylesheet($arg1=''){ - echo ""; +function print_stylesheet(){ + global $C; + $css=get_setting('css'); + echo ""; } function print_end(){ + global $mysqli; echo ''; + mysqli_close($mysqli); exit; } function frmpst($arg1='', $arg2=''){ - global $H, $U; - $string="<$H[form]>".hidden('action', $arg1).hidden('session', $U['session']); + global $C, $H, $U; + $string="<$H[form]>".hidden('action', $arg1).hidden('session', $U['session']).hidden('lang', $C['lang']); if(!empty($arg2)){ $string.=hidden('what', $arg2).@hidden('sendto', $_REQUEST['sendto']).@hidden('multi', $_REQUEST['multi']); } @@ -231,8 +213,13 @@ function frmpst($arg1='', $arg2=''){ } function frmadm($arg1=''){ - global $H, $U; - return "<$H[form]>".hidden('action', 'admin').hidden('do', $arg1).hidden('session', $U['session']); + global $C, $H, $U; + return "<$H[form]>".hidden('action', 'admin').hidden('do', $arg1).hidden('session', $U['session']).hidden('lang', $C['lang']); +} + +function frmsetup($arg1=''){ + global $C, $H, $U; + return "<$H[form]>".hidden('action', 'setup').hidden('do', $arg1).hidden('session', $U['session']).hidden('lang', $C['lang']); } function hidden($arg1='', $arg2=''){ @@ -247,27 +234,28 @@ function thr(){ echo '
'; } -function print_start($css='', $ref='', $url=''){ +function print_start($class='', $ref=0, $url=''){ global $H; header('Content-Type: text/html; charset=UTF-8'); header('Pragma: no-cache'); header('Cache-Control: no-cache'); header('Expires: 0'); if(!empty($url)) header("Refresh: $ref; URL=$url"); echo "$H[meta_html]"; if(!empty($url)) echo ""; - print_stylesheet($css); - echo "$H[begin_body]"; + print_stylesheet(); + echo "<$H[begin_body] class=\"$class\">"; } function send_redirect(){ + global $I; if(preg_match('~^http(s)?://~', $_GET['url'])){ - header("Refresh: 0; URL=$_GET[url]"); - echo "

Redirecting to: ".htmlspecialchars($_GET['url']).'.

'; + print_start('redirect', 0, $_GET['url']); + echo "

$I[redirectto] ".htmlspecialchars($_GET['url']).'.

'; }else{ + print_start('redirect'); $url=preg_replace('~(.*)://~', 'http://', $_GET['url']); - echo ''; - echo "

Non-http link requested: ".htmlspecialchars($_GET['url']).'.

'; - echo "

If it's not working, try this one: ".htmlspecialchars($url).'.

'; - echo ''; + echo "

$I[nonhttp] ".htmlspecialchars($_GET['url']).'.

'; + echo "

$I[httpredir] ".htmlspecialchars($url).'.

'; } + print_end(); } function send_captcha(){ @@ -282,7 +270,7 @@ function send_captcha(){ $randid=rand(0, 99999999); $time=time(); if($C['memcached']){ - $memcached->set("$C[dbname]-$C[prefix]captcha-$randid", $code, $C['captchatime']); + $memcached->set("$C[dbname]-$C[prefix]captcha-$randid", $code, get_setting('captchatime')); }else{ $stmt=mysqli_prepare($mysqli, "INSERT INTO `$C[prefix]captcha` (`id`, `time`, `code`) VALUES (?, ?, ?)"); mysqli_stmt_bind_param($stmt, 'iis', $randid, $time, $code); @@ -351,29 +339,29 @@ function send_captcha(){ function send_setup(){ global $C, $H, $I, $U; $ga=get_setting('guestaccess'); - print_start(); + print_start('setup'); echo "

$I[setup]

"; thr(); echo "'; thr(); $englobal=get_setting('englobalpass'); echo "'; thr(); - echo ''; thr(); echo "'; + echo frmadm('sessions').'
$I[guestacc]"; - echo "<$H[form]>".hidden('action', 'setup').hidden('do', 'guestaccess').hidden('session', $U['session']).''; - echo '"; - echo '"; - echo '"; - echo '"; echo '
 '; + echo '
  
   
   
   
 '.submit($I['change']).'
'; thr(); echo "'; thr(); echo "'; thr(); echo "'; thr(); echo "'; + $number_settings=array('memberexpire', 'guestexpire', 'kickpenalty', 'entrywait', 'captchatime', 'messageexpire', 'messagelimit', 'maxmessage'); + foreach($number_settings as $setting){ + thr(); + echo ''; + } + thr(); + echo "
$I[globalloginpass]"; - echo "<$H[form]>".hidden('action', 'setup').hidden('do', 'globalpass').hidden('session', $U['session']).''; - echo '
'; + echo '
'.submit($I['apply']).'
$I[sysmessages]"; - echo "<$H[form]>".hidden('action', 'setup').hidden('do', 'messages').hidden('session', $U['session']).''; + echo frmsetup('messages').'
'; echo "'; echo "'; echo "'; @@ -394,18 +382,18 @@ function send_setup(){ echo '
 $I[msgenter] 
 $I[msgexit] 
 $I[msgmemreg] 
 '.submit($I['apply']).'
$I[rules]"; - echo "<$H[form]>".hidden('action', 'setup').hidden('do', 'rules').hidden('session', $U['session']).''; - echo ''; + echo frmsetup('rules').'
'; + echo ''; echo '
 '.submit($I['apply']).'
$I[dateformat]"; - echo "<$H[form]>".hidden('action', 'setup').hidden('do', 'dateformat').hidden('session', $U['session']).''; + echo frmsetup('dateformat').'
'; echo ''; echo '
 '.submit($I['apply']).'
'; thr(); - echo "
$I[captcha]"; - echo "<$H[form]>".hidden('action', 'setup').hidden('do', 'captcha').hidden('session', $U['session']).''; - echo '
'; + echo ''; echo '
 '.submit($I['apply']).'
<$H[form]>".hidden('action', 'logout').hidden('session', $U['session']).submit($I['logout']).''; - print_credits(); + echo "
$I[css]"; + echo frmsetup('css').''; + echo ''; + echo '
 '.submit($I['apply']).'
'.$I[$setting].''; + echo frmsetup($setting).''; + echo "'; + echo '
 '.submit($I['apply']).'
<$H[form]>".hidden('action', 'logout').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['logout'])."$H[credit]"; print_end(); } function send_init(){ - global $H, $I; - print_start(); + global $C, $H, $I, $L; + print_start('init'); echo "

$I[init]

"; - echo "<$H[form]>".hidden('action', 'init')."

$I[sulogin]

"; + echo "<$H[form]>".hidden('action', 'init').hidden('lang', $C['lang'])."

$I[sulogin]

"; echo ""; echo ""; echo ""; echo '
$I[sunick]
$I[supass]
$I[suconfirm]

'.submit($I['initbtn']).'
'; - print_credits(); + echo "

$I[changelang]"; + foreach($L as $lang=>$name){ + echo " $name"; + } + echo "

$H[credit]"; print_end(); } function send_update(){ - global $H, $I; - print_start(); - echo "

$I[dbupdate]


<$H[form]>".hidden('action', 'setup').submit($I['initgosetup']).'
'; - print_credits(); + global $C, $H, $I; + print_start('update'); + echo "

$I[dbupdate]


<$H[form]>".hidden('action', 'setup').hidden('lang', $C['lang']).submit($I['initgosetup'])."
$H[credit]"; print_end(); } function send_alogin(){ - global $C, $H, $I; - print_start(); - echo "
<$H[form]>".hidden('action', 'setup').''; + global $C, $H, $I, $L; + print_start('alogin'); + echo "
<$H[form]>".hidden('action', 'setup').hidden('lang', $C['lang']).'
'; echo ""; echo ""; send_captcha(); echo '
$I[nick]
$I[pass]
'.submit($I['login']).'
'; - print_credits(); + echo "

$I[changelang]"; + foreach($L as $lang=>$name){ + echo " $name"; + } + echo "

$H[credit]"; print_end(); } function send_admin($arg=''){ global $C, $H, $I, $P, $U; $ga=get_setting('guestaccess'); - print_start(); + print_start('admin'); $chlist=""; thr(); echo "'; + echo frmadm('clean').'
$I[cleanmsgs]"; - echo frmadm('clean').''; - echo ""; - echo "
   "; - echo submit($I['clean']).'
'; + echo " "; + echo " 
"; + echo " "; + echo submit($I['clean'], 'class="delbutton"').'
'; thr(); echo "
'.sprintf($I['kickchat'], $C['kickpenalty']).'
'; + echo '
'.sprintf($I['kickchat'], get_setting('kickpenalty')).'
'; echo frmadm('kick').""; - echo "
$I[kickmsg]  
$chlist"; + echo "
$chlist"; echo submit($I['kick']).'
$I[logoutinact]"; @@ -481,10 +489,10 @@ function send_admin($arg=''){ echo submit($I['logout']).'
$I[viewsess]"; - echo frmadm('sessions').'
 '.submit($I['view']).'
 '.submit($I['view']).'
'; thr(); echo "
$I[filter]"; - echo frmadm('filter').'
 '.submit($I['view']).'
'; + echo frmadm('filter').'
 '.submit($I['view']).'
'; thr(); echo "
$I[guestacc]"; echo frmadm('guestaccess').''; @@ -502,16 +510,6 @@ function send_admin($arg=''){ echo ">"; echo '
 
 '.submit($I['change']).'
'; thr(); - $englobal=get_setting('englobalpass'); - echo "
$I[globalloginpass]"; - echo frmadm('globalpass').''; - echo ''; - echo '
   '.submit($I['apply']).'
'; - thr(); if($C['suguests']){ echo "
$I[addsuguest]"; echo frmadm('superguest')."'; thr(); } @@ -551,20 +549,29 @@ function send_admin($arg=''){ } function send_sessions(){ - global $H, $I, $U; + global $C, $H, $I, $U; $lines=parse_sessions(); - print_start(); + print_start('sessions'); echo "

$I[sessact]

 
$I[regmem]
"; echo frmadm('regnew').""; - echo "
 $I[nick] 
 $I[pass]"; + echo "
 $I[pass]"; echo submit($I['register']).'
"; - echo ""; + echo ""; + if($C['trackip']) echo ""; + echo ""; foreach($lines as $temp){ - if($temp['status']!=0 && $temp['entry']==0){ + if($temp['status']!=0 && $temp['entry']==0 && (!$temp['incognito'] || $temp['status']<$U['status'])){ if($temp['status']==1 || $temp['status']==2) $s=' (G)'; elseif($temp['status']==3) $s=''; elseif($temp['status']==5 || $temp['status']==6) $s=' (M)'; elseif($temp['status']>=7) $s=' (A)'; - echo ''; + echo ''; + if($U['status']>$temp['status'] || $U['session']==$temp['session']){ + echo ""; + if($C['trackip']) echo ""; + echo "'; + }else{ + echo ''; + if($C['trackip']) echo ''; + echo ''; + } } } echo "
$I[sessnick]$I[sesstimeout]$I[sessua]
$I[sessnick]$I[sesstimeout]$I[sessua]$I[sesip]$I[actions]
'.style_this($temp['nickname'].$s, $temp['fontinfo']).''.get_timeout($temp['lastpost'], $temp['status']).''; - if($U['status']>$temp['status'] || $U['session']==$temp['session']) echo $temp['useragent']; - else echo '-
'.style_this($temp['nickname'].$s, $temp['fontinfo']).''.get_timeout($temp['lastpost'], $temp['status']).'$temp[useragent]$temp[ip]".frmadm('sessions').hidden('nick', $temp['nickname']).submit($I['kick']).'
---

$H[backtochat]"; @@ -612,7 +619,7 @@ function manage_filter(){ function send_filter($arg=''){ global $C, $H, $I, $U, $memcached, $mysqli; - print_start(); + print_start('filter'); echo "

$I[filter]

$arg"; thr(); echo "
"; @@ -659,15 +666,16 @@ function send_filter($arg=''){ } function send_frameset(){ - global $H, $I, $U; + global $C, $H, $I, $U, $mysqli; header('Content-Type: text/html; charset=UTF-8'); header('Pragma: no-cache'); header('Cache-Control: no-cache'); header('Expires: 0'); echo "$H[meta_html]"; print_stylesheet(); if(isSet($_COOKIE['test'])){ - echo "$H[begin_body]$I[noframes]$H[backtologin]</body>"; + echo "<body>$I[noframes]$H[backtologin]</body>"; }else{ - echo "$H[begin_body]$I[noframes]$H[backtologin]</body>"; + echo "<body>$I[noframes]$H[backtologin]</body>"; } + mysqli_close($mysqli); exit; } @@ -676,9 +684,9 @@ function send_messages(){ if(isSet($_COOKIE[$C['cookiename']])){ $url="$_SERVER[SCRIPT_NAME]?action=view"; }else{ - $url="$_SERVER[SCRIPT_NAME]?action=view&session=$U[session]"; + $url="$_SERVER[SCRIPT_NAME]?action=view&session=$U[session]&lang=$C[lang]"; } - print_start('', $U['refresh'], $url); + print_start('messages', $U['refresh'], $url); echo ''; print_chatters(); echo "
$I[fid]
$I[bottom]
"; @@ -689,12 +697,17 @@ function send_messages(){ function send_notes($type){ global $C, $H, $I, $U, $mysqli; - print_start(); + print_start('notes'); $text=''; - if($type=='staff') echo "

$I[staffnotes]

"; + echo '

'; + if($U['status']>=6){ + echo "'; + echo "
<$H[form] target=\"view\">".hidden('action', 'admnotes').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['admnotes']).'<$H[form] target=\"view\">".hidden('action', 'notes').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['notes']).'
'; + } + if($type=='staff') echo "

$I[staffnotes]

"; else echo "

$I[adminnotes]

"; if(isset($_REQUEST['text'])){ - if($C['msgencrypted']) $_REQUEST['text']=openssl_encrypt($_REQUEST['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); + if($C['msgencrypted']) $_REQUEST['text']=openssl_encrypt($_REQUEST['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); $time=time(); $stmt=mysqli_prepare($mysqli, "INSERT INTO `$C[prefix]notes` (`type`, `lastedited`, `editedby`, `text`) VALUES (?, ?, ?, ?)"); mysqli_stmt_bind_param($stmt, 'siss', $type, $time, $U['nickname'], $_REQUEST['text']); @@ -710,20 +723,21 @@ function send_notes($type){ if(mysqli_stmt_fetch($stmt)) printf($I['lastedited'], $editedby, date($dateformat, $lastedited)); mysqli_stmt_close($stmt); echo "

<$H[form]>"; - if($C['msgencrypted']) $text=openssl_decrypt($text, "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); + if($C['msgencrypted']) $text=openssl_decrypt($text, 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); if($type=='staff') echo hidden('action', 'notes'); else echo hidden('action', 'admnotes'); - echo hidden('session', $U['session'])."
'; - echo submit($I['savenotes']).'
'; + echo hidden('session', $U['session']).hidden('lang', $C['lang'])."
'; + echo submit($I['savenotes']).'
'; + print_end(); } function send_approve_waiting(){ - global $C, $H, $I, $U, $mysqli; - print_start('admin'); + global $C, $H, $I, $mysqli; + print_start('approve_waiting'); echo "

$I[waitingroom]

"; $result=mysqli_query($mysqli, "SELECT * FROM `$C[prefix]sessions` WHERE `entry`!='0' AND `status`='1' ORDER BY `id`"); if(mysqli_num_rows($result)>0){ - echo "<$H[form]>".hidden('action', 'admin').hidden('do', 'approve').hidden('session', $U['session']).''; + echo frmadm('approve').'
'; echo ""; while($temp=mysqli_fetch_array($result, MYSQLI_ASSOC)){ echo ''.hidden('alls[]', $temp['nickname']).""; @@ -741,7 +755,7 @@ function send_approve_waiting(){ } function send_waiting_room(){ - global $C, $H, $I, $M, $U, $countmods, $mysqli; + global $C, $H, $I, $U, $countmods, $mysqli; parse_sessions(); $ga=get_setting('guestaccess'); if($ga==3 && $countmods>0) $wait=false; @@ -754,8 +768,8 @@ function send_waiting_room(){ setcookie($C['cookiename'], false); send_error("$I[kicked]
$U[kickmessage]"); } - $timeleft=$C['entrywait']-(time()-$U['entry']); - if($wait && ($timeleft<=0 || count($M)==0 || $ga==1)){ + $timeleft=get_setting('entrywait')-(time()-$U['entry']); + if($wait && ($timeleft<=0 || $ga==1)){ $U['entry']=0; $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `entry`=? WHERE `session`=?"); mysqli_stmt_bind_param($stmt, 'is', $U['entry'], $U['session']); @@ -770,15 +784,15 @@ function send_waiting_room(){ echo "$H[meta_html]"; }else{ header("Refresh: $C[defaultrefresh]; URL=$_SERVER[SCRIPT_NAME]?action=wait&session=$U[session]"); - echo "$H[meta_html]"; + echo "$H[meta_html]"; } print_stylesheet(); if($wait){ - echo "$H[begin_body]

$I[waitingroom]

".sprintf($I['waittext'], $U['displayname'], $timeleft).'


'.sprintf($I['waitreload'], $C['defaultrefresh']).'



'; + echo "

$I[waitingroom]

".sprintf($I['waittext'], $U['displayname'], $timeleft).'


'.sprintf($I['waitreload'], $C['defaultrefresh']).'



'; }else{ - echo "$H[begin_body]

$I[waitingroom]

".sprintf($I['admwaittext'], $U['displayname']).'


'.sprintf($I['waitreload'], $C['defaultrefresh']).'



'; + echo "

$I[waitingroom]

".sprintf($I['admwaittext'], $U['displayname']).'


'.sprintf($I['waitreload'], $C['defaultrefresh']).'



'; } - echo "
".hidden('action', 'wait').hidden('session', $U['session']).submit($I['reload']).'
'; + echo "
".hidden('action', 'wait').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['reload']).'
'; echo "

$I[rules]

".get_setting('rulestxt').'
'; print_end(); } @@ -786,8 +800,8 @@ function send_waiting_room(){ function send_choose_messages(){ global $H, $I, $U; - print_start(); - echo frmadm('clean').hidden('what', 'selected').submit($I['delselmes'], ' style="background-color:#660000;color:#FFFFFF;"').'

'; + print_start('choose_messages'); + echo frmadm('clean').hidden('what', 'selected').submit($I['delselmes'], 'class="delbutton"').'

'; print_messages($U['status']); echo "
$H[backtochat]"; print_end(); @@ -796,14 +810,14 @@ function send_choose_messages(){ function send_post(){ global $C, $I, $P, $U, $countmods; $U['postid']=substr(time(), -6); - print_start(); + print_start('post'); echo '
$I[sessnick]$I[sessua]
$temp[useragent]
"; thr(); - echo ""; + if(!isSet($_COOKIE[$C['cookiename']])) $session='&session=$U[session]'; else $session=''; + echo ""; thr(); - echo ""; + echo ""; thr(); if($U['status']>=3){ echo "
'.frmpst('post').hidden('postid', $U['postid']).@hidden('multi', $_REQUEST['multi']); echo ""; if(!isSet($U['rejected'])) $U['rejected']=''; if(isSet($_REQUEST['multi']) && $_REQUEST['multi']=='on'){ - echo ""; + echo ""; }else{ - echo ""; + echo ""; } echo '
$U[displayname]:'.submit($I['talkto']).'"; } echo '
'; - echo frmpst('delete', 'last').submit($I['dellast']).''.frmpst('delete', 'all').submit($I['delall']).''; + echo frmpst('delete', 'last').submit($I['dellast'], 'class="delbutton"').''.frmpst('delete', 'all').submit($I['delall'], 'class="delbutton"').''; if(isSet($_REQUEST['multi']) && $_REQUEST['multi']=='on'){ $switch=$I['switchsingle']; $multi=''; @@ -857,7 +871,7 @@ function send_post(){ function send_help(){ global $C, $H, $I, $U; - print_start(); + print_start('help'); echo "

$I[rules]

".get_setting('rulestxt')."


$I[help]

$I[helpguest]"; if($C['imgembed']) echo "
$I[helpembed]"; if($U['status']>=3){ @@ -867,15 +881,14 @@ function send_help(){ if($U['status']>=7) echo "
$I[helpadm]
"; } } - echo "

$H[backtochat]"; - print_credits(); + echo "

$H[backtochat]$H[credit]"; print_end(); } function send_profile($arg=''){ global $C, $F, $H, $I, $P, $U; - print_start(); - echo "
<$H[form]>".hidden('action', 'profile').hidden('do', 'save').hidden('session', $U['session'])."

$I[profile]

$arg"; + print_start('profile'); + echo "
<$H[form]>".hidden('action', 'profile').hidden('do', 'save').hidden('session', $U['session']).hidden('lang', $C['lang'])."

$I[profile]

$arg
"; thr(); array_multisort(array_map('strtolower', array_keys($P)), SORT_ASC, SORT_STRING, $P); $ignored=array(); @@ -911,13 +924,14 @@ function send_profile($arg=''){ thr(); } echo ""; + echo "
$I[refreshrate]"; - echo "
 
 
$I[fontcolour] ($I[viewexample])"; - echo "
 
$I[fontcolour] ($I[viewexample])"; + echo "
 
$I[bgcolour] ($I[viewexample])"; - echo "
 
$I[bgcolour] ($I[viewexample])"; + echo "
 
$I[fontface]"; @@ -956,14 +970,14 @@ function send_profile($arg=''){ thr(); } echo "'; thr(); if($U['status']>=5){ echo "'; thr(); } @@ -979,32 +993,31 @@ function send_profile($arg=''){ } function send_controls(){ - global $H, $I, $U; - print_start(); + global $C, $H, $I, $U; + print_start('controls'); echo '
$I[pbsize]"; - echo ""; - echo ""; + echo ""; + echo ""; echo '
 $I[width] $I[height]
 $I[width] $I[height]
$I[nbsize]"; - echo ""; - echo ""; + echo ""; + echo ""; echo '
 $I[width] $I[height]
 $I[width] $I[height]
'; - echo "'; - echo "'; - echo "'; - if($U['status']>=5) echo "'; - if($U['status']>=6) echo "'; - if($U['status']>=5) echo "'; - if($U['status']>=3) echo "'; - echo "'; - echo "'; + echo "'; + echo "'; + echo "'; + if($U['status']>=5) echo "'; + if($U['status']>=5) echo "'; + if($U['status']>=3) echo "'; + echo "'; + echo "'; echo '
<$H[form] target=\"post\">".hidden('action', 'post').hidden('session', $U['session']).submit($I['reloadpb']).'<$H[form] target=\"view\">".hidden('action', 'view').hidden('session', $U['session']).submit($I['reloadmsgs']).'<$H[form] target=\"view\">".hidden('action', 'profile').hidden('session', $U['session']).submit($I['chgprofile']).'<$H[form] target=\"view\">".hidden('action', 'admin').hidden('session', $U['session']).submit($I['adminbtn']).'<$H[form] target=\"view\">".hidden('action', 'admnotes').hidden('session', $U['session']).submit($I['admnotes']).'<$H[form] target=\"view\">".hidden('action', 'notes').hidden('session', $U['session']).submit($I['notes']).'<$H[form] target=\"_blank\">".hidden('action', 'login').hidden('session', $U['session']).submit($I['clone']).'<$H[form] target=\"view\">".hidden('action', 'help').hidden('session', $U['session']).submit($I['randh']).'<$H[form] target=\"_parent\">".hidden('action', 'logout').hidden('session', $U['session']).submit($I['exit']).'<$H[form] target=\"post\">".hidden('action', 'post').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['reloadpb']).'<$H[form] target=\"view\">".hidden('action', 'view').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['reloadmsgs']).'<$H[form] target=\"view\">".hidden('action', 'profile').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['chgprofile']).'<$H[form] target=\"view\">".hidden('action', 'admin').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['adminbtn']).'<$H[form] target=\"view\">".hidden('action', 'notes').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['notes']).'<$H[form] target=\"_blank\">".hidden('action', 'login').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['clone']).'<$H[form] target=\"view\">".hidden('action', 'help').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['randh']).'<$H[form] target=\"_parent\">".hidden('action', 'logout').hidden('session', $U['session']).hidden('lang', $C['lang']).submit($I['exit'], 'id="exitbutton"').'
'; print_end(); } function send_logout(){ global $H, $I, $U; - print_start(); + print_start('logout'); echo '

'.sprintf($I['bye'], $U['displayname'])."

$H[backtologin]
"; print_end(); } function send_colours(){ - global $H, $I; - print_start(); + global $C, $H, $I; + print_start('colours'); echo "

$I[colourtable]

"; for($red=0x00;$red<=0xFF;$red+=0x33){ for($green=0x00;$green<=0xFF;$green+=0x33){ @@ -1016,17 +1029,17 @@ function send_colours(){ } echo '
'; } - echo "
<$H[form]>".hidden('action', 'profile').hidden('session', $_REQUEST['session']).submit($I['backtoprofile'], ' style="background-color:#004400;color:#FFFFFF;"').'
'; + echo "<$H[form]>".hidden('action', 'profile').hidden('session', $_REQUEST['session']).hidden('lang', $C['lang']).submit($I['backtoprofile'], ' class="backbutton"').''; print_end(); } function send_login(){ global $C, $H, $I, $L; setcookie('test', '1'); - print_start(); + print_start('login'); $ga=get_setting('guestaccess'); $englobal=get_setting('englobalpass'); - echo "

$C[chatname]

<$H[form] target=\"_parent\">".hidden('action', 'login'); + echo "

$C[chatname]

<$H[form] target=\"_parent\">".hidden('action', 'login').hidden('lang', $C['lang']); if($englobal==1 && isSet($_POST['globalpass'])) echo hidden('globalpass', $_POST['globalpass']); echo ''; if($englobal!=1 || (isSet($_POST['globalpass']) && $_POST['globalpass']==get_setting('globalpass'))){ @@ -1034,7 +1047,7 @@ function send_login(){ echo ""; send_captcha(); if($ga!=0){ - if($englobal!=0) echo ""; + if($englobal==2) echo ""; echo "'; @@ -1053,25 +1066,24 @@ function send_login(){ foreach($L as $lang=>$name){ echo " $name"; } - echo '

'; - print_credits(); + echo "

$H[credit]"; print_end(); } function send_error($err){ global $H, $I; - print_start('body{color:#FF0033;}'); + print_start('error'); echo "

$I[error] $err

$H[backtologin]"; print_end(); } function print_chatters(){ - global $C, $G, $H, $I, $M, $U, $mysqli; + global $C, $G, $I, $M, $U, $mysqli; echo '
$I[pass]
$I[globalloginpass]
$I[globalloginpass]
$I[choosecol]
'; if($U['status']>=5 && get_setting('guestaccess')==3){ $result=mysqli_query($mysqli, "SELECT COUNT(*) FROM `$C[prefix]sessions` WHERE `entry`!='0' AND `status`='1'"); $temp=mysqli_fetch_array($result, MYSQLI_NUM); - if($temp[0]>0) echo "'; + if($temp[0]>0) echo ''; } if(!empty($M)){ echo "'; @@ -1121,7 +1133,7 @@ function create_session($setup){ $memcached->delete("$C[dbname]-$C[prefix]captcha-$_REQUEST[challenge]"); } if($_REQUEST['captcha']!=$code) send_error($I['wrongcaptcha']); - $timeout=time()-$C['captchatime']; + $timeout=time()-get_setting('captchatime'); $stmt=mysqli_prepare($mysqli, "DELETE FROM `$C[prefix]captcha` WHERE `id`=? OR `time`=3 && !$U['incognito']) add_system_message(sprintf(get_setting('msgenter'), $U['displayname'])); + if($U['status']>=3 && !$U['incognito']) add_system_message(sprintf(get_setting('msgenter'), $U['displayname'])); }elseif($inuse){ send_error($I['wrongpass']); }elseif($U['status']==0){ @@ -1193,14 +1208,14 @@ function approve_session(){ } mysqli_stmt_close($stmt); }elseif($_REQUEST['what']=='denychecked' && isSet($_REQUEST['csid'])){ - $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `lastpost`='".(60*($C['kickpenalty']-$C['guestsexpire'])+time())."', `status`='0', `kickmessage`=? WHERE `nickname`=? AND `status`='1'"); + $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `lastpost`='".(60*(get_setting('kickpenalty')-get_setting('guestexpire'))+time())."', `status`='0', `kickmessage`=? WHERE `nickname`=? AND `status`='1'"); foreach($_REQUEST['csid'] as $nick){ mysqli_stmt_bind_param($stmt, 'ss', $_REQUEST['kickmessage'], $nick); mysqli_stmt_execute($stmt); } mysqli_stmt_close($stmt); }elseif($_REQUEST['what']=='denyall' && isSet($_REQUEST['alls'])){ - $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `lastpost`='".(60*($C['kickpenalty']-$C['guestsexpire'])+time())."', `status`='0', `kickmessage`=? WHERE `nickname`=? AND `status`='1'"); + $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `lastpost`='".(60*(get_setting('kickpenalty')-get_setting('guestexpire'))+time())."', `status`='0', `kickmessage`=? WHERE `nickname`=? AND `status`='1'"); foreach($_REQUEST['alls'] as $nick){ mysqli_stmt_bind_param($stmt, 'ss', $_REQUEST['kickmessage'], $nick); mysqli_stmt_execute($stmt); @@ -1211,13 +1226,13 @@ function approve_session(){ } function check_login(){ - global $C, $I, $M, $U, $mysqli; + global $C, $I, $U, $mysqli; $ga=get_setting('guestaccess'); if(isSet($_POST['session'])){ - $stmt=mysqli_prepare($mysqli, "SELECT `session`, `nickname`, `displayname`, `status`, `refresh`, `fontinfo`, `style`, `lastpost`, `passhash`, `postid`, `boxwidth`, `boxheight`, `useragent`, `kickmessage`, `bgcolour`, `notesboxheight`, `notesboxwidth`, `entry`, `timestamps`, `embed`, `incognito` FROM `$C[prefix]sessions` WHERE `session`=?"); + $stmt=mysqli_prepare($mysqli, "SELECT `session`, `nickname`, `displayname`, `status`, `refresh`, `fontinfo`, `style`, `lastpost`, `passhash`, `postid`, `boxwidth`, `boxheight`, `kickmessage`, `bgcolour`, `notesboxheight`, `notesboxwidth`, `entry`, `timestamps`, `embed`, `incognito` FROM `$C[prefix]sessions` WHERE `session`=?"); mysqli_stmt_bind_param($stmt, 's', $_POST['session']); mysqli_stmt_execute($stmt); - mysqli_stmt_bind_result($stmt, $U['session'], $U['nickname'], $U['displayname'], $U['status'], $U['refresh'], $U['fontinfo'], $U['style'], $U['lastpost'], $U['passhash'], $U['postid'], $U['boxwidth'], $U['boxheight'], $U['useragent'], $U['kickmessage'], $U['bgcolour'], $U['notesboxheight'], $U['notesboxwidth'], $U['entry'], $U['timestamps'], $U['embed'], $U['incognito']); + mysqli_stmt_bind_result($stmt, $U['session'], $U['nickname'], $U['displayname'], $U['status'], $U['refresh'], $U['fontinfo'], $U['style'], $U['lastpost'], $U['passhash'], $U['postid'], $U['boxwidth'], $U['boxheight'], $U['kickmessage'], $U['bgcolour'], $U['notesboxheight'], $U['notesboxwidth'], $U['entry'], $U['timestamps'], $U['embed'], $U['incognito']); if(mysqli_stmt_fetch($stmt)){ mysqli_stmt_close($stmt); if($U['status']==0){ @@ -1232,13 +1247,15 @@ function check_login(){ send_error($I['expire']); } - }elseif(get_setting('englobalpass')==1 && ((!isSet($_POST['globalpass']) || $_POST['globalpass']!=get_setting('globalpass')) || !(isSet($_REQUEST['nick']) && isSet($_REQUEST['pass'])))){ + }elseif(get_setting('englobalpass')==1 && (!isSet($_POST['globalpass']) || $_POST['globalpass']!=get_setting('globalpass'))){ + send_error($I['wrongglobalpass']); + }elseif(!isSet($_REQUEST['nick']) || !isSet($_REQUEST['pass'])){ send_login(); }else{ create_session(false); } if($U['status']==1){ - if(($ga==2 || $ga==3) && count($M)>0){ + if($ga==2 || $ga==3){ $U['entry']=time(); $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `entry`=? WHERE `session`=?"); mysqli_stmt_bind_param($stmt, 'is', $U['entry'], $U['session']); @@ -1275,21 +1292,21 @@ function kill_session(){ mysqli_stmt_close($stmt); if($C['memcached']) $memcached->delete("$C[dbname]-$C[prefix]ignored"); } - elseif($C['msglogout'] && $U['status']>=3 && !$U['incognito']) add_system_message(sprintf(get_setting('msgexit'), $U['displayname'])); + elseif($U['status']>=3 && !$U['incognito']) add_system_message(sprintf(get_setting('msgexit'), $U['displayname'])); } function kick_chatter($names, $mes, $purge){ global $C, $P, $U, $mysqli; $lonick=''; $lines=parse_sessions(); - $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `lastpost`='".(60*($C['kickpenalty']-$C['guestsexpire'])+time())."', `status`='0', `kickmessage`=? WHERE `session`=? AND `status`!='0'"); + $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]sessions` SET `lastpost`='".(60*(get_setting('kickpenalty')-get_setting('guestexpire'))+time())."', `status`='0', `kickmessage`=? WHERE `session`=? AND `status`!='0'"); $i=0; foreach($names as $name){ foreach($lines as $temp){ if(($temp['nickname']==$U['nickname'] && $U['nickname']==$name) || ($U['status']>$temp['status'] && (($temp['nickname']==$name && $temp['status']>0) || ($name=='&' && $temp['status']==1)))){ mysqli_stmt_bind_param($stmt, 'ss', $mes, $temp['session']); mysqli_stmt_execute($stmt); - if($purge) del_all_messages($temp['nickname']); + if($purge) del_all_messages($temp['nickname'], 10); $lonick.="$temp[displayname], "; ++$i; unset($P[$name]); @@ -1297,17 +1314,15 @@ function kick_chatter($names, $mes, $purge){ } } mysqli_stmt_close($stmt); - if($C['msgkick']){ - if(!empty($lonick)){ - if($names[0]=='&'){ - add_system_message(get_setting('msgallkick')); + if(!empty($lonick)){ + if($names[0]=='&'){ + add_system_message(get_setting('msgallkick')); + }else{ + $lonick=preg_replace('/\,\s$/','',$lonick); + if($i>1){ + add_system_message(sprintf(get_setting('msgmultikick'), $lonick)); }else{ - $lonick=preg_replace('/\,\s$/','',$lonick); - if($i>1){ - add_system_message(sprintf(get_setting('msgmultikick'), $lonick)); - }else{ - add_system_message(sprintf(get_setting('msgkick'), $lonick)); - } + add_system_message(sprintf(get_setting('msgkick'), $lonick)); } } } @@ -1384,7 +1399,7 @@ function get_nowchatting(){ function parse_sessions(){ global $C, $G, $M, $P, $U, $countmods, $memcached, $mysqli; - $result=mysqli_query($mysqli, "SELECT `nickname`, `status`, `session` FROM `$C[prefix]sessions` WHERE (`lastpost`<'".(time()-60*$C['guestsexpire'])."' AND `status`<='2') OR (`lastpost`<'".(time()-60*$C['sessionexpire'])."' AND `status`>'2')"); + $result=mysqli_query($mysqli, "SELECT `nickname`, `status`, `session` FROM `$C[prefix]sessions` WHERE (`lastpost`<'".(time()-60*get_setting('guestexpire'))."' AND `status`<='2') OR (`lastpost`<'".(time()-60*get_setting('memberexpire'))."' AND `status`>'2')"); if(mysqli_num_rows($result)>0){ $stmt=mysqli_prepare($mysqli, "DELETE FROM `$C[prefix]sessions` WHERE `nickname`=?"); $stmt1=mysqli_prepare($mysqli, "UPDATE `$C[prefix]messages` SET `poster`='' WHERE `poster`=? AND `poststatus`='9'"); @@ -1527,10 +1542,10 @@ function register_new(){ 'refresh' =>$C['defaultrefresh'], 'colour' =>$C['coltxt'], 'bgcolour' =>$C['colbg'], - 'boxwidth' =>$C['boxwidth'], - 'boxheight' =>$C['boxheight'], - 'notesboxwidth' =>$C['notesboxwidth'], - 'notesboxheight'=>$C['notesboxheight'], + 'boxwidth' =>40, + 'boxheight' =>3, + 'notesboxwidth' =>80, + 'notesboxheight'=>30, 'regedby' =>$U['nickname'], 'timestamps' =>$C['timestamps'], 'embed' =>$C['embed'], @@ -1589,8 +1604,8 @@ function amend_profile(){ global $C, $F, $U; if(isSet($_REQUEST['refresh'])) $U['refresh']=$_REQUEST['refresh']; else $U['refresh']=$C['defaultrefresh']; - if($U['refresh']<20) $U['refresh']=20; - if($U['refresh']>150) $U['refresh']=150; + if($U['refresh']<5) $U['refresh']=5; + elseif($U['refresh']>150) $U['refresh']=150; if(preg_match('/^[a-f0-9]{6}$/i', $_REQUEST['colour'])) $U['colour']=$_REQUEST['colour']; else $U['colour']=$C['coltxt']; if(preg_match('/^[a-f0-9]{6}$/i', $_REQUEST['bgcolour'])) $U['bgcolour']=$_REQUEST['bgcolour']; @@ -1611,7 +1626,7 @@ function amend_profile(){ else $U['timestamps']=false; if(isSet($_REQUEST['embed'])) $U['embed']=true; else $U['embed']=false; - if($U['status']>=5 && isSet($_REQUEST['incognito'])) $U['incognito']=true; + if($U['status']>=5 && isSet($_REQUEST['incognito']) && $C['incognito']) $U['incognito']=true; else $U['incognito']=false; if($U['boxwidth']>=1000) $U['boxwidth']=40; if($U['boxheight']>=1000) $U['boxheight']=3; @@ -1665,9 +1680,9 @@ function save_profile(){ function add_user_defaults(){ global $C, $F, $H, $U; - if(isSet($_SERVER['HTTP_USER_AGENT'])) $U['useragent']=htmlspecialchars($_SERVER['HTTP_USER_AGENT']); - else $U['useragent']=''; if(!isSet($U['refresh'])) $U['refresh']=$C['defaultrefresh']; + if($U['refresh']<5) $U['refresh']=5; + elseif($U['refresh']>150) $U['refresh']=150; if(!isSet($U['fontinfo'])){ if(!preg_match('/^[a-f0-9]{6}$/i', $U['colour'])){ $U['colour']=$C['coltxt']; @@ -1678,8 +1693,8 @@ function add_user_defaults(){ $U['fontinfo']="#$U[colour]"; @$U['fontinfo'].=" {$F[$U['fontface']]} <$U[fonttags]>"; } - if(!isSet($U['bgcolour']) || !preg_match('/^[a-f0-9]{6}$/i', $U['bgcolour'])) $U['bgcolour']=$C['colbg']; - $H['begin_body']=""; + if(!isSet($U['bgcolour'])) $U['bgcolour']=$C['colbg']; + $H['begin_body']="body style=\"background-color:#$U[bgcolour];\""; if(!isSet($U['colour'])){ preg_match('/([0-9a-f]{6})/i', $U['fontinfo'], $matches); $U['colour']=$matches[0]; @@ -1701,9 +1716,10 @@ function add_user_defaults(){ // message handling function validate_input(){ - global $C, $P, $U; - $U['message']=substr($_REQUEST['message'], 0, $C['maxmessage']); - $U['rejected']=substr($_REQUEST['message'], $C['maxmessage']); + global $P, $U; + $maxmessage=get_setting('maxmessage'); + $U['message']=substr($_REQUEST['message'], 0, $maxmessage); + $U['rejected']=substr($_REQUEST['message'], $maxmessage); if(preg_match('/&[^;]{0,8}$/', $U['message']) && preg_match('/^([^;]{0,8};)/', $U['rejected'], $match)){ $U['message'].=$match[0]; $U['rejected']=preg_replace("/^$match[0]", '', $U['rejected']); @@ -1716,7 +1732,7 @@ function validate_input(){ $U['message']=preg_replace("/\r\n/", '
', $U['message']); $U['message']=preg_replace("/\n/", '
', $U['message']); $U['message']=preg_replace("/\r/", '
', $U['message']); - if($_REQUEST['multi']=='on'){ + if(isSet($_REQUEST['multi']) && $_REQUEST['multi']=='on'){ $U['message']=preg_replace('/
(
)+/', '

', $U['message']); $U['message']=preg_replace('/

$/', '
', $U['message']); }else{ @@ -1775,9 +1791,10 @@ function validate_input(){ function apply_filter(){ global $C, $I, $U, $memcached, $mysqli; if($U['poststatus']!=9 && preg_match('~^/me~i', $U['message'])){ - $U['displaysend']=substr($U['displaysend'], 0, -2); + $U['displaysend']=substr($U['displaysend'], 0, -3); $U['message']=preg_replace("~^/me~i", '', $U['message']); } + $U['message']=preg_replace_callback("/\@([a-z0-9]{1,$C[maxname]})/i", function ($matched){ global $P; if(isSet($P[$matched[1]])) return style_this($matched[0], $P[$matched[1]][2]); else return "$matched[0]";}, $U['message']); if($C['memcached']) $filters=$memcached->get("$C[dbname]-$C[prefix]filter"); if(!$C['memcached'] || $memcached->getResultCode()!=Memcached::RES_SUCCESS){ $filters=array(); @@ -1805,13 +1822,13 @@ function create_hotlinks(){ $U['message']=preg_replace('~((?:[^\s<>]*:[^\s<>]*@)?[a-z0-9\-]+(?:\.[a-z0-9\-]+)+:\d+)(?![^<>]*>)~i', "<<$1>>", $U['message']); // server:port given $U['message']=preg_replace('~([^\s<>]*:[^\s<>]*@[a-z0-9\-]+(?:\.[a-z0-9\-]+)+(?::\d+)?)(?![^<>]*>)~i', "<<$1>>", $U['message']); // au:th@server given // 3. likely servers without any hints but not filenames like *.rar zip exe etc. - $U['message']=preg_replace('~((?:[a-z0-9\-]+\.)*[a-z0-9]{16}\.onion)(?![^<>]*>)~i', "<<$1>>", $U['message']);// *.onion + $U['message']=preg_replace('~((?:[a-z0-9\-]+\.)*[a-z2-7]{16}\.onion)(?![^<>]*>)~i', "<<$1>>", $U['message']);// *.onion $U['message']=preg_replace('~([a-z0-9\-]+(?:\.[a-z0-9\-]+)+(?:\.(?!rar|zip|exe|gz|7z|bat|doc)[a-z]{2,}))(?=[^a-z0-9\-\.]|$)(?![^<>]*>)~i', "<<$1>>", $U['message']);// xxx.yyy.zzz // Convert every <<....>> into proper links: $U['message']=preg_replace_callback('/<<([^<>]+)>>/', function ($matches){if(strpos($matches[1], '://')==false){ return "$matches[1]";}else{ return "$matches[1]"; }}, $U['message']); if($C['imgembed']) $U['message']=preg_replace_callback('/\[img\]\s?(.*?(?=<\/a>))<\/a>/i', function ($matched){ return str_ireplace('[/img]', '', "

");}, $U['message']); if($C['forceredirect']) $U['message']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/', function ($matched){ global $C; return "$matched[2]";}, $U['message']); - if(preg_match_all('/(.*?(?=<\/a>))<\/a>/', $U['message'], $matches)){ + elseif(preg_match_all('/(.*?(?=<\/a>))<\/a>/', $U['message'], $matches)){ foreach($matches[1] as $match){ if(!preg_match('~^http(s)?://~', $match)){ $U['message']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/', function ($matched){ global $C; return "$matched[2]";}, $U['message']); @@ -1826,7 +1843,7 @@ function add_message(){ if(empty($U['message'])) return false; $newmessage=array( 'postdate' =>time(), - 'poststatus'=>$U['poststatus'], + 'poststatus' =>$U['poststatus'], 'poster' =>$U['nickname'], 'recipient' =>$U['recipient'], 'text' =>$U['displaysend'].style_this($U['message'], $U['fontinfo']), @@ -1837,6 +1854,7 @@ function add_message(){ } function add_system_message($mes){ + if(empty($mes)) return; $sysmessage=array( 'postdate' =>time(), 'poststatus' =>1, @@ -1849,13 +1867,13 @@ function add_system_message($mes){ } function write_message($message){ - global $C, $H, $mysqli; - if($C['msgencrypted']) $message['text']=openssl_encrypt($message['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); + global $C, $mysqli; + if($C['msgencrypted']) $message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); $stmt=mysqli_prepare($mysqli, "INSERT INTO `$C[prefix]messages` (`postdate`, `poststatus`, `poster`, `recipient`, `text`, `delstatus`) VALUES (?, ?, ?, ?, ?, ?)"); mysqli_stmt_bind_param($stmt, 'iisssi', $message['postdate'], $message['poststatus'], $message['poster'], $message['recipient'], $message['text'], $message['delstatus']); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); - $limit=$C['keeplimit']*$C['messagelimit']; + $limit=$C['keeplimit']*get_setting('messagelimit'); $stmt=mysqli_prepare($mysqli, "DELETE FROM `$C[prefix]messages` WHERE `id` NOT IN (SELECT `id` FROM (SELECT `id` FROM `$C[prefix]messages` ORDER BY `id` DESC LIMIT ?) t )"); mysqli_stmt_bind_param($stmt, 'i', $limit); mysqli_stmt_execute($stmt); @@ -1863,7 +1881,7 @@ function write_message($message){ if($C['sendmail'] && $message['poststatus']<9){ $subject='New Chat message'; $headers="From: $C[mailsender]\r\nX-Mailer: PHP/".phpversion()."\r\nContent-Type: text/html; charset=UTF-8\r\n"; - $body="$H[begin_body]$message[text]"; + $body="$message[text]"; mail($C['mailreceiver'], $subject, $body, $headers); } } @@ -1871,12 +1889,14 @@ function write_message($message){ function clean_room(){ global $C, $mysqli; mysqli_query($mysqli, "DELETE FROM `$C[prefix]messages`"); + $msg=get_setting('msgclean'); + if(empty($msg)) return; $sysmessage=array( 'postdate' =>time(), 'poster' =>'', 'recipient' =>'', 'poststatus' =>1, - 'text' =>sprintf(get_setting('msgclean'), $C['chatname']), + 'text' =>sprintf($msg, $C['chatname']), 'delstatus' =>9 ); write_message($sysmessage); @@ -1894,10 +1914,10 @@ function clean_selected(){ } } -function del_all_messages($nick){ +function del_all_messages($nick, $status){ global $C, $mysqli; - $stmt=mysqli_prepare($mysqli, "DELETE FROM `$C[prefix]messages` WHERE `poster`=?"); - mysqli_stmt_bind_param($stmt, 's', $nick); + $stmt=mysqli_prepare($mysqli, "DELETE FROM `$C[prefix]messages` WHERE `poster`=? AND `delstatus`'1' AND (`poststatus`'1' AND (`poststatus`(.*?(?=<\/a>))<\/a>/', function ($matched){ global $C; return "$matched[2]";}, $message['text']); + } + if($removeEmbed){ + $message['text']=preg_replace_callback('//', function ($matched){ return $matched[1];}, $message['text']); + } echo "
"; } }else{ @@ -1933,18 +1962,16 @@ function print_messages($delstatus=''){ "OR (`poststatus`>'1' AND `poststatus`<=?) ". "OR (`poststatus`='9' AND ( (`poster`=? AND `recipient` NOT IN (SELECT `ignored` FROM `$C[prefix]ignored` WHERE `by`=?) ) OR `recipient`=?) )". ") AND `poster` NOT IN (SELECT `ignored` FROM `$C[prefix]ignored` WHERE `by`=?) ORDER BY `id` DESC"); - mysqli_stmt_bind_param($stmt, 'iissss', $C['messagelimit'], $U['status'], $U['nickname'], $U['nickname'], $U['nickname'], $U['nickname']); + mysqli_stmt_bind_param($stmt, 'iissss', $messagelimit, $U['status'], $U['nickname'], $U['nickname'], $U['nickname'], $U['nickname']); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $message['postdate'], $message['text']); - if(!isSet($_COOKIE[$C['cookiename']]) && !$C['forceredirect']) $injectRedirect=true; else $injectRedirect=false; - if(!$U['embed'] || !isSet($_COOKIE[$C['cookiename']])) $removeEmbed=true; else $removeEmbed=false; while(mysqli_stmt_fetch($stmt)){ - if($C['msgencrypted']) $message['text']=openssl_decrypt($message['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); + if($C['msgencrypted']) $message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); if($injectRedirect){ $message['text']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/', function ($matched){ global $C; return "$matched[2]";}, $message['text']); } if($removeEmbed){ - $message['text']=preg_replace_callback("//", function ($matched){ return $matched[1];}, $message['text']); + $message['text']=preg_replace_callback('//', function ($matched){ return $matched[1];}, $message['text']); } if($U['timestamps']) echo ''.date($dateformat, $message['postdate']).' - '; echo "$message[text]
"; @@ -1997,9 +2024,8 @@ function cleanup_nick($nick){ } function get_timeout($lastpost, $status){ // lastpost, status - global $C; - if($status>2) $expire=$C['sessionexpire']; - else $expire=$C['guestsexpire']; + if($status>2) $expire=get_setting('memberexpire'); + else $expire=get_setting('guestexpire'); $s=($lastpost+60*$expire)-time(); $m=$s/60;$m=floor($m);$s-=$m*60; $h=$m/60;$h=floor($h);$m-=$h*60; @@ -2125,7 +2151,7 @@ function init_chat(){ "CREATE TABLE IF NOT EXISTS `$C[prefix]members` (`id` tinyint(3) unsigned NOT NULL, `nickname` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `passhash` tinytext NOT NULL, `status` tinyint(3) unsigned NOT NULL, `refresh` tinyint(3) unsigned NOT NULL, `colour` tinytext NOT NULL, `bgcolour` tinytext NOT NULL, `fontface` tinytext NOT NULL, `fonttags` tinytext NOT NULL, `boxwidth` tinyint(3) unsigned NOT NULL, `boxheight` tinyint(3) unsigned NOT NULL, `notesboxheight` tinyint(3) unsigned NOT NULL, `notesboxwidth` tinyint(3) unsigned NOT NULL, `regedby` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `lastlogin` int(10) unsigned NOT NULL, `timestamps` tinyint(1) unsigned NOT NULL, `embed` tinyint(1) unsigned NOT NULL, `incognito` tinyint(1) unsigned NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ". "CREATE TABLE IF NOT EXISTS `$C[prefix]messages` (`id` int(10) unsigned NOT NULL, `postdate` int(10) unsigned NOT NULL, `poststatus` tinyint(3) unsigned NOT NULL, `poster` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `recipient` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `text` text NOT NULL, `delstatus` tinyint(3) unsigned NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ". "CREATE TABLE IF NOT EXISTS `$C[prefix]notes` (`id` int(10) unsigned NOT NULL, `type` tinytext NOT NULL, `lastedited` int(10) unsigned NOT NULL, `editedby` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `text` text NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ". - "CREATE TABLE IF NOT EXISTS `$C[prefix]sessions` (`id` int(10) unsigned NOT NULL, `session` tinytext NOT NULL, `nickname` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `displayname` text NOT NULL, `status` tinyint(3) unsigned NOT NULL, `refresh` tinyint(3) unsigned NOT NULL, `fontinfo` tinytext NOT NULL, `style` text NOT NULL, `lastpost` int(10) unsigned NOT NULL, `passhash` tinytext NOT NULL, `postid` int(10) unsigned NOT NULL, `boxwidth` tinyint(3) unsigned NOT NULL, `boxheight` tinyint(3) unsigned NOT NULL, `useragent` text NOT NULL, `kickmessage` text NOT NULL, `bgcolour` tinytext NOT NULL, `notesboxheight` tinyint(3) unsigned NOT NULL, `notesboxwidth` tinyint(3) unsigned NOT NULL, `entry` int(10) unsigned NOT NULL, `timestamps` tinyint(1) unsigned NOT NULL, `embed` tinyint(1) unsigned NOT NULL, `incognito` tinyint(1) unsigned NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ". + "CREATE TABLE IF NOT EXISTS `$C[prefix]sessions` (`id` int(10) unsigned NOT NULL, `session` tinytext NOT NULL, `nickname` tinytext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `displayname` text NOT NULL, `status` tinyint(3) unsigned NOT NULL, `refresh` tinyint(3) unsigned NOT NULL, `fontinfo` tinytext NOT NULL, `style` text NOT NULL, `lastpost` int(10) unsigned NOT NULL, `passhash` tinytext NOT NULL, `postid` int(10) unsigned NOT NULL, `boxwidth` tinyint(3) unsigned NOT NULL, `boxheight` tinyint(3) unsigned NOT NULL, `useragent` text NOT NULL, `kickmessage` text NOT NULL, `bgcolour` tinytext NOT NULL, `notesboxheight` tinyint(3) unsigned NOT NULL, `notesboxwidth` tinyint(3) unsigned NOT NULL, `entry` int(10) unsigned NOT NULL, `timestamps` tinyint(1) unsigned NOT NULL, `embed` tinyint(1) unsigned NOT NULL, `incognito` tinyint(1) unsigned NOT NULL, `ip` tinytext NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ". "CREATE TABLE IF NOT EXISTS `$C[prefix]settings` (`id` tinyint(3) unsigned NOT NULL, `setting` tinytext NOT NULL, `value` text NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ". "ALTER TABLE `$C[prefix]captcha` ADD UNIQUE KEY `id` (`id`); ". "ALTER TABLE `$C[prefix]filter` ADD PRIMARY KEY (`id`); ". @@ -2142,23 +2168,8 @@ function init_chat(){ "ALTER TABLE `$C[prefix]notes` MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT; ". "ALTER TABLE `$C[prefix]sessions` MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT; ". "ALTER TABLE `$C[prefix]settings` MODIFY `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT; ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('guestaccess','0'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('globalpass',''); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('englobalpass','0'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('captcha','0'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('dateformat','m-d H:i:s'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('rulestxt', '1. YOUR_RULS
2. YOUR_RULES'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgencrypted','0'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgenter','%s entered the chat.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgexit','%s left the chat.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgmemreg','%s is now a registered member.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgsureg','%s is now a registered applicant.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgkick','%s has been kicked.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgmultikick','%s have been kicked.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgallkick','All chatters have been kicked.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('msgclean','%s has been cleaned.'); ". - "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('dbversion','$C[dbversion]');"); - while(mysqli_next_result($mysqli)) {;} + "INSERT INTO `$C[prefix]settings` (`setting`,`value`) VALUES ('guestaccess','0'), ('globalpass',''), ('englobalpass','0'), ('captcha','0'), ('dateformat','m-d H:i:s'), ('rulestxt', ''), ('msgencrypted','0'), ('msgenter','%s entered the chat.'), ('msgexit','%s left the chat.'), ('msgmemreg','%s is now a registered member.'), ('msgsureg','%s is now a registered applicant.'), ('msgkick','%s has been kicked.'), ('msgmultikick','%s have been kicked.'), ('msgallkick','All chatters have been kicked.'), ('msgclean','%s has been cleaned.'), ('dbversion','$C[dbversion]'), ('css','a:visited{color:#B33CB4;} a:active{color:#FF0033;} a:link{color:#0000FF;} input,select,textarea{color:#FFFFFF;background-color:#000000;} a img{width:15%} a:hover img{width:35%} .error{color:#FF0033;} .delbutton{background-color:#660000;} .backbutton{background-color:#004400;} #exitbutton{background-color:#AA0000;}'), ('memberexpire','60'), ('guestexpire', '15'), ('kickpenalty', '10'), ('entrywait', '120'), ('messageexpire', '14400'), ('messagelimit', '150'), ('maxmessage', 2000), ('captchatime', '600');"); + while(mysqli_more_results($mysqli)) mysqli_next_result($mysqli); $reg=array( 'nickname' =>$_REQUEST['sunick'], 'passhash' =>md5(sha1(md5($_REQUEST['sunick'].$_REQUEST['supass']))), @@ -2166,10 +2177,10 @@ function init_chat(){ 'refresh' =>$C['defaultrefresh'], 'colour' =>$C['coltxt'], 'bgcolour' =>$C['colbg'], - 'boxwidth' =>$C['boxwidth'], - 'boxheight' =>$C['boxheight'], - 'notesboxwidth' =>$C['notesboxwidth'], - 'notesboxheight'=>$C['notesboxheight'], + 'boxwidth' =>40, + 'boxheight' =>3, + 'notesboxwidth' =>80, + 'notesboxheight'=>30, 'timestamps' =>$C['timestamps'], 'embed' =>$C['embed'], 'incognito' =>false @@ -2180,10 +2191,9 @@ function init_chat(){ mysqli_stmt_close($stmt); $suwrite=$I['susuccess']; } - print_start(); + print_start('init'); echo "

$I[init]


$I[sulogin]

$suwrite


"; - echo "<$H[form]>".hidden('action', 'setup').submit($I['initgosetup']).''; - print_credits(); + echo "<$H[form]>".hidden('action', 'setup').hidden('lang', $C['lang']).submit($I['initgosetup'])."$H[credit]"; print_end(); } @@ -2197,7 +2207,7 @@ function update_db(){ mysqli_query($mysqli, "ALTER TABLE `$C[prefix]ignored` MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT"); } if($dbversion<3){ - mysqli_query($mysqli, "INSERT INTO `$C[prefix]settings` (`setting`, `value`) VALUES ('rulestxt', '1. YOUR_RULS
2. YOUR_RULES')"); + mysqli_query($mysqli, "INSERT INTO `$C[prefix]settings` (`setting`, `value`) VALUES ('rulestxt', '')"); } if($dbversion<4){ mysqli_query($mysqli, "ALTER TABLE `$C[prefix]members` ADD `incognito` TINYINT(1) UNSIGNED NOT NULL"); @@ -2213,8 +2223,7 @@ function update_db(){ mysqli_query($mysqli, "ALTER TABLE `$C[prefix]captcha` ADD `code` TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL"); } if($dbversion<8){ - mysqli_query($mysqli, "INSERT INTO `$C[prefix]settings` (`setting`, `value`) VALUES ('captcha', '0')"); - mysqli_query($mysqli, "INSERT INTO `$C[prefix]settings` (`setting`, `value`) VALUES ('englobalpass', '0')"); + mysqli_query($mysqli, "INSERT INTO `$C[prefix]settings` (`setting`, `value`) VALUES ('captcha', '0'), ('englobalpass', '0')"); $ga=get_setting('guestaccess'); if($ga==-1){ update_setting('guestaccess', 0); @@ -2229,12 +2238,17 @@ function update_db(){ mysqli_query($mysqli, "ALTER TABLE `$C[prefix]settings` CHANGE `value` `value` text NOT NULL"); mysqli_query($mysqli, "ALTER TABLE `$C[prefix]messages` DROP `postid`"); } + + if($dbversion<10){ + mysqli_query($mysqli, "INSERT INTO `$C[prefix]settings` (`setting`, `value`) VALUES ('css', 'a:visited{color:#B33CB4;} a:active{color:#FF0033;} a:link{color:#0000FF;} input,select,textarea{color:#FFFFFF;background-color:#000000;} a img{width:15%} a:hover img{width:35%} .error{color:#FF0033;} .delbutton{background-color:#660000;} .backbutton{background-color:#004400;} #exitbutton{background-color:#AA0000;}'), ('memberexpire', '60'), ('guestexpire', '15'), ('kickpenalty', '10'), ('entrywait', '120'), ('messageexpire', '14400'), ('messagelimit', '150'), ('maxmessage', 2000), ('captchatime', '600')"); + mysqli_query($mysqli, "ALTER TABLE `$C[prefix]sessions` ADD `ip` TINYTEXT NOT NULL"); + } if(get_setting('msgencrypted')!=$C['msgencrypted']){ $result=mysqli_query($mysqli, "SELECT `id`, `text` FROM `$C[prefix]messages`"); $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]messages` SET `text`=? WHERE `id`=?"); while($message=mysqli_fetch_array($result, MYSQLI_ASSOC)){ - if($C['msgencrypted']) $message['text']=openssl_encrypt($message['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); - else $message['text']=openssl_decrypt($message['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); + if($C['msgencrypted']) $message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); + else $message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); mysqli_stmt_bind_param($stmt, 'si', $message['text'], $message['id']); mysqli_stmt_execute($stmt); } @@ -2242,8 +2256,8 @@ function update_db(){ $result=mysqli_query($mysqli, "SELECT `id`, `text` FROM `$C[prefix]notes`"); $stmt=mysqli_prepare($mysqli, "UPDATE `$C[prefix]notes` SET `text`=? WHERE `id`=?"); while($message=mysqli_fetch_array($result, MYSQLI_ASSOC)){ - if($C['msgencrypted']) $message['text']=openssl_encrypt($message['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); - else $message['text']=openssl_decrypt($message['text'], "aes-256-cbc", $C['encryptkey'], 0, '1234567890123456'); + if($C['msgencrypted']) $message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); + else $message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456'); mysqli_stmt_bind_param($stmt, 'si', $message['text'], $message['id']); mysqli_stmt_execute($stmt); } @@ -2315,13 +2329,14 @@ function load_fonts(){ function load_html(){ global $C, $H, $I; $H=array(// default HTML - 'begin_body' =>"", + 'begin_body' =>"body", 'form' =>"form action=\"$_SERVER[SCRIPT_NAME]\" method=\"post\" style=\"margin:0;padding:0;\"", - 'meta_html' =>"$C[chatname]" + 'meta_html' =>"$C[chatname]", + 'credit' =>"

LE CHAT-PHP - $C[version]
" ); $H=$H+array( - 'backtologin' =>"<$H[form] target=\"_parent\">".submit($I['backtologin'], ' style="background-color:#004400;color:#FFFFFF;"').'', - 'backtochat' =>"<$H[form]>".hidden('action', 'view').@hidden('session', $_REQUEST['session']).submit($I['backtochat'], ' style="background-color:#004400;color:#FFFFFF;"').'' + 'backtologin' =>"<$H[form] target=\"_parent\">".hidden('lang', $C['lang']).submit($I['backtologin'], 'class="backbutton"').'', + 'backtochat' =>"<$H[form]>".hidden('action', 'view').@hidden('session', $_REQUEST['session']).hidden('lang', $C['lang']).submit($I['backtochat'], 'class="backbutton"').'' ); } @@ -2360,32 +2375,17 @@ function load_lang(){ function load_config(){ global $C; $C=array( - 'version' =>'1.10', // Script version - 'dbversion' =>9, // Database version - 'showcredits' =>false, // Allow showing credits + 'version' =>'1.11', // Script version + 'dbversion' =>10, // Database version 'colbg' =>'000000', // Background colour 'coltxt' =>'FFFFFF', // Default text colour - 'collnk' =>'0000FF', // Link colour - 'colvis' =>'B33CB4', // Visited link colour - 'colact' =>'FF0033', // Clicked link colour - 'sessionexpire' =>60, // Minutes until a member session expires - 'guestsexpire' =>15, // Minutes until a guest session expires - 'kickpenalty' =>10, // Minutes a nickname is blocked when it got kicked - 'entrywait' =>120, // Seconds to wait in the waiting room after login 'chatname' =>'My Chat', // Chat Name - 'messageexpire' =>14400, // Minutes until a message expires - 'messagelimit' =>150, // Max messages displayed 'keeplimit' =>3, // Amount of messages to keep in the database (multiplied with max messages displayed) - increase if you have many private messages 'defaultrefresh'=>30, // Seconds to refresh the messages - 'maxmessage' =>2000, // Longest number of characters for a message 'msgencrypted' =>false, // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing! 'encryptkey' =>'MY_KEY', // Encryption key for messages 'maxname' =>20, // Longest number of chatacters for a name 'minpass' =>5, // Shortest number of chatacters for a password - 'boxwidth' =>40, // Default post box width - 'boxheight' =>3, // Default post box height - 'notesboxwidth' =>80, // Default notes box width - 'notesboxheight'=>30, // Default notes box height 'dbhost' =>'p:localhost', // Database host 'dbuser' =>'www-data', // Database user 'dbpass' =>'YOUR_DB_PASS', // Database password @@ -2395,7 +2395,6 @@ function load_config(){ 'memcachedhost' =>'localhost', // Memcached server 'memcachedport' =>'11211', // Memcached server 'captchachars' =>'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', // Characters used for captcha generation - 'captchatime' =>600, // Seconds until the captcha expires 'dismemcaptcha' =>false, // Disable captcha for members? true/false 'embed' =>true, // Default for displaying embedded imgs or turning them into links true/false 'imgembed' =>true, // Allow image embedding in chat using [img] tag? true/false @@ -2403,15 +2402,13 @@ function load_config(){ 'timestamps' =>true, // Display timestamps in front of the messages by default true/false 'incognito' =>true, // Allow mods and admins to be invisable true/false 'forceredirect' =>false, // Force redirect script or only use when no cookies available? true/false - 'msglogout' =>false, // Add a message on member logout - 'msglogin' =>true, // Add a message on member login - 'msgkick' =>true, // Add a message when kicking someone 'memkick' =>true, // Let a member kick guests if no mod is present 'sendmail' =>false, // Send mail on new message - only activate on low traffic chat or your inbox will fill up very fast! 'mailsender' =>'www-data ', // Send mail using this e-Mail address 'mailreceiver' =>'Webmaster ', // Send mail to this e-Mail address 'redirect' =>"$_SERVER[SCRIPT_NAME]?action=redirect&url=", // Redirect script default: "$_SERVER[SCRIPT_NAME]?action=redirect&url=" - 'lang' =>'en' // Default language + 'lang' =>'en', // Default language + 'trackip' =>true // Display IP-Address in session overview - true/false ); $C=$C+array( 'cookiename' =>"$C[prefix]chat_session" // Cookie name storing the session information diff --git a/lang_de.php b/lang_de.php index 003585c..577eda2 100644 --- a/lang_de.php +++ b/lang_de.php @@ -52,7 +52,7 @@ $I=array( 'msgmultikick' => 'Mehrere rausgeworfen', 'msgallkick' => 'Alle rausgeworfen', 'msgclean' => 'Raum geleert', - 'dateformat' => 'Date formating', + 'dateformat' => 'Datums-Formatierung', 'captcha' => 'Captcha', 'enabled' => 'Aktiviert', 'onlyguests' => 'Nur für Gäste', @@ -69,6 +69,7 @@ $I=array( 'cleanmsgs' => 'Nachrichten löschen', 'room' => 'Gesamten Raum', 'selection' => 'Auswahl', + 'cleannick' => 'Folgender Nickname:', 'clean' => 'Löschen', 'kickchat' => 'Teilnehmer rausschmeißen (%d Minuten)', 'kickmsg' => 'Begründung:', @@ -133,7 +134,7 @@ $I=array( 'switchsingle' => 'Zu Einzel-Zeile wechseln', 'switchmulti' => 'Zu Mehrfach-Zeilen wechseln', 'help' => 'Hilfe', - 'helpguest' => 'Alle Funktionen sollten recht selbsterklärend sein, benutze einfach die Knöpfe. In deinem Profil kannst du die Aktualisierungsrate, Schriftfarbe und deine gewünschte Postboxgröße anpassen.
Hinweis: Dies ist ein Chat, wenn du also nichts schreibst, wirst du automatisch nach einiger Zeit abgemaldet.', + 'helpguest' => 'Alle Funktionen sollten recht selbsterklärend sein, benutze einfach die Knöpfe. In deinem Profil kannst du die Aktualisierungsrate, Schriftfarbe und deine gewünschte Postboxgröße anpassen.
Hinweis: Dies ist ein Chat, wenn du also nichts schreibst, wirst du automatisch nach einiger Zeit abgemeldet.', 'helpembed' => 'Wenn du ein Bild einbetten möchtest, füge einfach ein [img] vor die Adresse deines Bildes. Beispiel: [img]http://example.com/images/file.jpg bettet das Bild in deinen Beitrag ein.', 'helpmem' => 'Mitglieder: Du wirst einige zusätzliche Optionen in deinem Profil haben. Du kannst deine Schriftart ändern und du kannst dein Passwort jederzeit ändern.', 'helpmod' => 'Moderatoren: Achte auf den Admin-Knof unten. Er bringt eine Seite auf, auf der du Nachrichten löschen kannst, Teilnehmer rausschmeißen kannst, alle aktive Sitzungen anzeigen lassen kannst und den Gastzugriff deaktivieren kannst, falls dies nötig sein sollte.', @@ -141,7 +142,7 @@ $I=array( 'profile' => 'Dein Profil', 'ignore' => 'Ignorieren', 'unignore' => 'Nicht mehr ignorieren', - 'refreshrate' => 'Aktualisierungsrate (20-150 Sekunden)', + 'refreshrate' => 'Aktualisierungsrate (5-150 Sekunden)', 'fontcolour' => 'Schriftfarbe', 'viewexample' => 'Beispiele anzeigen', 'bgcolour' => 'Hintergrundfarbe', @@ -200,6 +201,7 @@ $I=array( 'succdel' => '%s wurde erfolgriech aus der Datenbank gelöscht.', 'succchg' => 'Status of %s successfully changed.', 'wrongpass' => 'Falsches Passwort!', + 'wrongglobalpass' => 'Falsches gloables Passwort!', 'succprofile' => 'Dein Profil wurde erfolgreich gespeichert.', 'backtologin' => 'Zurück zur Anmeldeseite.', 'backtochat' => 'Zurück zum Chat.', @@ -238,6 +240,19 @@ $I=array( 'White' => 'Weiß', 'Yellow' => 'Gelb', 'YellowGreen' => 'Gelbgrün', - 'contributors' => 'Mitwirkende' + 'redirectto' => 'Leite weiter zu:', + 'nonhttp' => 'Nicht-http Adresse angefordert:', + 'httpredir' => 'Wenn sie nicht funktioniert, probiere diese:', + 'actions' => 'Aktionen', + 'sesip' => 'IP-Adresse', + 'css' => 'CSS Style', + 'memberexpire' => 'Mitglieder-Ablaufzeit (Minuten)', + 'guestexpire' => 'Gast-Ablaufzeit (Minuten)', + 'kickpenalty' => 'Rausschmiss-Strafzeit (Minuten)', + 'entrywait' => 'Warteraum-Zeit (Sekunden)', + 'captchatime' => 'Captcha-Ablaufzeit (Sekunden)', + 'messageexpire' => 'Nachrichten-Ablaufzeit (Minuten)', + 'messagelimit' => 'Nachrichtenlimit (öffentliche)', + 'maxmessage' => 'Maximale Nachrichenlänge' ); ?> diff --git a/lang_en.php b/lang_en.php index 71cdef3..db1722e 100644 --- a/lang_en.php +++ b/lang_en.php @@ -1,3 +1,4 @@ + 'Superadmin Login', 'sunick' => 'Superadmin Nickname:', 'supass' => 'Superadmin Password:', - 'suconfirm' => 'Confirm Passowrd:', + 'suconfirm' => 'Confirm Passorwd:', 'susuccess' => 'Successfully registered!', 'initbtn' => 'Initalise Chat', 'initdbexist' => 'Database tables already exist! To continue, you have to delete these tables manually first.', @@ -70,6 +71,7 @@ $I=array( 'cleanmsgs' => 'Clean messages', 'room' => 'Whole room', 'selection' => 'Selection', + 'cleannick' => 'Following nickname:', 'clean' => 'Clean', 'kickchat' => 'Kick Chatter (%d minutes)', 'kickmsg' => 'Kickmessage:', @@ -142,7 +144,7 @@ $I=array( 'profile' => 'Your Profile', 'ignore' => 'Ignore', 'unignore' => 'Don\'t ignore anymore', - 'refreshrate' => 'Refresh rate (20-150 seconds)', + 'refreshrate' => 'Refresh rate (5-150 seconds)', 'fontcolour' => 'Font colour', 'viewexample' => 'View examples', 'bgcolour' => 'Background colour', @@ -201,6 +203,7 @@ $I=array( 'succdel' => '%s successfully deleted from database.', 'succchg' => 'Status of %s successfully changed.', 'wrongpass' => 'Wrong Password!', + 'wrongglobalpass' => 'Wrong global Password!', 'succprofile' => 'Your profile has successfully been saved.', 'backtologin' => 'Back to the login page.', 'backtochat' => 'Back to the chat.', @@ -239,6 +242,19 @@ $I=array( 'White' => 'White', 'Yellow' => 'Yellow', 'YellowGreen' => 'Yellow green', - 'contributors' => 'Contributors', + 'redirectto' => 'Redirecting to:', + 'nonhttp' => 'Non-http link requested:', + 'httpredir' => 'If it\'s not working, try this one:', + 'actions' => 'Actions', + 'sesip' => 'IP-Address', + 'css' => 'CSS Style', + 'memberexpire' => 'Member timeout (minutes)', + 'guestexpire' => 'Guest timeout (minutes)', + 'kickpenalty' => 'Kick penalty (minutes)', + 'entrywait' => 'Waiting room time (seconds)', + 'captchatime' => 'Captcha timeout (seconds)', + 'messageexpire' => 'Message timeout (minutes)', + 'messagelimit' => 'Message limit (public)', + 'maxmessage' => 'Maximum message length' ); ?>
<$H[form]>".hidden('action', 'admin').hidden('do', 'approve').hidden('session', $_REQUEST['session']).submit(sprintf($I['approveguests'], $temp[0])).' '.frmadm('approve').submit(sprintf($I['approveguests'], $temp[0])).' $I[members] ".implode('   ', $M).'