diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-03-29 01:03:11 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-03-29 01:03:11 +0000 |
commit | 5deed37a791f2ea9968fd451014d861f1b1eebc7 (patch) | |
tree | 1d3ad7262f7f3bbd9c9225c96fbef45677eff907 /phpBB/admin/admin_ug_auth.php | |
parent | 893992dd78a072cdb3b0d864e2d8511d2c74529b (diff) | |
download | forums-5deed37a791f2ea9968fd451014d861f1b1eebc7.tar forums-5deed37a791f2ea9968fd451014d861f1b1eebc7.tar.gz forums-5deed37a791f2ea9968fd451014d861f1b1eebc7.tar.bz2 forums-5deed37a791f2ea9968fd451014d861f1b1eebc7.tar.xz forums-5deed37a791f2ea9968fd451014d861f1b1eebc7.zip |
Fix bug where user level wasn't reset to 2 when downgrading a user from admin
git-svn-id: file:///svn/phpbb/trunk@2446 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/admin/admin_ug_auth.php')
-rw-r--r-- | phpBB/admin/admin_ug_auth.php | 320 |
1 files changed, 162 insertions, 158 deletions
diff --git a/phpBB/admin/admin_ug_auth.php b/phpBB/admin/admin_ug_auth.php index 914ccc46cf..a9e10e0dc8 100644 --- a/phpBB/admin/admin_ug_auth.php +++ b/phpBB/admin/admin_ug_auth.php @@ -152,38 +152,7 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || ( // // Carry out requests // - if ( $mode == 'user' && $HTTP_POST_VARS['userlevel'] == 'user' && $user_level == ADMIN ) - { - // - // Make admin a user (if already admin) ... ignore if you're trying - // to change yourself from an admin to user! - // - if ( $userdata['user_id'] != $user_id ) - { - $sql = "UPDATE " . AUTH_ACCESS_TABLE . " - SET auth_view = 0, auth_read = 0, auth_post = 0, auth_reply = 0, auth_edit = 0, auth_delete = 0, auth_sticky = 0, auth_announce = 0 - WHERE group_id = $group_id"; - if ( !($result = $db->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, 'Could not update auth access', '', __LINE__, __FILE__, $sql); - } - - // - // Update users level, reset to USER - // - $sql = "UPDATE " . USERS_TABLE . " - SET user_level = " . USER . " - WHERE user_id = $user_id"; - if ( !($result = $db->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); - } - } - - $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($lang['Click_return_userauth'], '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>'); - message_die(GENERAL_MESSAGE, $message); - } - else if ( $mode == 'user' && $HTTP_POST_VARS['userlevel'] == 'admin' && $user_level != ADMIN ) + if ( $mode == 'user' && $HTTP_POST_VARS['userlevel'] == 'admin' && $user_level != ADMIN ) { // // Make user an admin (if already user) @@ -224,176 +193,213 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || ( } else { - $change_mod_list = ( isset($HTTP_POST_VARS['moderator']) ) ? $HTTP_POST_VARS['moderator'] : false; - - if ( empty($adv) ) + if ( $mode == 'user' && $HTTP_POST_VARS['userlevel'] == 'user' && $user_level == ADMIN ) { - $change_acl_list = ( isset($HTTP_POST_VARS['private']) ) ? $HTTP_POST_VARS['private'] : false; - } - else - { - $change_acl_list = array(); - for($j = 0; $j < count($forum_auth_fields); $j++) + // + // Make admin a user (if already admin) ... ignore if you're trying + // to change yourself from an admin to user! + // + if ( $userdata['user_id'] != $user_id ) { - $auth_field = $forum_auth_fields[$j]; + $sql = "UPDATE " . AUTH_ACCESS_TABLE . " + SET auth_view = 0, auth_read = 0, auth_post = 0, auth_reply = 0, auth_edit = 0, auth_delete = 0, auth_sticky = 0, auth_announce = 0 + WHERE group_id = $group_id"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, 'Could not update auth access', '', __LINE__, __FILE__, $sql); + } - while( list($forum_id, $value) = @each($HTTP_POST_VARS['private_' . $auth_field]) ) + // + // Update users level, reset to USER + // + $sql = "UPDATE " . USERS_TABLE . " + SET user_level = " . USER . " + WHERE user_id = $user_id"; + if ( !($result = $db->sql_query($sql)) ) { - $change_acl_list[$forum_id][$auth_field] = $value; + message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); } } - } - $sql = "SELECT * - FROM " . FORUMS_TABLE . " f - ORDER BY forum_order"; - if ( !($result = $db->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql); + $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($lang['Click_return_userauth'], '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>'); } - - $forum_access = array(); - while( $row = $db->sql_fetchrow($result) ) + else { - $forum_access[] = $row; - } - $db->sql_freeresult($result); + + $change_mod_list = ( isset($HTTP_POST_VARS['moderator']) ) ? $HTTP_POST_VARS['moderator'] : false; - $sql = ( $mode == 'user' ) ? "SELECT aa.* FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE. " g WHERE ug.user_id = $user_id AND g.group_id = ug.group_id AND aa.group_id = ug.group_id AND g.group_single_user = " . TRUE : "SELECT * FROM " . AUTH_ACCESS_TABLE . " WHERE group_id = $group_id"; - if ( !($result = $db->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, "Couldn't obtain user/group permissions", "", __LINE__, __FILE__, $sql); - } + if ( empty($adv) ) + { + $change_acl_list = ( isset($HTTP_POST_VARS['private']) ) ? $HTTP_POST_VARS['private'] : false; + } + else + { + $change_acl_list = array(); + for($j = 0; $j < count($forum_auth_fields); $j++) + { + $auth_field = $forum_auth_fields[$j]; - $auth_access = array(); - while( $row = $db->sql_fetchrow($result) ) - { - $auth_access[$row['forum_id']] = $row; - } - $db->sql_freeresult($result); + while( list($forum_id, $value) = @each($HTTP_POST_VARS['private_' . $auth_field]) ) + { + $change_acl_list[$forum_id][$auth_field] = $value; + } + } + } - $forum_auth_action = array(); - $update_acl_status = array(); - $update_mod_status = array(); + $sql = "SELECT * + FROM " . FORUMS_TABLE . " f + ORDER BY forum_order"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql); + } - for($i = 0; $i < count($forum_access); $i++) - { - $forum_id = $forum_access[$i]['forum_id']; + $forum_access = array(); + while( $row = $db->sql_fetchrow($result) ) + { + $forum_access[] = $row; + } + $db->sql_freeresult($result); - if ( - ( isset($auth_access[$forum_id]['auth_mod']) && $change_mod_list[$forum_id]['auth_mod'] != $auth_access[$forum_id]['auth_mod'] ) || - ( !isset($auth_access[$forum_id]['auth_mod']) && !empty($change_mod_list[$forum_id]['auth_mod']) ) - ) + $sql = ( $mode == 'user' ) ? "SELECT aa.* FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE. " g WHERE ug.user_id = $user_id AND g.group_id = ug.group_id AND aa.group_id = ug.group_id AND g.group_single_user = " . TRUE : "SELECT * FROM " . AUTH_ACCESS_TABLE . " WHERE group_id = $group_id"; + if ( !($result = $db->sql_query($sql)) ) { - $update_mod_status[$forum_id] = $change_mod_list[$forum_id]['auth_mod']; + message_die(GENERAL_ERROR, "Couldn't obtain user/group permissions", "", __LINE__, __FILE__, $sql); + } - if ( !$update_mod_status[$forum_id] ) - { - $forum_auth_action[$forum_id] = 'delete'; - } - else if ( !isset($auth_access[$forum_id]['auth_mod']) ) - { - $forum_auth_action[$forum_id] = 'insert'; - } - else - { - $forum_auth_action[$forum_id] = 'update'; - } + $auth_access = array(); + while( $row = $db->sql_fetchrow($result) ) + { + $auth_access[$row['forum_id']] = $row; } + $db->sql_freeresult($result); - for($j = 0; $j < count($forum_auth_fields); $j++) + $forum_auth_action = array(); + $update_acl_status = array(); + $update_mod_status = array(); + + for($i = 0; $i < count($forum_access); $i++) { - $auth_field = $forum_auth_fields[$j]; + $forum_id = $forum_access[$i]['forum_id']; - if( $forum_access[$i][$auth_field] == AUTH_ACL && isset($change_acl_list[$forum_id][$auth_field]) ) + if ( + ( isset($auth_access[$forum_id]['auth_mod']) && $change_mod_list[$forum_id]['auth_mod'] != $auth_access[$forum_id]['auth_mod'] ) || + ( !isset($auth_access[$forum_id]['auth_mod']) && !empty($change_mod_list[$forum_id]['auth_mod']) ) + ) { - if ( ( empty($auth_access[$forum_id]['auth_mod']) && - ( isset($auth_access[$forum_id][$auth_field]) && $change_acl_list[$forum_id][$auth_field] != $auth_access[$forum_id][$auth_field] ) || - ( !isset($auth_access[$forum_id][$auth_field]) && !empty($change_acl_list[$forum_id][$auth_field]) ) ) || - !empty($update_mod_status[$forum_id]) - ) + $update_mod_status[$forum_id] = $change_mod_list[$forum_id]['auth_mod']; + + if ( !$update_mod_status[$forum_id] ) + { + $forum_auth_action[$forum_id] = 'delete'; + } + else if ( !isset($auth_access[$forum_id]['auth_mod']) ) + { + $forum_auth_action[$forum_id] = 'insert'; + } + else { - $update_acl_status[$forum_id][$auth_field] = ( !empty($update_mod_status[$forum_id]) ) ? 0 : $change_acl_list[$forum_id][$auth_field]; + $forum_auth_action[$forum_id] = 'update'; + } + } - if ( isset($auth_access[$forum_id][$auth_field]) && empty($update_acl_status[$forum_id][$auth_field]) && $forum_auth_action[$forum_id] != 'insert' && $forum_auth_action[$forum_id] != 'update' ) - { - $forum_auth_action[$forum_id] = 'delete'; - } - else if ( !isset($auth_access[$forum_id][$auth_field]) && !( $forum_auth_action[$forum_id] == 'delete' && empty($update_acl_status[$forum_id][$auth_field]) ) ) + for($j = 0; $j < count($forum_auth_fields); $j++) + { + $auth_field = $forum_auth_fields[$j]; + + if( $forum_access[$i][$auth_field] == AUTH_ACL && isset($change_acl_list[$forum_id][$auth_field]) ) + { + if ( ( empty($auth_access[$forum_id]['auth_mod']) && + ( isset($auth_access[$forum_id][$auth_field]) && $change_acl_list[$forum_id][$auth_field] != $auth_access[$forum_id][$auth_field] ) || + ( !isset($auth_access[$forum_id][$auth_field]) && !empty($change_acl_list[$forum_id][$auth_field]) ) ) || + !empty($update_mod_status[$forum_id]) + ) { - $forum_auth_action[$forum_id] = 'insert'; + $update_acl_status[$forum_id][$auth_field] = ( !empty($update_mod_status[$forum_id]) ) ? 0 : $change_acl_list[$forum_id][$auth_field]; + + if ( isset($auth_access[$forum_id][$auth_field]) && empty($update_acl_status[$forum_id][$auth_field]) && $forum_auth_action[$forum_id] != 'insert' && $forum_auth_action[$forum_id] != 'update' ) + { + $forum_auth_action[$forum_id] = 'delete'; + } + else if ( !isset($auth_access[$forum_id][$auth_field]) && !( $forum_auth_action[$forum_id] == 'delete' && empty($update_acl_status[$forum_id][$auth_field]) ) ) + { + $forum_auth_action[$forum_id] = 'insert'; + } + else if ( isset($auth_access[$forum_id][$auth_field]) && !empty($update_acl_status[$forum_id][$auth_field]) ) + { + $forum_auth_action[$forum_id] = 'update'; + } } - else if ( isset($auth_access[$forum_id][$auth_field]) && !empty($update_acl_status[$forum_id][$auth_field]) ) + else if ( ( empty($auth_access[$forum_id]['auth_mod']) && + ( isset($auth_access[$forum_id][$auth_field]) && $change_acl_list[$forum_id][$auth_field] == $auth_access[$forum_id][$auth_field] ) ) && $forum_auth_action[$forum_id] == 'delete' ) { $forum_auth_action[$forum_id] = 'update'; } } - else if ( ( empty($auth_access[$forum_id]['auth_mod']) && - ( isset($auth_access[$forum_id][$auth_field]) && $change_acl_list[$forum_id][$auth_field] == $auth_access[$forum_id][$auth_field] ) ) && $forum_auth_action[$forum_id] == 'delete' ) - { - $forum_auth_action[$forum_id] = 'update'; - } } } - } - // - // Checks complete, make updates to DB - // - $delete_sql = ''; - while( list($forum_id, $action) = @each($forum_auth_action) ) - { - if ( $action == 'delete' ) - { - $delete_sql .= ( ( $delete_sql != '' ) ? ', ' : '' ) . $forum_id; - } - else + // + // Checks complete, make updates to DB + // + $delete_sql = ''; + while( list($forum_id, $action) = @each($forum_auth_action) ) { - if ( $action == 'insert' ) + if ( $action == 'delete' ) { - $sql_field = ''; - $sql_value = ''; - while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) ) - { - $sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . $auth_type; - $sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . $value; - } - $sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . 'auth_mod'; - $sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . ( ( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]); - - $sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (forum_id, group_id, $sql_field) - VALUES ($forum_id, $group_id, $sql_value)"; + $delete_sql .= ( ( $delete_sql != '' ) ? ', ' : '' ) . $forum_id; } else { - $sql_values = ''; - while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) ) + if ( $action == 'insert' ) { - $sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . $auth_type . ' = ' . $value; + $sql_field = ''; + $sql_value = ''; + while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) ) + { + $sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . $auth_type; + $sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . $value; + } + $sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . 'auth_mod'; + $sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . ( ( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]); + + $sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (forum_id, group_id, $sql_field) + VALUES ($forum_id, $group_id, $sql_value)"; } - $sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . 'auth_mod = ' . ( ( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]); + else + { + $sql_values = ''; + while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) ) + { + $sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . $auth_type . ' = ' . $value; + } + $sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . 'auth_mod = ' . ( ( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]); - $sql = "UPDATE " . AUTH_ACCESS_TABLE . " - SET $sql_values - WHERE group_id = $group_id - AND forum_id = $forum_id"; + $sql = "UPDATE " . AUTH_ACCESS_TABLE . " + SET $sql_values + WHERE group_id = $group_id + AND forum_id = $forum_id"; + } + if( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't update private forum permissions", "", __LINE__, __FILE__, $sql); + } } + } + + if ( $delete_sql != '' ) + { + $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . " + WHERE group_id = $group_id + AND forum_id IN ($delete_sql)"; if( !($result = $db->sql_query($sql)) ) { - message_die(GENERAL_ERROR, "Couldn't update private forum permissions", "", __LINE__, __FILE__, $sql); + message_die(GENERAL_ERROR, "Couldn't delete permission entries", "", __LINE__, __FILE__, $sql); } } - } - if ( $delete_sql != '' ) - { - $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . " - WHERE group_id = $group_id - AND forum_id IN ($delete_sql)"; - if( !($result = $db->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, "Couldn't delete permission entries", "", __LINE__, __FILE__, $sql); - } + $l_auth_return = ( $mode == 'user' ) ? $lang['Click_return_userauth'] : $lang['Click_return_groupauth']; + $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($l_auth_return, '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>'); } // @@ -497,8 +503,6 @@ if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || ( } } - $l_auth_return = ( $mode == 'user' ) ? $lang['Click_return_userauth'] : $lang['Click_return_groupauth']; - $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($l_auth_return, '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>'); message_die(GENERAL_MESSAGE, $message); } } |