WordPress.org

Make WordPress Core

Ticket #20774: 20774.last.diff

File 20774.last.diff, 6.8 KB (added by martythornley, 9 months ago)

fixed quick links so they check for blogs too

  • wp-admin/includes/class-wp-ms-users-list-table.php

     
    186186                                                                $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>'; 
    187187 
    188188                                                                if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) { 
     189                                                                        if ( 0 == $user->spam ) 
     190                                                                                $actions['spamuser'] = '<span class="spam"><a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'spamuser' ) . '&amp;action=spamuser&amp;id=' . $user->ID ) ) ) . '" class="spam">' . __( 'Spam' ) . '</a></span>'; 
     191                                                                        else  
     192                                                                                $actions['unspamuser'] = '<span class="spam"><a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'unspamuser' ) . '&amp;action=unspamuser&amp;id=' . $user->ID ) ) ) . '" class="spam">' . __( 'Not Spam' ) . '</a></span>'; 
    189193                                                                        $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>'; 
    190194                                                                } 
    191195 
  • wp-admin/network/users.php

     
    8888 
    8989if ( isset( $_GET['action'] ) ) { 
    9090        do_action( 'wpmuadminedit' , '' ); 
     91         
     92        $mark_sites_for_spam_user = apply_filters( 'mark_sites_for_spam_user' , false , $val ); 
    9193 
    9294        switch ( $_GET['action'] ) { 
     95 
    9396                case 'deleteuser': 
    9497                        if ( ! current_user_can( 'manage_network_users' ) ) 
    9598                                wp_die( __( 'You do not have permission to access this page.' ) ); 
    96  
    9799                        check_admin_referer( 'deleteuser' ); 
    98100 
    99101                        $id = intval( $_GET['id'] ); 
     
    111113                        } 
    112114                        exit(); 
    113115                break; 
     116                 
     117                case 'spamuser': 
     118                         
     119                        if ( ! current_user_can( 'edit_users' ) )  
     120                                wp_die( __( 'You do not have permission to access this page.' ) );  
     121                        check_admin_referer( 'spamuser' ); 
     122                         
     123                        $id = intval( $_GET['id'] );                     
     124                        $user = get_userdata( $id ); 
     125                        if ( false === $user || is_super_admin( $user->ID ) )  
     126                                continue; 
     127                                 
     128                        $blogs = get_blogs_of_user( $id, true ); 
     129                        if ( $mark_sites_for_spam_user ) { 
     130                         
     131                                foreach ( (array) $blogs as $key => $details ) { 
     132                                        // do not mark main site 
     133                                        if ( $details->userblog_id == $current_site->blog_id ) 
     134                                                continue; 
     135                                        // only if admin email is same as user 
     136                                        if (  $user->data->user_email != get_blog_option ( $details->userblog_id , 'admin_email' ) ) 
     137                                                continue; 
     138                                        update_blog_status( $details->userblog_id, 'spam', '1' ); 
     139                                } 
     140                        } 
     141                        update_user_status( $id, 'spam', '1' ); 
     142                        wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) ); 
     143                 
     144                break; 
     145                 
     146                case 'unspamuser' :      
     147                         
     148                        if ( ! current_user_can( 'edit_users' ) )  
     149                                wp_die( __( 'You do not have permission to access this page.' ) );  
     150                        check_admin_referer( 'unspamuser' ); 
     151                         
     152                        $id = intval( $_GET['id'] ); 
     153                        $user = get_userdata( $id ); 
     154                        if ( false === $user || is_super_admin( $user->ID ) )  
     155                                continue; 
     156                                 
     157                        $blogs = get_blogs_of_user( $id, true ); 
     158                        if ( $mark_sites_for_spam_user ) { 
     159                                foreach ( (array) $blogs as $key => $details ) { 
     160                                        // do not mark main site 
     161                                        if ( $details->userblog_id == $current_site->blog_id ) 
     162                                                continue; 
     163                                        // only if admin email is same as user 
     164                                        if (  $user->data->user_email != get_blog_option ( $details->userblog_id , 'admin_email' ) ) 
     165                                                continue; 
     166                                        update_blog_status( $details->userblog_id, 'spam', '0' ); 
     167                                } 
     168                        } 
     169                        update_user_status( $id, 'spam', '0' ); 
     170                        wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) ); 
    114171 
     172                break; 
     173                 
    115174                case 'allusers': 
    116175                        if ( !current_user_can( 'manage_network_users' ) ) 
    117176                                wp_die( __( 'You do not have permission to access this page.' ) ); 
     
    123182                                $userfunction = ''; 
    124183 
    125184                                foreach ( (array) $_POST['allusers'] as $key => $val ) { 
     185                         
    126186                                        if ( !empty( $val ) ) { 
     187                                 
     188                                                $user = get_userdata( $val ); 
     189 
     190                                                if ( false === $user || is_super_admin( $user->ID ) )  
     191                                                        continue; 
     192 
    127193                                                switch ( $doaction ) { 
    128194                                                        case 'delete': 
    129195                                                                if ( ! current_user_can( 'delete_users' ) ) 
     
    139205                                                        break; 
    140206 
    141207                                                        case 'spam': 
    142                                                                 $user = get_userdata( $val ); 
    143                                                                 if ( is_super_admin( $user->ID ) ) 
    144                                                                         wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) ); 
    145  
     208                                                                if ( ! current_user_can( 'edit_users' ) )  
     209                                                                        wp_die( __( 'You do not have permission to access this page.' ) );  
    146210                                                                $userfunction = 'all_spam'; 
    147211                                                                $blogs = get_blogs_of_user( $val, true ); 
    148                                                                 foreach ( (array) $blogs as $key => $details ) { 
    149                                                                         if ( $details->userblog_id != $current_site->blog_id ) // main blog not a spam ! 
     212                                                                if ( $mark_sites_for_spam_user ) { 
     213                                                                        foreach ( (array) $blogs as $key => $details ) { 
     214                                                                                // do not mark main site 
     215                                                                                if ( $details->userblog_id == $current_site->blog_id ) 
     216                                                                                        continue; 
     217                                                                                // only if admin email is same as user 
     218                                                                                if (  $user->data->user_email != get_blog_option ( $details->userblog_id , 'admin_email' ) ) 
     219                                                                                        continue; 
    150220                                                                                update_blog_status( $details->userblog_id, 'spam', '1' ); 
     221                                                                        } 
    151222                                                                } 
    152223                                                                update_user_status( $val, 'spam', '1' ); 
    153224                                                        break; 
    154225 
    155226                                                        case 'notspam': 
     227                                                                if ( ! current_user_can( 'edit_users' ) )  
     228                                                                        wp_die( __( 'You do not have permission to access this page.' ) );  
    156229                                                                $userfunction = 'all_notspam'; 
    157230                                                                $blogs = get_blogs_of_user( $val, true ); 
    158                                                                 foreach ( (array) $blogs as $key => $details ) 
    159                                                                         update_blog_status( $details->userblog_id, 'spam', '0' ); 
    160  
     231                                                                if ( $mark_sites_for_spam_user ) { 
     232                                                                        foreach ( (array) $blogs as $key => $details ) { 
     233                                                                                // do not mark main site 
     234                                                                                if ( $details->userblog_id == $current_site->blog_id ) 
     235                                                                                        continue; 
     236                                                                                // only if admin email is same as user 
     237                                                                                if (  $user->data->user_email != get_blog_option ( $details->userblog_id , 'admin_email' ) ) 
     238                                                                                        continue; 
     239                                                                                update_blog_status( $details->userblog_id, 'spam', '0' ); 
     240                                                                        } 
     241                                                                } 
    161242                                                                update_user_status( $val, 'spam', '0' ); 
    162243                                                        break; 
    163244                                                }