Powered By Blogger

Tuesday, March 14, 2017

set profile data for a specific field for a specific user. OR update user extend profile fields

http://buddypress.wp-a2z.org/oik_api/xprofile_set_field_data/

                $interest = isset($_POST['interest'])?$_POST['interest']:''; //value
                $field = 'Interest'; // field name
$field_id = xprofile_get_field_id_from_name( $field );
$field           = new BP_XProfile_ProfileData();
$field->field_id = $field_id;
$field->user_id  = $user_id;
$field->value    = maybe_serialize( $interest );
$field->save();





function xprofile_set_field_data( $field, $user_id, $value, $is_required = false ) {

  if ( is_numeric( $field ) ) {
    $field_id = $field;
  } else {
    $field_id = xprofile_get_field_id_from_name( $field );
  }

  if ( empty( $field_id ) ) {
    return false;
  }

  $field          = xprofile_get_field( $field_id );
  $field_type     = BP_XProfile_Field::get_type( $field_id );
  $field_type_obj = bp_xprofile_create_field_type( $field_type );

  
/**
 * Filter the raw submitted profile field value.
 *
 * Use this filter to modify the values submitted by users before
 * doing field-type-specific validation.
 *
 * @since 2.1.0
 *
 * @param mixed                  $value          Value passed to xprofile_set_field_data().
 * @param BP_XProfile_Field      $field          Field object.
 * @param BP_XProfile_Field_Type $field_type_obj Field type object.
 */
  $value = apply_filters( 'bp_xprofile_set_field_data_pre_validate', $value, $field, $field_type_obj );

  // Special-case support for integer 0 for the number field type.
  if ( $is_required && ! is_integer( $value ) && $value !== '0' && ( empty( $value ) || ! is_array( $value ) && ! strlen( trim( $value ) ) ) ) {
    return false;
  }

  
/**
 * Certain types of fields (checkboxes, multiselects) may come through empty.
 * Save as empty array so this isn't overwritten by the default on next edit.
 *
 * Special-case support for integer 0 for the number field type
 */
  if ( empty( $value ) && ! is_integer( $value ) && $value !== '0' && $field_type_obj->accepts_null_value ) {
    $value = array();
  }

  // If the value is empty, then delete any field data that exists, unless the field is of a type
  // where null values are semantically meaningful.
  if ( empty( $value ) && ! is_integer( $value ) && $value !== '0' && ! $field_type_obj->accepts_null_value ) {
    xprofile_delete_field_data( $field_id, $user_id );
    return true;
  }

  // For certain fields, only certain parameters are acceptable, so add them to the whitelist.
  if ( $field_type_obj->supports_options ) {
    $field_type_obj->set_whitelist_values( wp_list_pluck( $field->get_children(), 'name' ) );
  }

  // Check the value is in an accepted format for this form field.
  if ( ! $field_type_obj->is_valid( $value ) ) {
    return false;
  }

  $field           = new BP_XProfile_ProfileData();
  $field->field_id = $field_id;
  $field->user_id  = $user_id;
  $field->value    = maybe_serialize( $value );

  return $field->save();
}
 

No comments:

Post a Comment