diff --git a/chat.php b/chat.php
index 7d0084a..35d469b 100644
--- a/chat.php
+++ b/chat.php
@@ -978,8 +978,12 @@ function send_admin($arg=''){
}
function send_sessions(){
- global $H, $I, $U;
- $lines=parse_sessions();
+ global $H, $I, $U, $db;
+ $stmt=$db->prepare('SELECT nickname, style, lastpost, status, useragent, ip FROM ' . PREFIX . 'sessions WHERE status!=0 AND entry!=0 AND (incognito=0 OR status) ORDER BY status DESC, lastpost DESC;');
+ $stmt->execute(array($U['status']));
+ if(!$lines=$stmt->fetchAll(PDO::FETCH_ASSOC)){
+ $lines=array();
+ }
print_start('sessions');
echo "
$I[sessact]
";
echo "$I[sessnick] | $I[sesstimeout] | $I[sessua] | ";
@@ -989,42 +993,40 @@ function send_sessions(){
if($trackip) echo "$I[sesip] | ";
echo "$I[actions] |
";
foreach($lines as $temp){
- if($temp['status']!=0 && $temp['entry']!=0 && (!$temp['incognito'] || $temp['status']<$U['status'])){
- if($temp['status']<=2){
- $s=' (G)';
- }elseif($temp['status']==3){
- $s='';
- }elseif($temp['status']==5){
- $s=' (M)';
- }elseif($temp['status']==6){
- $s=' (SM)';
- }elseif($temp['status']==7){
- $s=' (A)';
- }elseif($temp['status']==8){
- $s=' (SA)';
+ if($temp['status']<=2){
+ $s=' (G)';
+ }elseif($temp['status']==3){
+ $s='';
+ }elseif($temp['status']==5){
+ $s=' (M)';
+ }elseif($temp['status']==6){
+ $s=' (SM)';
+ }elseif($temp['status']==7){
+ $s=' (A)';
+ }elseif($temp['status']==8){
+ $s=' (SA)';
+ }
+ echo ''.style_this($temp['nickname'].$s, $temp['style']).' | ';
+ if($temp['status']>2){
+ get_timeout($temp['lastpost'], $memexpire);
+ }else{
+ get_timeout($temp['lastpost'], $guestexpire);
+ }
+ echo ' | ';
+ if($U['status']>$temp['status'] || $U['nickname']===$temp['nickname']){
+ echo "$temp[useragent] | ";
+ if($trackip){
+ echo "$temp[ip] | ";
}
- echo '
'.style_this($temp['nickname'].$s, $temp['style']).' | ';
- if($temp['status']>2){
- get_timeout($temp['lastpost'], $memexpire);
- }else{
- get_timeout($temp['lastpost'], $guestexpire);
- }
- echo ' | ';
- if($U['status']>$temp['status'] || $U['session']===$temp['session']){
- echo "$temp[useragent] | ";
- if($trackip){
- echo "$temp[ip] | ";
- }
- echo '';
- frmadm('sessions');
- echo hidden('nick', $temp['nickname']).submit($I['kick']).' |
';
- }else{
+ echo '';
+ frmadm('sessions');
+ echo hidden('nick', $temp['nickname']).submit($I['kick']).' | ';
+ }else{
+ echo '- | ';
+ if($trackip){
echo '- | ';
- if($trackip){
- echo '- | ';
- }
- echo '- | ';
}
+ echo '- | ';
}
}
echo "
$H[backtochat]";
@@ -2154,18 +2156,17 @@ function kill_session(){
function kick_chatter($names, $mes, $purge){
global $P, $U, $db;
$lonick='';
- $lines=parse_sessions();
$time=60*(get_setting('kickpenalty')-get_setting('guestexpire'))+time();
- $stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET lastpost=?, status=0, kickmessage=? WHERE session=? AND status!=0;');
+ $stmt=$db->prepare('UPDATE ' . PREFIX . 'sessions SET lastpost=?, status=0, kickmessage=? WHERE nickname=? 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)))){
- $stmt->execute(array($time, $mes, $temp['session']));
+ foreach($P as $temp){
+ if(($temp[0]===$U['nickname'] && $U['nickname']===$name) || ($U['status']>$temp[2] && (($temp[0]===$name && $temp[2]>0) || ($name==='&' && $temp[2]==1)))){
+ $stmt->execute(array($time, $mes, $name));
if($purge){
- del_all_messages($temp['nickname'], 10, 0);
+ del_all_messages($name, 10, 0);
}
- $lonick.=style_this($temp['nickname'], $temp['style']).', ';
+ $lonick.=style_this($name, $temp[1]).', ';
++$i;
unset($P[$name]);
}
@@ -2191,19 +2192,18 @@ function kick_chatter($names, $mes, $purge){
function logout_chatter($names){
global $P, $U, $db;
- $lines=parse_sessions();
- $stmt=$db->prepare('DELETE FROM ' . PREFIX . 'sessions WHERE session=? AND status AND status!=0;');
+ $stmt=$db->prepare('DELETE FROM ' . PREFIX . 'sessions WHERE nickname=? AND status AND status!=0;');
$stmt1=$db->prepare('UPDATE ' . PREFIX . "messages SET poster='' WHERE poster=? AND poststatus=9;");
$stmt2=$db->prepare('UPDATE ' . PREFIX . "messages SET recipient='' WHERE recipient=? AND poststatus=9;");
$stmt3=$db->prepare('DELETE FROM ' . PREFIX . 'ignored WHERE ign=? OR ignby=?;');
foreach($names as $name){
- foreach($lines as $temp){
- if($temp['nickname']===$name || ($name==='&' && $temp['status']==1)){
- $stmt->execute(array($temp['session'], $U['status']));
- if($temp['status']==1){
- $stmt1->execute(array($temp['nickname']));
- $stmt2->execute(array($temp['nickname']));
- $stmt3->execute(array($temp['nickname'], $temp['nickname']));
+ foreach($P as $temp){
+ if($temp[0]===$name || ($name==='&' && $temp[2]==1)){
+ $stmt->execute(array($name, $U['status']));
+ if($temp[2]==1){
+ $stmt1->execute(array($name));
+ $stmt2->execute(array($name));
+ $stmt3->execute(array($name, $name));
}
unset($P[$name]);
}