Skip to:
Content

BuddyPress.org

Ticket #5275: 5275.bp_is_user_spammer.patch

File 5275.bp_is_user_spammer.patch, 3.0 KB (added by r-a-y, 11 years ago)
  • bp-members/bp-members-functions.php

    add_action( 'make_ham_user', 'bp_core_mark_user_ham_admin' ); 
    642642 * Checks if the user has been marked as a spammer.
    643643 *
    644644 * @package BuddyPress Core
    645  * @param int $user_id int The id for the user.
     645 * @param int|WP_User $user If integer, pass the user ID. Otherwise, pass the
     646 *  WP_User object.
    646647 * @return bool True if spammer, False if not.
    647648 */
    648 function bp_is_user_spammer( $user_id = 0 ) {
     649function bp_is_user_spammer( $user = 0 ) {
    649650
    650651        // No user to check
    651         if ( empty( $user_id ) )
     652        if ( empty( $user ) )
    652653                return false;
    653654
    654         $bp = buddypress();
    655 
    656655        // Assume user is not spam
    657656        $is_spammer = false;
    658657
    659         // Setup our user
    660         $user = false;
     658        // If $user is numeric, get the user data
     659        if( ! is_a( $user, 'WP_User' ) && is_numeric( $user ) ) {
    661660
    662         // Get locally-cached data if available
    663         switch ( $user_id ) {
    664                 case bp_loggedin_user_id() :
    665                         $user = ! empty( $bp->loggedin_user->userdata ) ? $bp->loggedin_user->userdata : false;
    666                         break;
     661                $user_id = $user;
    667662
    668                 case bp_displayed_user_id() :
    669                         $user = ! empty( $bp->displayed_user->userdata ) ? $bp->displayed_user->userdata : false;
    670                         break;
    671         }
     663                $bp = buddypress();
    672664
    673         // Manually get userdata if still empty
    674         if ( empty( $user ) ) {
    675                 $user = get_userdata( $user_id );
    676         }
     665                // Get locally-cached userdata if available
     666                switch ( $user_id ) {
     667                        case bp_loggedin_user_id() :
     668                                $user = ! empty( $bp->loggedin_user->userdata ) ? $bp->loggedin_user->userdata : false;
     669                                break;
    677670
    678         // No user found
    679         if ( empty( $user ) ) {
    680                 $is_spammer = false;
     671                        case bp_displayed_user_id() :
     672                                $user = ! empty( $bp->displayed_user->userdata ) ? $bp->displayed_user->userdata : false;
     673                                break;
     674                }
    681675
    682         // User found
    683         } else {
     676                // Manually get userdata if still empty
     677                if ( empty( $user ) ) {
     678                        $user = get_userdata( $user_id );
     679                }
    684680
    685                 // Check if spam
    686                 if ( !empty( $user->spam ) )
    687                         $is_spammer = true;
     681        }
    688682
    689                 if ( 1 == $user->user_status )
    690                         $is_spammer = true;
     683        // Spam check
     684        if ( ! empty( $user ) ) {
     685
     686                // Multisite
     687                if ( is_multisite() ) {
     688                        if ( ! empty( $user->spam ) ) {
     689                                $is_spammer = true;
     690                        }
     691
     692                // Single-site
     693                } else {
     694                        if ( 1 == $user->user_status ) {
     695                                $is_spammer = true;
     696                        }
     697                }
    691698        }
    692699
    693700        return apply_filters( 'bp_is_user_spammer', (bool) $is_spammer );
    function bp_core_boot_spammer( $user ) { 
    973980
    974981        // the user exists; now do a check to see if the user is a spammer
    975982        // if the user is a spammer, stop them in their tracks!
    976         if ( is_a( $user, 'WP_User' ) && ( ( is_multisite() && (int) $user->spam ) || 1 == $user->user_status ) )
     983        if ( bp_is_user_spammer( $user ) ) {
    977984                return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Your account has been marked as a spammer.', 'buddypress' ) );
     985        }
    978986
    979987        // user is good to go!
    980988        return $user;