diff --git a/CHANGELOG b/CHANGELOG index dc329e4..fae5fdc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +Add logout button to session view and allow logging out kicked sessions + Version 1.21 - Aug. 29, 2016 Don't display empty option for system messages in delete messages by name Don't show a kick button on your own session in the list of active sessions diff --git a/chat.php b/chat.php index 0553c54..19241e4 100644 --- a/chat.php +++ b/chat.php @@ -187,8 +187,10 @@ function route_admin(){ logout_chatter($_REQUEST['name']); } }elseif($_REQUEST['do']==='sessions'){ - if(isSet($_REQUEST['nick'])){ - kick_chatter(array($_REQUEST['nick']), '', false); + if(isset($_REQUEST['kick']) && isSet($_REQUEST['nick'])){ + kick_chatter([$_REQUEST['nick']], '', false); + }elseif(isset($_REQUEST['logout']) && isSet($_REQUEST['nick'])){ + logout_chatter([$_REQUEST['nick']], '', false); } send_sessions(); }elseif($_REQUEST['do']==='register'){ @@ -1027,7 +1029,7 @@ function send_admin($arg=''){ function send_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 statusprepare('SELECT nickname, style, lastpost, status, useragent, ip FROM ' . PREFIX . 'sessions WHERE entry!=0 AND (incognito=0 OR statusexecute(array($U['status'])); if(!$lines=$stmt->fetchAll(PDO::FETCH_ASSOC)){ $lines=array(); @@ -1041,18 +1043,20 @@ function send_sessions(){ if($trackip) echo "$I[sesip]"; echo "$I[actions]"; foreach($lines as $temp){ - if($temp['status']<=2){ - $s=' (G)'; + if($temp['status']==0){ + $s=' (K)'; + }elseif($temp['status']<=2){ + $s=' (G)'; }elseif($temp['status']==3){ $s=''; }elseif($temp['status']==5){ - $s=' (M)'; + $s=' (M)'; }elseif($temp['status']==6){ - $s=' (SM)'; + $s=' (SM)'; }elseif($temp['status']==7){ - $s=' (A)'; + $s=' (A)'; }else{ - $s=' (SA)'; + $s=' (SA)'; } echo ''.style_this($temp['nickname'].$s, $temp['style']).''; if($temp['status']>2){ @@ -1068,8 +1072,17 @@ function send_sessions(){ } echo ''; if($temp['nickname']!==$U['nickname']){ + echo ''; + if($temp['status']!=0){ + echo ''; + } + echo '
'; + frmadm('sessions'); + echo hidden('kick', '1').hidden('nick', $temp['nickname']).submit($I['kick']).''; + echo ''; frmadm('sessions'); - echo hidden('nick', $temp['nickname']).submit($I['kick']).''; + echo hidden('logout', '1').hidden('nick', $temp['nickname']).submit($I['logout']).''; + echo '
'; }else{ echo '-'; } @@ -2263,7 +2276,7 @@ function kick_chatter($names, $mes, $purge){ function logout_chatter($names){ global $U, $db; - $check=$db->prepare('SELECT status FROM ' . PREFIX . 'sessions WHERE nickname=? AND statusprepare('SELECT status FROM ' . PREFIX . 'sessions WHERE nickname=? AND statusprepare('DELETE FROM ' . PREFIX . 'sessions WHERE nickname=?;'); $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;");