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.