Powinno być OK:
//-----------------------------------------
// Update member
//-----------------------------------------
$warn_level = intval($this->warn_member['warn_level']);
$user_group = intval($this->warn_member['mgroup']);
$warn_adjust = intval($this->ipsclass->input['warn_amount']);
if ( $this->ipsclass->input['level'] == 'add' )
{
$warn_level += $warn_adjust;
}
else
{
$warn_level -= $warn_adjust;
}
if ( $warn_level > $this->ipsclass->vars['warn_max'] )
{
$warn_level = $this->ipsclass->vars['warn_max'];
}
if ( $warn_level < intval($this->ipsclass->vars['warn_min']) )
{
$warn_level = 0;
}
if ( $warn_level == $this->ipsclass->vars['warn_max'] )
{
$user_group = $this->ipsclass->vars['w_bangroup'];
$mgroup_others = '';
}
$this->ipsclass->DB->do_update( 'members', array (
'mgroup' => $user_group,
'mod_posts' => $mod_queue,
'restrict_post' => $restrict_post,
'temp_ban' => $susp,
'warn_level' => $warn_level,
'warn_lastwarn' => time(),
'mgroup_others' => ( ! strlen( $mgroup_others ) ) ? '' : $this->warn_member['mgroup_others'] ,
) , "id={$this->warn_member['id']}" );
O ile tablica $this->warn_member jest wypełniona wszystkimi danymi. W razie czego sprawdzę i to i dodam odpowiedni kod, ale na razie przetestuj (!) ten.