WordPress.org

Make WordPress Core

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

File 15855-site-users-confirmation.patch, 4.0 KB (added by SergeyBiryukov, 7 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