diff --git a/CHANGELOG b/CHANGELOG index 27e39b9..be8479b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.20.5 - Jul. 19, 2016 +Check permission before selectively deleting a message. + Version 1.20.4 - Jul. 12, 2016 Third attempt to fix the same bug diff --git a/chat.php b/chat.php index b1e9334..14eca9c 100644 --- a/chat.php +++ b/chat.php @@ -151,7 +151,7 @@ function route_admin(){ if($_REQUEST['what']==='choose'){ send_choose_messages(); }elseif($_REQUEST['what']==='selected'){ - clean_selected(); + clean_selected($U['status']); }elseif($_REQUEST['what']==='room'){ clean_room(); }elseif($_REQUEST['what']==='nick'){ @@ -2935,7 +2935,7 @@ function add_system_message($mes){ 'poster' =>'', 'recipient' =>'', 'text' =>"$mes", - 'delstatus' =>9 + 'delstatus' =>4 ); write_message($sysmessage); } @@ -2971,12 +2971,12 @@ function clean_room(){ add_system_message(sprintf($msg, get_setting('chatname'))); } -function clean_selected(){ +function clean_selected($status){ global $db; if(isSet($_REQUEST['mid'])){ - $stmt=$db->prepare('DELETE FROM ' . PREFIX . 'messages WHERE id=?;'); + $stmt=$db->prepare('DELETE FROM ' . PREFIX . 'messages WHERE id=? AND (delstatus=9 OR delstatusexecute(array($mid)); + $stmt->execute(array($mid, $status)); } } } @@ -3054,9 +3054,9 @@ function print_messages($delstatus=''){ $db->exec('DELETE FROM ' . PREFIX . 'messages WHERE id IN (SELECT * FROM (SELECT id FROM ' . PREFIX . "messages WHERE postdate<$expire) AS t);"); if(!empty($delstatus)){ $stmt=$db->prepare('SELECT postdate, id, text FROM ' . PREFIX . 'messages WHERE '. - 'id IN (SELECT * FROM (SELECT id FROM ' . PREFIX . "messages WHERE poststatus=1 ORDER BY id DESC LIMIT $messagelimit) AS t) ". - 'OR (poststatus>1 AND (poststatusexecute(array($U['status'], $U['nickname'], $U['nickname'])); + '(id IN (SELECT * FROM (SELECT id FROM ' . PREFIX . "messages WHERE poststatus=1 ORDER BY id DESC LIMIT $messagelimit) AS t) ". + 'OR (poststatus>1 AND (poststatusexecute(array($U['status'], $U['nickname'], $U['nickname'], $U['nickname'], $U['nickname'], $delstatus)); while($message=$stmt->fetch(PDO::FETCH_ASSOC)){ prepare_message_print($message, $injectRedirect, $redirect, $removeEmbed); echo "