BP_REST_XProfile_Fields_Endpoint::get_repeater_fields_data( BP_XProfile_Field $field, WP_REST_Request $request )
Get Repeater field data.
Description
Parameters
- $field
-
(Required) Field Object.
- $request
-
(Required) Full data about the request.
Return
(array|void)
Source
File: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php
public function get_repeater_fields_data( $field, $request ) {
global $bp, $wpdb;
if ( empty( $field ) || ! bp_loggedin_user_id() ) {
return;
}
$field_id = $field->id;
// phpcs:ignore
$sql = "select m1.object_id FROM {$bp->profile->table_name_meta} as m1 WHERE m1.meta_key = '_cloned_from' AND m1.meta_value = %d";
// phpcs:ignore
$sql = $wpdb->prepare( $sql, $field_id );
// phpcs:ignore
$results = $wpdb->get_col( $sql );
$user_id = ( ! empty( $request['user_id'] ) ? $request['user_id'] : bp_loggedin_user_id() );
$data = array();
$user_fields = bp_get_profile_field_set_count( $field->group_id, $user_id );
if ( ! empty( $results ) && ! is_wp_error( $results ) ) {
$count = 1;
foreach ( $results as $k => $sub_field_id ) {
if ( $count > $user_fields ) {
break;
}
$data[ $k ]['id'] = $sub_field_id;
if ( ! empty( $request['fetch_field_data'] ) ) {
$data[ $k ]['value'] = array(
'raw' => xprofile_get_field_data( $sub_field_id, $user_id ),
'unserialized' => $this->get_profile_field_unserialized_value( xprofile_get_field_data( $sub_field_id, $user_id ) ),
'rendered' => $this->get_profile_field_rendered_value( xprofile_get_field_data( $sub_field_id, $user_id ), $field_id ),
);
}
if ( ! empty( $request['fetch_visibility_level'] ) ) {
$data[ $k ]['visibility_level'] = xprofile_get_field_visibility_level( $sub_field_id, $user_id );
$data[ $k ]['allow_custom_visibility'] = bp_xprofile_get_meta( $sub_field_id, 'field', 'allow_custom_visibility' );
}
$count ++;
}
}
return $data;
}
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.