BP_Members_Admin::user_admin_load()
Set up the user’s profile admin page.
Description
Loaded before the page is rendered, this function does all initial setup, including: processing form requests, registering contextual help, and setting up screen options.
Source
File: bp-members/classes/class-bp-members-admin.php
public function user_admin_load() {
// Get the user ID.
$user_id = $this->get_user_id();
// Can current user edit this profile?
if ( ! $this->member_can_edit( $user_id ) ) {
wp_die( __( 'You cannot edit the requested user.', 'buddyboss' ) );
}
// Build redirection URL.
$redirect_to = remove_query_arg( array( 'action', 'error', 'updated', 'spam', 'ham', 'delete_avatar' ), $_SERVER['REQUEST_URI'] );
$doaction = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : false;
if ( ! empty( $_REQUEST['user_status'] ) ) {
$spam = (bool) ( 'spam' === $_REQUEST['user_status'] );
if ( $spam !== bp_is_user_spammer( $user_id ) ) {
$doaction = $_REQUEST['user_status'];
}
}
/**
* Fires at the start of the signups admin load.
*
* @since BuddyPress 2.0.0
*
* @param string $doaction Current bulk action being processed.
* @param array $_REQUEST Current $_REQUEST global.
*/
do_action_ref_array( 'bp_members_admin_load', array( $doaction, $_REQUEST ) );
/**
* Filters the allowed actions for use in the user admin page.
*
* @since BuddyPress 2.0.0
*
* @param array $value Array of allowed actions to use.
*/
$allowed_actions = apply_filters( 'bp_members_admin_allowed_actions', array( 'update', 'delete_avatar', 'spam', 'ham' ) );
// Prepare the display of the Community Profile screen.
if ( ! in_array( $doaction, $allowed_actions ) ) {
add_screen_option( 'layout_columns', array( 'default' => 2, 'max' => 2, ) );
get_current_screen()->add_help_tab( array(
'id' => 'bp-profile-edit-overview',
'title' => __( 'Overview', 'buddyboss' ),
'content' =>
'<p>' . __( 'This is the admin view of a user\'s profile.', 'buddyboss' ) . '</p>' .
'<p>' . __( 'In the main column, you can edit the fields of the user\'s extended profile.', 'buddyboss' ) . '</p>' .
'<p>' . __( 'In the right-hand column, you can update the user\'s status, delete the user\'s avatar, and view recent statistics.', 'buddyboss' ) . '</p>'
) );
// Help panel - sidebar links.
get_current_screen()->set_help_sidebar(
'<p><strong>' . __( 'For more information:', 'buddyboss' ) . '</strong></p>' .
'<p>' . __( '<a href="https://www.buddyboss.com/resources/">Documentation</a>', 'buddyboss' ) . '</p>'
);
// Register metaboxes for the edit screen.
add_meta_box(
'submitdiv',
__( 'Status', 'buddyboss' ),
array( $this, 'user_admin_status_metabox' ),
get_current_screen()->id,
'side',
'core'
);
// In case xprofile is not active.
$this->stats_metabox->context = 'normal';
$this->stats_metabox->priority = 'core';
/**
* Fires before loading the profile fields if component is active.
*
* Plugins should not use this hook, please use 'bp_members_admin_user_metaboxes' instead.
*
* @since BuddyPress 2.0.0
*
* @param int $user_id Current user ID for the screen.
* @param string $id Current screen ID.
* @param object $stats_metabox Object holding position data for use with the stats metabox.
*/
do_action_ref_array( 'bp_members_admin_xprofile_metabox', array( $user_id, get_current_screen()->id, $this->stats_metabox ) );
// If xProfile is inactive, difficult to know what's profile we're on.
if ( 'normal' === $this->stats_metabox->context ) {
$display_name = bp_core_get_user_displayname( $user_id );
} else {
$display_name = __( 'Member', 'buddyboss' );
}
// User Stat metabox.
add_meta_box(
'bp_members_admin_user_stats',
sprintf( __( "%s's Stats", 'buddyboss' ), $display_name ),
array( $this, 'user_admin_stats_metabox' ),
get_current_screen()->id,
sanitize_key( $this->stats_metabox->context ),
sanitize_key( $this->stats_metabox->priority )
);
// profile type metabox. Only added if profile types have been registered.
$member_types = bp_get_member_types();
if ( ! empty( $member_types ) ) {
add_meta_box(
'bp_members_admin_member_type',
__( 'Profile Type', 'buddyboss' ),
array( $this, 'user_admin_member_type_metabox' ),
get_current_screen()->id,
'side',
'core'
);
}
/**
* Fires at the end of the Community Profile screen.
*
* Plugins can restrict metabox to "bp_moderate" admins by checking if
* the first argument ($this->is_self_profile) is false in their callback.
* They can also restrict their metabox to self profile editing
* by setting it to true.
*
* @since BuddyPress 2.0.0
*
* @param bool $is_self_profile Whether or not it is the current user's profile.
* @param int $user_id Current user ID.
*/
do_action( 'bp_members_admin_user_metaboxes', $this->is_self_profile, $user_id );
// Enqueue JavaScript files.
wp_enqueue_script( 'postbox' );
wp_enqueue_script( 'dashboard' );
// Spam or Ham user.
} elseif ( in_array( $doaction, array( 'spam', 'ham' ) ) && empty( $this->is_self_profile ) ) {
check_admin_referer( 'edit-bp-profile_' . $user_id );
if ( bp_core_process_spammer_status( $user_id, $doaction ) ) {
$redirect_to = add_query_arg( 'updated', $doaction, $redirect_to );
} else {
$redirect_to = add_query_arg( 'error', $doaction, $redirect_to );
}
bp_core_redirect( $redirect_to );
// Update other stuff once above ones are done.
} else {
$this->redirect = $redirect_to;
/**
* Fires at end of user profile admin load if doaction does not match any available actions.
*
* @since BuddyPress 2.0.0
*
* @param string $doaction Current bulk action being processed.
* @param int $user_id Current user ID.
* @param array $_REQUEST Current $_REQUEST global.
* @param string $redirect Determined redirect url to send user to.
*/
do_action_ref_array( 'bp_members_admin_update_user', array( $doaction, $user_id, $_REQUEST, $this->redirect ) );
bp_core_redirect( $this->redirect );
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.