BP_REST_XProfile_Update_Endpoint::validate_update( int $field_id, int $user_id, mixed $value )
Validate field update for the user with value.
Description
Parameters
- $field_id
-
(Required) The ID of the field, or the $name of the field.
- $user_id
-
(Required) Displayed user ID.
- $value
-
(Required) The value for the field you want to set for the user.
Return
(array)
Source
File: bp-xprofile/classes/class-bp-rest-xprofile-update-endpoint.php
public function validate_update( $field_id, $user_id, $value ) {
$is_required = xprofile_check_is_required_field( $field_id );
$field = new BP_XProfile_Field( $field_id );
if ( 'membertypes' === $field->type ) {
$member_type_name = bp_get_member_type_key( $value );
// Get selected profile type role.
$selected_member_type_wp_roles = get_post_meta( $value, '_bp_member_type_wp_roles', true );
if ( bp_current_user_can( 'administrator' ) ) {
if ( 'none' === $selected_member_type_wp_roles[0] ) {
bp_set_member_type( bp_displayed_user_id(), '' );
bp_set_member_type( bp_displayed_user_id(), $member_type_name );
} elseif ( 'administrator' !== $selected_member_type_wp_roles[0] ) {
$errors = true;
$bp_error_message_string = __( 'Changing this profile type would remove your Administrator role and lock you out of the WordPress admin.', 'buddyboss' );
$validations['field_id'] = $field_id;
$validations['message'] = $bp_error_message_string;
}
} elseif ( bp_current_user_can( 'editor' ) ) {
if ( 'none' === $selected_member_type_wp_roles[0] ) {
bp_set_member_type( bp_displayed_user_id(), '' );
bp_set_member_type( bp_displayed_user_id(), $member_type_name );
} elseif ( ! in_array( $selected_member_type_wp_roles[0], array( 'editor', 'administrator' ), true ) ) {
$errors = true;
$bp_error_message_string = __( 'Changing this profile type would remove your Editor role and lock you out of the WordPress admin.', 'buddyboss' );
$validations['field_id'] = $field_id;
$validations['message'] = $bp_error_message_string;
}
} else {
bp_set_member_type( bp_displayed_user_id(), '' );
bp_set_member_type( bp_displayed_user_id(), $member_type_name );
if ( isset( $selected_member_type_wp_roles[0] ) && 'none' !== $selected_member_type_wp_roles[0] ) {
$bp_current_user = new WP_User( bp_displayed_user_id() );
foreach ( $bp_current_user->roles as $role ) {
// Remove role.
$bp_current_user->remove_role( $role );
}
// Add role.
$bp_current_user->add_role( $selected_member_type_wp_roles[0] );
}
}
} elseif ( $is_required && empty( $value ) ) {
$errors = true;
$validations['field_id'] = $field_id;
/* translators: Field name */
$validations['message'] = sprintf( __( '%s is required and not allowed to be empty.', 'buddyboss' ), $field->name );
}
if (
isset( $value )
&& function_exists( 'xprofile_validate_field' )
&& xprofile_validate_field( $field_id, $value, bp_displayed_user_id() )
) {
$errors = true;
$validations['field_id'] = $field_id;
$validations['message'] = xprofile_validate_field( $field_id, $value, bp_displayed_user_id() );
}
if ( ! empty( $errors ) && $validations ) {
return $validations;
}
}
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.