BP_REST_XProfile_Fields_Endpoint::assemble_response_data( BP_XProfile_Field $field, WP_REST_Request $request )
Assembles single XProfile field data for return as an object.
Description
Parameters
- $field
-
(Required) XProfile field object.
- $request
-
(Required) Full data about the request.
Return
(array)
Source
File: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php
public function assemble_response_data( $field, $request ) {
$data = array(
'id' => (int) $field->id,
'group_id' => (int) $field->group_id,
'parent_id' => (int) $field->parent_id,
'type' => $field->type,
'name' => $field->name,
'alternate_name' => '',
'description' => array(
'raw' => $field->description,
'rendered' => apply_filters( 'bp_get_the_profile_field_description', $field->description ),
),
'is_required' => (bool) $field->is_required,
'can_delete' => (bool) $field->can_delete,
'field_order' => (int) $field->field_order,
'option_order' => (int) $field->option_order,
'order_by' => $field->order_by,
'is_default_option' => (bool) $field->is_default_option,
'options' => '',
);
if ( ! empty( $request['fetch_visibility_level'] ) ) {
$data['visibility_level'] = $field->visibility_level;
$data['allow_custom_visibility'] = (
! empty( $field->__get( 'allow_custom_visibility' ) )
&& 'allowed' === $field->__get( 'allow_custom_visibility' )
) ? $field->__get( 'allow_custom_visibility' ) : 'disabled';
}
if ( true === wp_validate_boolean( $request->get_param( 'fetch_field_data' ) ) ) {
if ( isset( $field->data->id ) ) {
$data['data']['id'] = $field->data->id;
}
$data['data']['value'] = array(
'raw' => ( isset( $field->data->value ) ? $field->data->value : '' ),
'unserialized' => $this->get_profile_field_unserialized_value( ( isset( $field->data->value ) ? $field->data->value : '' ) ),
'rendered' => $this->get_profile_field_rendered_value( ( isset( $field->data->value ) ? $field->data->value : '' ), $field ),
);
}
// Added settings for date field.
if ( 'datebox' === $field->type ) {
$datebox_field = new BP_XProfile_Field_Type_Datebox();
$data['settings'] = $datebox_field::get_field_settings( $field->id );
}
// Added settings and format options for phone field.
if ( 'telephone' === $field->type ) {
$telephone_field = new BP_XProfile_Field_Type_Telephone();
$data['settings'] = $telephone_field->get_field_settings( $field );
$data['settings']['format_options'] = $telephone_field->get_phone_formats();
}
// Added options for membertype field.
if ( 'membertypes' === $field->type && function_exists( 'bp_check_member_type_field_have_options' ) && true === bp_check_member_type_field_have_options() ) {
$data['options'] = $this->get_member_type_options( $field, $request );
}
// Added options for membertype field.
if ( 'socialnetworks' === $field->type ) {
$data['options'] = $this->get_socialnetworks_type_options( $field, $request );
}
// Added options for selectbox, multiselectbox, radio and checkbox fields.
if ( 'selectbox' === $field->type || 'multiselectbox' === $field->type || 'radio' === $field->type || 'checkbox' === $field->type ) {
$data['options'] = $field->get_children();
}
if ( 'gender' === $field->type ) {
$data['options'] = $this->get_gender_type_options( $field, $request );
}
// Added options for date field.
if ( 'datebox' === $field->type ) {
if ( empty( $data['options'] ) ) {
$data['options'] = array();
}
$data['options']['day'] = $this->get_date_field_options_array( $field, 'day' );
$data['options']['month'] = $this->get_date_field_options_array( $field, 'month' );
$data['options']['year'] = $this->get_date_field_options_array( $field, 'year' );
}
$is_repeater_enabled = 'on' === bp_xprofile_get_meta( $field->group_id, 'group', 'is_repeater_enabled', true ) ? true : false;
if ( $is_repeater_enabled ) {
$data['repeater_data'] = $this->get_repeater_fields_data( $field, $request );
}
// Get alternate name for the field.
$alternate_name = bp_xprofile_get_meta( (int) $field->id, 'field', 'alternate_name' );
if ( ! empty( $alternate_name ) ) {
$data['alternate_name'] = $alternate_name;
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
return $data;
}
Changelog
| Version | Description |
|---|---|
| 0.1.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.