Ticket #6123: 6123.patch
File 6123.patch, 4.4 KB (added by , 10 years ago) |
---|
-
src/bp-core/bp-core-catchuri.php
diff --git src/bp-core/bp-core-catchuri.php src/bp-core/bp-core-catchuri.php index a0dcb8a..c433b8a 100644
function bp_core_set_uri_globals() { 269 269 return; 270 270 } 271 271 272 // If the displayed user is marked as a spammer , 404 (unless logged-272 // If the displayed user is marked as a spammer or the account is not active, 404 (unless logged- 273 273 // in user is a super admin) 274 if ( bp_displayed_user_id() && bp_is_user_spammer( bp_displayed_user_id() )) {275 if ( bp_current_user_can( 'bp_moderate' ) ) { 276 bp_core_add_message( __( 'This user has been marked as a spammer. Only site admins can view this profile.', 'buddypress' ), 'warning' );277 } else{274 if ( bp_displayed_user_id() ) { 275 276 // Do not display a "not activated" signup as a member 277 if ( ! bp_is_signup_activated( bp_displayed_user_id() ) ) { 278 278 bp_do_404(); 279 279 return; 280 280 } 281 282 // Only display spammer if the user is a super admin 283 if ( bp_is_user_spammer( bp_displayed_user_id() ) ) { 284 if ( bp_current_user_can( 'bp_moderate' ) ) { 285 bp_core_add_message( __( 'This user has been marked as a spammer. Only site admins can view this profile.', 'buddypress' ), 'warning' ); 286 } else { 287 bp_do_404(); 288 return; 289 } 290 } 281 291 } 282 292 283 293 // Bump the offset -
src/bp-members/bp-members-functions.php
diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php index 72a035d..e8b2e4f 100644
function bp_is_user_spammer( $user_id = 0 ) { 977 977 } 978 978 979 979 /** 980 * Check whether a signup has been activated. 981 * 982 * On non multisite config, a not activated signup account can be displayed as a member. 983 * In case BP_SIGNUPS_SKIP_USER_CREATION is not set to true, we keep on creating the user, 984 * so we need to check if the user status is set to 2. 985 * 986 * @since BuddyPress (2.2.0) 987 * 988 * @param int $user_id The ID for the user. 989 * @return bool True if signup has been activated, otherwise false. 990 */ 991 function bp_is_signup_activated( $user_id = 0 ) { 992 993 // No user to check 994 if ( empty( $user_id ) ) { 995 return false; 996 } 997 998 $bp = buddypress(); 999 1000 // Assume signup is not activated 1001 $is_activated = false; 1002 1003 // Setup our user 1004 $user = false; 1005 1006 // Get locally-cached data if available 1007 switch ( $user_id ) { 1008 case bp_loggedin_user_id() : 1009 $user = ! empty( $bp->loggedin_user->userdata ) ? $bp->loggedin_user->userdata : false; 1010 break; 1011 1012 case bp_displayed_user_id() : 1013 $user = ! empty( $bp->displayed_user->userdata ) ? $bp->displayed_user->userdata : false; 1014 break; 1015 } 1016 1017 // Manually get userdata if still empty 1018 if ( empty( $user ) ) { 1019 $user = get_userdata( $user_id ); 1020 } 1021 1022 /** 1023 * User found 1024 * Check the network config to eventually get the user status 1025 */ 1026 if ( ! empty( $user ) ) { 1027 if ( ! bp_is_network_activated() ) { 1028 $is_activated = 2 != $user->user_status; 1029 1030 // When BuddyPress is network activated, as it's a multisite config 1031 // users are not created till the signup hasn't been activated. 1032 // having a user set, means the signup has been activated. 1033 } else { 1034 $is_activated = true; 1035 } 1036 } 1037 1038 /** 1039 * Filters whether a signup has been activated. 1040 * 1041 * @since BuddyPress (2.2.0) 1042 * 1043 * @param bool $is_activated Whether or not signup has been activated. 1044 * @param WP_User the user object 1045 */ 1046 return apply_filters( 'bp_is_signup_activated', (bool) $is_activated, $user ); 1047 } 1048 1049 /** 980 1050 * Check whether a user has been marked as deleted. 981 1051 * 982 1052 * @param int $user_id The ID for the user. -
src/bp-members/bp-members-loader.php
diff --git src/bp-members/bp-members-loader.php src/bp-members/bp-members-loader.php index ecdf91e..8427cca 100644
class BP_Members_Component extends BP_Component { 199 199 // users without the cap trying to access a spammer's subnav page will get 200 200 // redirected to the root of the spammer's profile page. this occurs by 201 201 // by removing the component in the canonical stack. 202 if ( bp_is_user_spammer( bp_displayed_user_id() ) && ! bp_current_user_can( 'bp_moderate') ) {202 if ( ( bp_is_user_spammer( bp_displayed_user_id() ) && ! bp_current_user_can( 'bp_moderate' ) ) || ! bp_is_signup_activated( bp_displayed_user_id() ) ) { 203 203 unset( $bp->canonical_stack['component'] ); 204 204 } 205 205 }