BP_XProfile_ProfileData::save()
Save the data for the XProfile field.
Description
Return
(bool)
Source
File: bp-xprofile/classes/class-bp-xprofile-profiledata.php
public function save() {
global $wpdb;
$bp = buddypress();
/**
* Filters the data's user ID before saving to the database.
*
* @since BuddyPress 1.0.0
*
* @param int $user_id The user ID.
* @param int $data_id The field data ID.
*/
$this->user_id = apply_filters( 'xprofile_data_user_id_before_save', $this->user_id, $this->id );
/**
* Filters the data's field ID before saving to the database.
*
* @since BuddyPress 1.0.0
*
* @param int $field_id The field ID.
* @param int $data_id The field data ID.
*/
$this->field_id = apply_filters( 'xprofile_data_field_id_before_save', $this->field_id, $this->id );
/**
* Filters the data's value before saving to the database.
*
* @since BuddyPress 1.0.0
* @since BuddyPress 2.1.0 Added `$reserialize` and `$this` parameters.
*
* @param string $field_value The field value.
* @param int $data_id The field data ID.
* @param bool $reserialize Whether to reserialize arrays before returning. Defaults to true.
* @param BP_XProfile_ProfileData $this Current instance of the profile data being saved.
*/
$this->value = apply_filters( 'xprofile_data_value_before_save', $this->value, $this->id, true, $this );
/**
* Filters the data's last updated timestamp before saving to the database.
*
* @since BuddyPress 1.0.0
*
* @param int $last_updated The last updated timestamp.
* @param int $data_id The field data ID.
*/
$this->last_updated = apply_filters( 'xprofile_data_last_updated_before_save', bp_core_current_time(), $this->id );
/**
* Fires before the current profile data instance gets saved.
*
* Please use this hook to filter the properties above. Each part will be passed in.
*
* @since BuddyPress 1.0.0
*
* @param BP_XProfile_ProfileData $this Current instance of the profile data being saved.
*/
do_action_ref_array( 'xprofile_data_before_save', array( $this ) );
if ( $this->is_valid_field() ) {
if ( $this->exists() && strlen( trim( $this->value ) ) ) {
$result = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->profile->table_name_data} SET value = %s, last_updated = %s WHERE user_id = %d AND field_id = %d", $this->value, $this->last_updated, $this->user_id, $this->field_id ) );
} elseif ( $this->exists() && empty( $this->value ) ) {
// Data removed, delete the entry.
$result = $this->delete();
} else {
$result = $wpdb->query( $wpdb->prepare("INSERT INTO {$bp->profile->table_name_data} (user_id, field_id, value, last_updated) VALUES (%d, %d, %s, %s)", $this->user_id, $this->field_id, $this->value, $this->last_updated ) );
$this->id = $wpdb->insert_id;
}
if ( false === $result ) {
return false;
}
/**
* Fires after the current profile data instance gets saved.
*
* @since BuddyPress 1.0.0
*
* @param BP_XProfile_ProfileData $this Current instance of the profile data being saved.
*/
do_action_ref_array( 'xprofile_data_after_save', array( $this ) );
return true;
}
return false;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.0.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.