WordPress.org

Make WordPress Core

Ticket #15855: 15855-site-users-confirmation.patch

File 15855-site-users-confirmation.patch, 4.0 KB (added by SergeyBiryukov, 4 years ago)
  • site-users.php

     
    5959 
    6060if ( $action ) { 
    6161        switch_to_blog( $id ); 
     62        $redirect = wp_get_referer(); 
    6263         
    6364        switch ( $action ) { 
    6465                case 'newuser': 
     
    9899                        } 
    99100                        break; 
    100101                 
    101                 case 'remove': 
     102                case 'doremove': 
     103                        check_admin_referer('remove-users'); 
     104 
    102105                        if ( !current_user_can('remove_users')  ) 
    103                                 die(__('You can’t remove users.')); 
    104                                  
     106                                die( __('You can’t remove users.') ); 
     107 
    105108                        $update = 'remove'; 
    106109                        if ( isset( $_REQUEST['users'] ) ) { 
    107110                                $userids = $_REQUEST['users']; 
    108111 
    109112                                foreach ( $userids as $user_id ) { 
    110113                                        $user_id = (int) $user_id; 
    111                                         remove_user_from_blog( $user_id, $id ); 
     114                                        switch ( $_REQUEST['delete_option'] ) { 
     115                                        case 'delete': 
     116                                                remove_user_from_blog( $user_id, $id ); 
     117                                                break; 
     118                                        case 'reassign': 
     119                                                remove_user_from_blog( $user_id, $id, $_REQUEST['user'] ); 
     120                                                break; 
     121                                        } 
    112122                                } 
    113123                        } elseif ( isset( $_GET['user'] ) ) { 
    114                                 remove_user_from_blog( $_GET['user'] ); 
     124                                switch ( $_REQUEST['delete_option'] ) { 
     125                                case 'delete': 
     126                                        remove_user_from_blog( $_GET['user'], $id ); 
     127                                        break; 
     128                                case 'reassign': 
     129                                        remove_user_from_blog( $_GET['user'], $id, $_REQUEST['user'] ); 
     130                                        break; 
     131                                } 
    115132                        } else { 
    116133                                $update = 'err_remove'; 
    117134                        } 
     135                        $redirect = remove_query_arg( 'action', $redirect ); 
    118136                        break; 
    119137 
     138                case 'remove': 
     139                        if ( !current_user_can('remove_users')  ) 
     140                                die( __('You can’t remove users.') ); 
     141 
     142                        if ( empty($_REQUEST['users']) ) 
     143                                $userids = array( intval($_REQUEST['user']) ); 
     144                        else 
     145                                $userids = $_REQUEST['users']; 
     146 
     147                        require('../admin-header.php'); ?> 
     148<form action="" method="post" name="updateusers" id="updateusers"> 
     149<?php wp_nonce_field('remove-users') ?> 
     150 
     151<div class="wrap"> 
     152<?php screen_icon('users'); ?> 
     153<h2><?php printf( __('Remove Users from %s'), get_blogaddress_by_id($id) ); ?></h2> 
     154<p><?php _e('You have specified these users for removal:'); ?></p> 
     155<ul> 
     156<?php 
     157        $go_remove = false; 
     158        foreach ( $userids as $id ) { 
     159                $id = (int) $id; 
     160                $user = new WP_User($id); 
     161                if ( $id == $current_user->id && !is_super_admin() ) { 
     162                        echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be removed.</strong>'), $id, $user->user_login) . "</li>\n"; 
     163                } elseif ( !current_user_can('remove_user', $id) ) { 
     164                        echo "<li>" . sprintf(__('ID #%1s: %2s <strong>You don\'t have permission to remove this user.</strong>'), $id, $user->user_login) . "</li>\n"; 
     165                } else { 
     166                        echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n"; 
     167                        $go_remove = true; 
     168                } 
     169        } 
     170        ?> 
     171<?php if ( $go_remove ) : ?> 
     172        <fieldset><p><legend><?php _e('What should be done with posts and links owned by this user?'); ?></legend></p> 
     173        <ul style="list-style:none;"> 
     174                <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" /> 
     175                <?php _e('Delete all posts and links.'); ?></label></li> 
     176                <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" /> 
     177                <?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:').'</label>'; 
     178                wp_dropdown_users( array( 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li> 
     179        </ul></fieldset> 
     180        <input type="hidden" name="action" value="doremove" /> 
     181        <?php submit_button( __('Confirm Removal'), 'secondary' ); ?> 
     182<?php else : ?> 
     183        <p><?php _e('There are no valid users selected for removal.'); ?></p> 
     184<?php endif; ?> 
     185</div> 
     186</form><?php 
     187                        require('../admin-footer.php'); 
     188                        exit(); 
     189                        break; 
     190 
    120191                case 'promote': 
    121192                        $editable_roles = get_editable_roles(); 
    122193                        if ( empty( $editable_roles[$_REQUEST['new_role']] ) ) 
     
    142213        } 
    143214         
    144215        restore_current_blog(); 
    145         wp_redirect( add_query_arg( 'update', $update, wp_get_referer() ) ); 
     216        wp_redirect( add_query_arg( 'update', $update, $redirect ) ); 
    146217        exit(); 
    147218} 
    148219