Make WordPress Core


Ignore:
Timestamp:
11/24/2010 05:31:25 AM (13 years ago)
Author:
PeteMall
Message:

Adapt user-list-table for network admin site-users. See #15558

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/network/site-users.php

    r16441 r16560  
    1616if ( ! current_user_can('manage_sites') )
    1717    wp_die(__('You do not have sufficient permissions to edit this site.'));
     18
     19$wp_list_table = get_list_table('WP_Users_List_Table');
     20$wp_list_table->check_permissions();
     21$wp_list_table->prepare_items();
     22
     23$action = $wp_list_table->current_action();
     24
     25$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : '';
     26
     27// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
     28$_SERVER['REQUEST_URI'] = remove_query_arg(array('enable', 'disable', 'enable-selected', 'disable-selected'), $_SERVER['REQUEST_URI']);
    1829
    1930$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
     
    3950}
    4051
    41 if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] ) {
    42     check_admin_referer( 'edit-site' );
     52$action = $wp_list_table->current_action();
    4353
     54if ( $action ) {
    4455    switch_to_blog( $id );
     56   
     57    switch ( $action ) {
     58        case 'adduser':
     59            if ( !empty( $_POST['newuser'] ) ) {
     60                $newuser = $_POST['newuser'];
     61                $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
     62                if ( $userid ) {
     63                    $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
     64                    if ( $user == false )
     65                        add_user_to_blog( $id, $userid, $_POST['new_role'] );
     66                }
     67            }
     68            break;
     69       
     70        case 'remove':
     71            if ( !current_user_can('remove_users')  )
     72                die(__('You can’t remove users.'));
    4573
    46     // user roles
    47     if ( isset( $_POST['role'] ) && is_array( $_POST['role'] ) == true ) {
    48         $newroles = $_POST['role'];
     74            if ( isset( $_REQUEST['users'] ) ) {
     75                $userids = $_REQUEST['users'];
    4976
    50         reset( $newroles );
    51         foreach ( (array) $newroles as $userid => $role ) {
    52             $user = new WP_User( $userid );
    53             if ( empty( $user->ID ) )
    54                 continue;
    55             $user->for_blog( $id );
    56             $user->set_role( $role );
    57         }
     77                foreach ( $userids as $user_id ) {
     78                    $user_id = (int) $user_id;
     79                    remove_user_from_blog( $user_id, $id );
     80                }
     81            } else {
     82                remove_user_from_blog( $_GET['user'] );
     83            }
     84            break;
     85
     86        case 'promote':
     87            $editable_roles = get_editable_roles();
     88            if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
     89                wp_die(__('You can’t give users that role.'));
     90
     91            $userids = $_REQUEST['users'];
     92            $update = 'promote';
     93            foreach ( $userids as $user_id ) {
     94                $user_id = (int) $user_id;
     95
     96                // If the user doesn't already belong to the blog, bail.
     97                if ( !is_user_member_of_blog( $user_id ) )
     98                    wp_die(__('Cheatin’ uh?'));
     99
     100                $user = new WP_User( $user_id );
     101                $user->set_role( $_REQUEST['new_role'] );
     102            }
     103            break;
    58104    }
    59 
    60     // remove user
    61     if ( isset( $_POST['blogusers'] ) && is_array( $_POST['blogusers'] ) ) {
    62         reset( $_POST['blogusers'] );
    63         foreach ( (array) $_POST['blogusers'] as $key => $val )
    64             remove_user_from_blog( $key, $id );
    65     }
    66 
    67     // change password
    68     if ( isset( $_POST['user_password'] ) && is_array( $_POST['user_password'] ) ) {
    69         reset( $_POST['user_password'] );
    70         $newroles = $_POST['role'];
    71         foreach ( (array) $_POST['user_password'] as $userid => $pass ) {
    72             unset( $_POST['role'] );
    73             $_POST['role'] = $newroles[ $userid ];
    74             if ( $pass != '' ) {
    75                 $cap = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM {$wpdb->usermeta} WHERE user_id = %d AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'", $userid ) );
    76                 $userdata = get_userdata($userid);
    77                 $_POST['pass1'] = $_POST['pass2'] = $pass;
    78                 $_POST['email'] = $userdata->user_email;
    79                 $_POST['rich_editing'] = $userdata->rich_editing;
    80                 edit_user( $userid );
    81                 if ( $cap == null )
    82                     $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->usermeta} WHERE user_id = %d AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'", $userid ) );
    83             }
    84         }
    85         unset( $_POST['role'] );
    86         $_POST['role'] = $newroles;
    87     }
    88 
    89     // add user
    90     if ( !empty( $_POST['newuser'] ) ) {
    91         $newuser = $_POST['newuser'];
    92         $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
    93         if ( $userid ) {
    94             $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
    95             if ( $user == false )
    96                 add_user_to_blog( $id, $userid, $_POST['new_role'] );
    97         }
    98     }
    99 
     105   
    100106    restore_current_blog();
    101     wp_redirect( add_query_arg( array( 'update' => 'updated', 'id' => $id ), 'site-users.php') );
     107    wp_redirect( wp_get_referer() ); // @todo add_query_arg for update message
    102108}
    103109
    104 if ( isset($_GET['update']) ) {
    105     $messages = array();
    106     if ( 'updated' == $_GET['update'] )
    107         $messages[] = __('Site users updated.');
    108 }
     110add_screen_option( 'per_page', array( 'label' => _x( 'Users', 'users per page (screen options)' ) ) );
    109111
    110112$title = sprintf( __('Edit Site: %s'), get_blogaddress_by_id($id));
     
    129131?>
    130132</h3>
    131 <?php
    132 if ( ! empty( $messages ) ) {
    133     foreach ( $messages as $msg )
    134         echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
    135 } ?>
     133<form class="search-form" action="" method="get">
     134<p class="search-box">
     135    <label class="screen-reader-text" for="user-search-input"><?php _e( 'Search Users' ); ?>:</label>
     136    <input type="text" id="user-search-input" name="s" value="<?php echo esc_attr($usersearch); ?>" />
     137    <?php submit_button( __( 'Search Users' ), 'button', 'submit', false ); ?>
     138</p>
     139</form>
     140
     141<?php $wp_list_table->views(); ?>
     142
    136143<form method="post" action="site-users.php?action=update-site">
    137144    <?php wp_nonce_field( 'edit-site' ); ?>
    138145    <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
    139 <?php
    140 $blogusers = get_users( array( 'blog_id' => $id, 'number' => 20 ) );
    141146
    142 if ( is_array( $blogusers ) ) {
    143     echo '<table class="form-table">';
    144     echo "<tr><th>" . __( 'User' ) . "</th><th>" . __( 'Role' ) . "</th><th>" . __( 'Password' ) . "</th><th>" . __( 'Remove' ) . "</th></tr>";
    145     $user_count = 0;
     147<?php $wp_list_table->display(); ?>
    146148
    147     foreach ( $blogusers as $user_id => $user_object ) {
    148         $user_count++;
    149         $existing_role = reset( $user_object->roles );
    150 
    151         echo '<tr><td><a href="user-edit.php?user_id=' . $user_id . '">' . $user_object->user_login . '</a></td>';
    152         if ( $user_id != $current_user->data->ID ) {
    153             ?>
    154             <td>
    155                 <select name="role[<?php echo $user_id ?>]" id="new_role_1"><?php
    156                     foreach ( $editblog_roles as $role => $role_assoc ){
    157                         $name = translate_user_role( $role_assoc['name'] );
    158                         echo '<option ' . selected( $role, $existing_role, false ) . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
    159                     }
    160                     ?>
    161                 </select>
    162             </td>
    163             <td>
    164                 <input type="text" name="user_password[<?php echo esc_attr( $user_id ) ?>]" />
    165             </td>
    166             <?php
    167             echo '<td><input title="' . __( 'Click to remove user' ) . '" type="checkbox" name="blogusers[' . esc_attr( $user_id ) . ']" /></td>';
    168         } else {
    169             echo "<td><strong>" . __ ( 'N/A' ) . "</strong></td><td><strong>" . __ ( 'N/A' ) . "</strong></td><td><strong>" . __( 'N/A' ) . "</strong></td>";
    170         }
    171         echo '</tr>';
    172     }
    173     echo "</table>";
    174     submit_button();
    175     if ( 20 == $user_count )
    176         echo '<p>' . sprintf( __('First 20 users shown. <a href="%s">Manage all users</a>.'), get_admin_url($id, 'users.php') ) . '</p>';
    177 } else {
    178     _e('This site has no users.');
    179 }
    180 ?>
    181149</form>
    182150
    183151<h3 id="add-new-user"><?php _e('Add Existing User') ?></h3>
    184152<p class="description"><?php _e( 'Enter the username of an existing user.' ) ?></p>
    185     <form action="site-users.php?action=update-site" id="adduser" method="post">
     153    <form action="site-users.php?action=adduser" id="adduser" method="post">
    186154    <?php wp_nonce_field( 'edit-site' ); ?>
    187155    <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
Note: See TracChangeset for help on using the changeset viewer.