WordPress.org

Make WordPress Core

Ticket #20774: 20774.diff

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

spams site based on user email and adds filter

  • wp-admin/network/users.php

     
    123123                                $userfunction = ''; 
    124124 
    125125                                foreach ( (array) $_POST['allusers'] as $key => $val ) { 
     126                 
     127                                        $mark_sites_for_spam_user = apply_filters( 'mark_sites_for_spam_user' , false , $val ); 
     128                 
    126129                                        if ( !empty( $val ) ) { 
     130                                 
     131                                                $user = get_userdata( $val ); 
     132 
     133                                                if ( false === $user || is_super_admin( $user->ID ) )  
     134                                                        continue; 
     135 
    127136                                                switch ( $doaction ) { 
    128137                                                        case 'delete': 
    129138                                                                if ( ! current_user_can( 'delete_users' ) ) 
     
    139148                                                        break; 
    140149 
    141150                                                        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  
     151                                                                if ( ! current_user_can( 'edit_users' ) )  
     152                                                                        wp_die( __( 'You do not have permission to access this page.' ) );  
    146153                                                                $userfunction = 'all_spam'; 
    147154                                                                $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 ! 
     155                                                                if ( $mark_sites_for_spam_user ) { 
     156                                                                        foreach ( (array) $blogs as $key => $details ) { 
     157                                                                                // do not mark main site 
     158                                                                                if ( $details->userblog_id == $current_site->blog_id ) 
     159                                                                                        continue; 
     160                                                                                // only if admin email is same as user 
     161                                                                                if (  $user->data->user_email != get_blog_option ( $details->userblog_id , 'admin_email' ) ) 
     162                                                                                        continue; 
    150163                                                                                update_blog_status( $details->userblog_id, 'spam', '1' ); 
     164                                                                        } 
    151165                                                                } 
    152166                                                                update_user_status( $val, 'spam', '1' ); 
    153167                                                        break; 
    154168 
    155169                                                        case 'notspam': 
     170                                                                if ( ! current_user_can( 'edit_users' ) )  
     171                                                                        wp_die( __( 'You do not have permission to access this page.' ) );  
    156172                                                                $userfunction = 'all_notspam'; 
    157173                                                                $blogs = get_blogs_of_user( $val, true ); 
    158                                                                 foreach ( (array) $blogs as $key => $details ) 
    159                                                                         update_blog_status( $details->userblog_id, 'spam', '0' ); 
    160  
     174                                                                if ( $mark_sites_for_spam_user ) { 
     175                                                                        foreach ( (array) $blogs as $key => $details ) { 
     176                                                                                // do not mark main site 
     177                                                                                if ( $details->userblog_id == $current_site->blog_id ) 
     178                                                                                        continue; 
     179                                                                                // only if admin email is same as user 
     180                                                                                if (  $user->data->user_email != get_blog_option ( $details->userblog_id , 'admin_email' ) ) 
     181                                                                                        continue; 
     182                                                                                update_blog_status( $details->userblog_id, 'spam', '0' ); 
     183                                                                        } 
     184                                                                } 
    161185                                                                update_user_status( $val, 'spam', '0' ); 
    162186                                                        break; 
    163187                                                }