Make WordPress Core

Ticket #40265: 40265.2.diff

File 40265.2.diff, 6.1 KB (added by johnbillion, 4 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 018654bdd2..699e1a19f4 100644
    a b class WP_Users_List_Table extends WP_List_Table { 
    101101                                'search'  => $usersearch,
    102102                                'fields'  => 'all_with_meta',
    103103                        );
     104                } elseif ( '-1' === $role && current_user_can( 'manage_network_users' ) ) {
     105                        $args = array(
     106                                'number'  => $users_per_page,
     107                                'offset'  => ( $paged - 1 ) * $users_per_page,
     108                                'blog_id' => 0,
     109                                'search'  => $usersearch,
     110                                'fields'  => 'all_with_meta'
     111                        );
    104112                } else {
    105113                        $args = array(
    106114                                'number' => $users_per_page,
    class WP_Users_List_Table extends WP_List_Table { 
    115123                        $args['search'] = '*' . $args['search'] . '*';
    116124                }
    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
    class WP_Users_List_Table extends WP_List_Table { 
    251259                        $role_links['none'] = "<a href='" . esc_url( add_query_arg( 'role', 'none', $url ) ) . "'$current_link_attributes>$name</a>";
    252260                }
    253261
     262                if ( current_user_can( 'manage_network_users' ) ) {
     263                        $current_link_attributes = '';
     264
     265                        if ( '-1' === $role ) {
     266                                $current_link_attributes = ' class="current" aria-current="page"';
     267                        }
     268
     269                        $name = __( 'All Network Users' );
     270
     271                        $role_links['all_network'] = "<a href='" . esc_url( add_query_arg( 'role', '-1', $url ) ) . "'$current_link_attributes>$name</a>";
     272                }
     273
    254274                return $role_links;
    255275        }
    256276
    class WP_Users_List_Table extends WP_List_Table { 
    454474                        if ( ! is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'delete_user', $user_object->ID ) ) {
    455475                                $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url( "users.php?action=delete&amp;user=$user_object->ID", 'bulk-users' ) . "'>" . __( 'Delete' ) . '</a>';
    456476                        }
    457                         if ( is_multisite() && current_user_can( 'remove_user', $user_object->ID ) ) {
     477
     478                        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 ) ) {
    458479                                $actions['remove'] = "<a class='submitdelete' href='" . wp_nonce_url( $url . "action=remove&amp;user=$user_object->ID", 'bulk-users' ) . "'>" . __( 'Remove' ) . '</a>';
    459480                        }
    460481
    class WP_Users_List_Table extends WP_List_Table { 
    551572                                                $r .= "<a href='" . esc_url( "mailto:$email" ) . "'>$email</a>";
    552573                                                break;
    553574                                        case 'role':
    554                                                 $r .= esc_html( $roles_list );
     575                                                if ( empty( $roles_list ) ) {
     576                                                        $r .= sprintf(
     577                                                                '<span aria-hidden="true">&#8212;</span><span class="screen-reader-text">%s</span>',
     578                                                                __( 'User is not a member of this site' )
     579                                                        );
     580                                                } else {
     581                                                        $r .= esc_html( $roles_list );
     582                                                }
    555583                                                break;
    556584                                        case 'posts':
    557585                                                if ( $numposts > 0 ) {
    class WP_Users_List_Table extends WP_List_Table { 
    623651                        }
    624652                }
    625653
    626                 if ( empty( $role_list ) ) {
     654                if ( empty( $role_list ) && is_user_member_of_blog( $user_object->ID, $this->site_id ) ) {
    627655                        $role_list['none'] = _x( 'None', 'no user roles' );
    628656                }
    629657
  • 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 cb00cab973..7d64fec5b6 100644
    a b if ( $action ) { 
    156156                                foreach ( $userids as $user_id ) {
    157157                                        $user_id = (int) $user_id;
    158158
    159                                         // If the user doesn't already belong to the blog, bail.
     159                                        // If the user doesn't already belong to the blog:
    160160                                        if ( ! is_user_member_of_blog( $user_id ) ) {
    161                                                 wp_die(
    162                                                         '<h1>' . __( 'Something went wrong.' ) . '</h1>' .
    163                                                         '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
    164                                                         403
    165                                                 );
     161                                                if ( current_user_can( 'manage_network_users' ) ) {
     162                                                        add_existing_user_to_blog( array(
     163                                                                'user_id' => $user_id,
     164                                                                'role'    => $role,
     165                                                        ) );
     166                                                } else {
     167                                                        wp_die(
     168                                                                '<h1>' . __( 'Something went wrong.' ) . '</h1>' .
     169                                                                '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
     170                                                                403
     171                                                        );
     172                                                }
     173                                        } else {
     174                                                $user = get_userdata( $user_id );
     175                                                $user->set_role( $role );
    166176                                        }
    167 
    168                                         $user = get_userdata( $user_id );
    169                                         $user->set_role( $role );
    170177                                }
    171178                        } else {
    172179                                $update = 'err_promote';
    endif; 
    275282<form class="search-form" method="get">
    276283<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
    277284<input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
     285<?php if ( isset( $_GET['role'] ) && '-1' === $_GET['role'] ) { ?>
     286        <input type="hidden" name="role" value="-1" />
     287<?php } ?>
    278288</form>
    279289
    280290<?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 04164d7179..d773a5c1ec 100644
    a b switch ( $wp_list_table->current_action() ) { 
    139139                                        continue;
    140140                        }
    141141
    142                         // If the user doesn't already belong to the blog, bail.
    143                         if ( is_multisite() && ! is_user_member_of_blog( $id ) ) {
    144                                 wp_die(
    145                                         '<h1>' . __( 'Something went wrong.' ) . '</h1>' .
    146                                         '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
    147                                         403
    148                                 );
     142                        // If the user doesn't already belong to the blog:
     143                        if ( ! is_user_member_of_blog( $id ) ) {
     144                                if ( current_user_can( 'manage_network_users' ) ) {
     145                                        add_existing_user_to_blog( array(
     146                                                'user_id' => $id,
     147                                                'role'    => $role,
     148                                        ) );
     149                                } else {
     150                                        wp_die(
     151                                                '<h1>' . __( 'Something went wrong.' ) . '</h1>' .
     152                                                '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
     153                                                403
     154                                        );
     155                                }
     156                        } else {
     157                                $user = get_userdata( $id );
     158                                $user->set_role( $role );
    149159                        }
    150 
    151                         $user = get_userdata( $id );
    152                         $user->set_role( $role );
    153160                }
    154161
    155162                wp_redirect( add_query_arg( 'update', $update, $redirect ) );