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 statusexecute(array($U['status'])); + if(!$lines=$stmt->fetchAll(PDO::FETCH_ASSOC)){ + $lines=array(); + } print_start('sessions'); echo "

$I[sessact]

"; echo ""; @@ -989,42 +993,40 @@ function send_sessions(){ if($trackip) echo ""; echo ""; 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 ''; + if($U['status']>$temp['status'] || $U['nickname']===$temp['nickname']){ + echo ""; + if($trackip){ + echo ""; } - echo ''; - if($U['status']>$temp['status'] || $U['session']===$temp['session']){ - echo ""; - if($trackip){ - echo ""; - } - echo ''; - }else{ + echo ''; + }else{ + echo ''; + if($trackip){ echo ''; - if($trackip){ - echo ''; - } - echo ''; } + echo ''; } } echo "
$I[sessnick]$I[sesstimeout]$I[sessua]$I[sesip]$I[actions]
'.style_this($temp['nickname'].$s, $temp['style']).''; + if($temp['status']>2){ + get_timeout($temp['lastpost'], $memexpire); + }else{ + get_timeout($temp['lastpost'], $guestexpire); + } + echo '$temp[useragent]$temp[ip]
'.style_this($temp['nickname'].$s, $temp['style']).''; - if($temp['status']>2){ - get_timeout($temp['lastpost'], $memexpire); - }else{ - get_timeout($temp['lastpost'], $guestexpire); - } - echo '$temp[useragent]$temp[ip]'; - frmadm('sessions'); - echo hidden('nick', $temp['nickname']).submit($I['kick']).'
'; + frmadm('sessions'); + echo hidden('nick', $temp['nickname']).submit($I['kick']).'
----
-

$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 statusprepare('DELETE FROM ' . PREFIX . 'sessions WHERE nickname=? AND statusprepare('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]); }