Make WordPress Core

Ticket #1645: users.php.2.patch

File users.php.2.patch, 3.5 KB (added by ringmaster, 19 years ago)

Oops. This one handles deleting yourself, too.

  • users.php

     
    2020                die(__('You can’t edit users.'));
    2121
    2222        $userids = $_POST['users'];
     23        $update = 'promote';
    2324        foreach($userids as $id) {
     25                // The new role of the current user must also have edit_users caps
     26                if($id == $current_user->id && !$wp_roles->role_objects[$_POST['new_role']]->has_cap('edit_users')) {
     27                        $update = 'err_admin_role';
     28                        continue;
     29                }
     30
    2431                $user = new WP_User($id);
    2532                $user->set_role($_POST['new_role']);
    2633        }
    27                
    28         header('Location: users.php?update=promote');
    2934
     35        header('Location: users.php?update=' . $update);
     36
    3037break;
    3138
    3239case 'dodelete':
     
    4249
    4350        $userids = $_POST['users'];
    4451       
     52        $update = 'del';
    4553        foreach($userids as $id) {
     54                if($id == $current_user->id) {
     55                        $update = 'err_admin_del';
     56                        continue;
     57                }
    4658                switch($_POST['delete_option']) {
    4759                case 'delete':
    4860                        wp_delete_user($id);
     
    5365                }
    5466        }
    5567
    56         header('Location: users.php?update=del');
     68        header('Location: users.php?update=' . $update);
    5769
    5870break;
    5971
     
    7890        <p><?php _e('You have specified these users for deletion:'); ?></p>
    7991        <ul>
    8092        <?php
     93        $go_delete = false;
    8194        foreach($userids as $id) {
    8295                $user = new WP_User($id);
    83                 echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />";
    84                 echo "{$id}: {$user->data->user_login}</li>\n";
     96                if($id == $current_user->id) {
     97                        echo "<li>" . sprintf('ID #%1s: %2s <strong>The current user will not be deleted.</strong>', $id, $user->data->user_login) . "</li>\n";
     98                }
     99                else {
     100                        echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf('ID #%1s: %2s', $id, $user->data->user_login) . "</li>\n";
     101                        $go_delete = true;
     102                }
    85103        }
    86104        $all_logins = $wpdb->get_results("SELECT ID, user_login FROM $wpdb->users ORDER BY user_login");
    87105        $user_dropdown = '<select name="reassign_user">';
    88106        foreach($all_logins as $login) {
    89                 if(!in_array($login->ID, $userids)) {
     107                if($login->ID == $current_user->id || !in_array($login->ID, $userids)) {
    90108                        $user_dropdown .= "<option value=\"{$login->ID}\">{$login->user_login}</option>";
    91109                }
    92110        }
    93111        $user_dropdown .= '</select>';
    94112        ?>
    95113        </ul>
     114        <?php if($go_delete) : ?>
    96115        <p><?php _e('What should be done with posts and links owned by this user?'); ?></p>
    97116        <ul style="list-style:none;">
    98117                <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" />
     
    102121        </ul>
    103122        <input type="hidden" name="action" value="dodelete" />
    104123        <p class="submit"><input type="submit" name="submit" value="<?php _e('Confirm Deletion'); ?>" /></p>
     124        <?php else : ?>
     125        <p><?php _e('There are no valid users selected for deletion.'); ?></p>
     126        <?php endif; ?>
    105127</div>
    106128</form>
    107129<?php
     
    151173                        <div id="message" class="updated fade"><p><?php _e('Changed roles.'); ?></p></div>
    152174                <?php
    153175                        break;
     176                case 'err_admin_role':
     177                ?>
     178                        <div id="message" class="error"><p><?php _e('The current user\'s role must have user editing capabilities.'); ?></p></div>
     179                        <div id="message" class="updated fade"><p><?php _e('Other user roles have been changed.'); ?></p></div>
     180                <?php
     181                        break;
     182                case 'err_admin_del':
     183                ?>
     184                        <div id="message" class="error"><p><?php _e('You can\'t delete the current user.'); ?></p></div>
     185                        <div id="message" class="updated fade"><p><?php _e('Other users have been deleted.'); ?></p></div>
     186                <?php
     187                        break;
    154188                }
    155189        endif;
    156190        if ( isset($errors) ) : ?>