Make WordPress Core

Ticket #40265: 40265.diff

File 40265.diff, 6.2 KB (added by johnbillion, 7 years ago)
  • src/wp-admin/includes/class-wp-users-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-users-list-table.php b/src/wp-admin/includes/class-wp-users-list-table.php
    index 8c80e9070d..644925748b 100644
    a b class WP_Users_List_Table extends WP_List_Table { 
    102102                                'search' => $usersearch,
    103103                                'fields' => 'all_with_meta'
    104104                        );
     105                } elseif ( '-1' === $role && current_user_can( 'manage_network_users' ) ) {
     106                        $args = array(
     107                                'number'  => $users_per_page,
     108                                'offset'  => ( $paged-1 ) * $users_per_page,
     109                                'blog_id' => 0,
     110                                'search'  => $usersearch,
     111                                'fields'  => 'all_with_meta'
     112                        );
    105113                } else {
    106114                        $args = array(
    107115                                'number' => $users_per_page,
    class WP_Users_List_Table extends WP_List_Table { 
    115123                if ( '' !== $args['search'] )
    116124                        $args['search'] = '*' . $args['search'] . '*';
    117125
    118                 if ( $this->is_site_users )
     126                if ( $this->is_site_users && ! isset( $args['blog_id'] ) )
    119127                        $args['blog_id'] = $this->site_id;
    120128
    121129                if ( isset( $_REQUEST['orderby'] ) )
    class WP_Users_List_Table extends WP_List_Table { 
    222230
    223231                }
    224232
     233                if ( current_user_can( 'manage_network_users' ) ) {
     234                        $class = ( '-1' === $role ) ? ' class="current"' : '';
     235                        $name  = __( 'All Network Users' );
     236                        $role_links['all_network'] = "<a href='" . esc_url( add_query_arg( 'role', '-1', $url ) ) . "'$class>$name</a>";
     237                }
     238
    225239                return $role_links;
    226240        }
    227241
    class WP_Users_List_Table extends WP_List_Table { 
    357371                        $post_counts = count_many_users_posts( array_keys( $this->items ) );
    358372
    359373                foreach ( $this->items as $userid => $user_object ) {
    360                         if ( is_multisite() && empty( $user_object->allcaps ) )
    361                                 continue;
    362 
    363374                        echo "\n\t" . $this->single_row( $user_object, '', '', isset( $post_counts ) ? $post_counts[ $userid ] : 0 );
    364375                }
    365376        }
    class WP_Users_List_Table extends WP_List_Table { 
    410421
    411422                        if ( !is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'delete_user', $user_object->ID ) )
    412423                                $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url( "users.php?action=delete&amp;user=$user_object->ID", 'bulk-users' ) . "'>" . __( 'Delete' ) . "</a>";
    413                         if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) )
     424                        if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) && is_user_member_of_blog( $user_object->ID, $this->site_id ) )
    414425                                $actions['remove'] = "<a class='submitdelete' href='" . wp_nonce_url( $url."action=remove&amp;user=$user_object->ID", 'bulk-users' ) . "'>" . __( 'Remove' ) . "</a>";
    415426
    416427                        /**
    class WP_Users_List_Table extends WP_List_Table { 
    476487                                                $r .= "<a href='" . esc_url( "mailto:$email" ) . "'>$email</a>";
    477488                                                break;
    478489                                        case 'role':
    479                                                 $r .= esc_html( $roles_list );
     490                                                if ( empty( $roles_list ) ) {
     491                                                        $r .= '<span aria-hidden="true">&#8212;</span><span class="screen-reader-text">' . __( 'User is not a member of this site' ) . '</span>';
     492                                                } else {
     493                                                        $r .= esc_html( $roles_list );
     494                                                }
    480495                                                break;
    481496                                        case 'posts':
    482497                                                if ( $numposts > 0 ) {
    class WP_Users_List_Table extends WP_List_Table { 
    544559                        }
    545560                }
    546561
    547                 if ( empty( $role_list ) ) {
     562                if ( is_user_member_of_blog( $user_object->ID, $this->site_id ) && empty( $role_list ) ) {
    548563                        $role_list['none'] = _x( 'None', 'no user roles' );
    549564                }
    550565
  • src/wp-admin/network/site-users.php

    diff --git a/src/wp-admin/network/site-users.php b/src/wp-admin/network/site-users.php
    index fcd1a863d0..58cf07428c 100644
    a b if ( $action ) { 
    148148                                foreach ( $userids as $user_id ) {
    149149                                        $user_id = (int) $user_id;
    150150
    151                                         // If the user doesn't already belong to the blog, bail.
     151                                        // If the user doesn't already belong to the blog:
    152152                                        if ( ! is_user_member_of_blog( $user_id ) ) {
    153                                                 wp_die(
    154                                                         '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
    155                                                         '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
    156                                                         403
    157                                                 );
     153                                                if ( current_user_can( 'manage_network_users' ) ) {
     154                                                        add_existing_user_to_blog( array(
     155                                                                'user_id' => $user_id,
     156                                                                'role'    => $_REQUEST['new_role'],
     157                                                        ) );
     158                                                } else {
     159                                                        wp_die(
     160                                                                '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
     161                                                                '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
     162                                                                403
     163                                                        );
     164                                                }
     165                                        } else {
     166                                                $user = get_userdata( $user_id );
     167                                                $user->set_role( $_REQUEST['new_role'] );
    158168                                        }
    159169
    160                                         $user = get_userdata( $user_id );
    161                                         $user->set_role( $_REQUEST['new_role'] );
    162170                                }
    163171                        } else {
    164172                                $update = 'err_promote';
    endif; ?> 
    260268<form class="search-form" method="get">
    261269<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
    262270<input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
     271<?php if ( isset( $_GET['role'] ) && '-1' === $_GET['role'] ) { ?>
     272        <input type="hidden" name="role" value="-1" />
     273<?php } ?>
    263274</form>
    264275
    265276<?php $wp_list_table->views(); ?>
  • src/wp-admin/users.php

    diff --git a/src/wp-admin/users.php b/src/wp-admin/users.php
    index 087d93f1b7..0da39d7b68 100644
    a b case 'promote': 
    127127                                continue;
    128128                }
    129129
    130                 // If the user doesn't already belong to the blog, bail.
     130                // If the user doesn't already belong to the blog:
    131131                if ( is_multisite() && !is_user_member_of_blog( $id ) ) {
    132                         wp_die(
    133                                 '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
    134                                 '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
    135                                 403
    136                         );
     132                        if ( current_user_can( 'manage_network_users' ) ) {
     133                                add_existing_user_to_blog( array(
     134                                        'user_id' => $id,
     135                                        'role'    => $role,
     136                                ) );
     137                        } else {
     138                                wp_die(
     139                                        '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
     140                                        '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
     141                                        403
     142                                );
     143                        }
     144                } else {
     145                        $user = get_userdata( $id );
     146                        $user->set_role( $role );
    137147                }
    138148
    139                 $user = get_userdata( $id );
    140                 $user->set_role( $role );
    141149        }
    142150
    143151        wp_redirect(add_query_arg('update', $update, $redirect));