BP_REST_XProfile_Types_Endpoint::prepare_item_for_response( array $type, WP_REST_Request $request )
Prepares single XProfile type to return as an object.
Description
Parameters
- $type
-
(Required) Xprofile Type.
- $request
-
(Required) Full data about the request.
Return
(WP_REST_Response)
Source
File: bp-xprofile/classes/class-bp-rest-xprofile-types-endpoint.php
public function prepare_item_for_response( $type, $request ) {
$data = array(
'labels' => array(
'name' => ( isset( $type->labels['name'] ) && ! empty( $type->labels['name'] ) ) ? $type->labels['name'] : '',
'singular_name' => ( isset( $type->labels['singular_name'] ) && ! empty( $type->labels['singular_name'] ) ) ? $type->labels['singular_name'] : '',
),
'has_directory' => ( isset( $type->has_directory ) ? $type->has_directory : false ),
'name' => ( isset( $type->name ) ? $type->name : '' ),
'directory_slug' => ( isset( $type->directory_slug ) ? $type->directory_slug : '' ),
);
// Get the edit schema.
$schema = $this->get_item_schema();
$schema = $schema['properties'];
$post_id = $this->bp_rest_member_type_post_by_type( $type->name );
// Define default visibility property.
if ( isset( $schema['enable_filter'] ) ) {
if ( ! empty( $post_id ) ) {
$data['enable_filter'] = (
! empty( get_post_meta( $post_id, '_bp_member_type_enable_filter', true ) )
? get_post_meta( $post_id, '_bp_member_type_enable_filter', true )
: (
// Added support for BP Member Types.
! empty( get_post_meta( $post_id, '_bp_member_type_enable_directory', true ) )
? get_post_meta( $post_id, '_bp_member_type_enable_directory', true )
: false
)
);
} else {
$data['enable_filter'] = false;
}
}
// Define default visibility property.
if ( isset( $schema['enable_remove'] ) ) {
if ( ! empty( $post_id ) ) {
$data['enable_remove'] = (
! empty( get_post_meta( $post_id, '_bp_member_type_enable_remove', true ) )
? get_post_meta( $post_id, '_bp_member_type_enable_remove', true )
: false
);
} else {
$data['enable_remove'] = false;
}
}
// Define default visibility property.
if ( isset( $schema['enable_profile_field'] ) ) {
if ( ! empty( $post_id ) ) {
$data['enable_profile_field'] = (
! empty( get_post_meta( $post_id, '_bp_member_type_enable_profile_field', true ) )
? get_post_meta( $post_id, '_bp_member_type_enable_profile_field', true )
: (
// Added support for BP Member Types.
! empty( get_post_meta( $post_id, '_bp_member_type_enable_registration', true ) )
? get_post_meta( $post_id, '_bp_member_type_enable_registration', true )
: false
)
);
} else {
$data['enable_profile_field'] = false;
}
}
// Define default visibility property.
if ( isset( $schema['bp-group-type'] ) ) {
$get_all_registered_group_types = bp_groups_get_group_types( array(), 'names' );
$get_selected_group_types = ( ! empty( $post_id ) && ! empty( get_post_meta( $post_id, '_bp_member_type_enabled_group_type_create', true ) ) ) ? get_post_meta( $post_id, '_bp_member_type_enabled_group_type_create', true ) : array();
$group_types = array();
if ( ! empty( $get_all_registered_group_types ) ) {
foreach ( $get_all_registered_group_types as $group_type ) {
$group_types[] = array(
'name' => $group_type,
'selected' => in_array( $group_type, $get_selected_group_types, true ),
);
}
}
$data['bp-group-type'] = $group_types;
}
// Define default visibility property.
if ( isset( $schema['bp-group-type-auto-join'] ) ) {
$get_all_registered_group_types = bp_groups_get_group_types( array(), 'names' );
$get_selected_group_types = ( ! empty( $post_id ) && ! empty( get_post_meta( $post_id, '_bp_member_type_enabled_group_type_auto_join', true ) ) ) ? get_post_meta( $post_id, '_bp_member_type_enabled_group_type_auto_join', true ) : array();
$group_types_auto_join = array();
if ( ! empty( $get_all_registered_group_types ) ) {
foreach ( $get_all_registered_group_types as $group_type ) {
$group_types_auto_join[] = array(
'name' => $group_type,
'selected' => in_array( $group_type, $get_selected_group_types, true ),
);
}
}
$data['bp-group-type-auto-join'] = $group_types_auto_join;
}
// Define default visibility property.
if ( isset( $schema['bp-member-type-enabled-invite'] ) ) {
if ( ! empty( $post_id ) ) {
$data['bp-member-type-enabled-invite'] = (
! empty( get_post_meta( $post_id, '_bp_member_type_enable_invite', true ) )
? get_post_meta( $post_id, '_bp_member_type_enable_invite', true )
: false
);
} else {
$data['bp-member-type-enabled-invite'] = false;
}
}
// Define default visibility property.
if ( isset( $schema['bp-member-type-invite'] ) ) {
$member_types = bp_get_member_types( array(), 'names' );
$get_selected_member_types = ( ! empty( $post_id ) && ! empty( get_post_meta( $post_id, '_bp_member_type_allowed_member_type_invite', true ) ) ) ? get_post_meta( $post_id, '_bp_member_type_allowed_member_type_invite', true ) : array();
$member_types_invite = array();
if ( ! empty( $member_types ) ) {
foreach ( $member_types as $member_type ) {
$member_types_invite[] = array(
'name' => $member_type,
'selected' => in_array( $member_type, $get_selected_member_types, true ),
);
}
}
$data['bp-member-type-invite'] = $member_types_invite;
}
// Define default visibility property.
if ( isset( $schema['wp_roles'] ) ) {
if ( ! empty( $post_id ) ) {
$data['wp_roles'] = get_post_meta( $post_id, '_bp_member_type_wp_roles', true );
} else {
$data['wp_roles'] = '';
}
}
$response = rest_ensure_response( $data );
/**
* Filter the XProfile field returned from the API.
*
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request Request used to generate the response.
* @param array $type Xprofile Type
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_xprofile_types_prepare_value', $response, $request, $type );
}
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.