xprofile_sanitize_data_value_before_save( string $field_value, int $field_id, bool $reserialize = true, object|null $data_obj = null )

Safely runs profile field data through kses and force_balance_tags.

Description

Parameters

$field_value

(Required) Field value being santized.

$field_id

(Required) Field ID being sanitized.

$reserialize

(Optional) Whether to reserialize arrays before returning. Defaults to true.

Default value: true

$data_obj

(Optional) The BP_XProfile_ProfileData object.

Default value: null

Return

(string)

Source

File: bp-xprofile/bp-xprofile-filters.php

237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
function xprofile_sanitize_data_value_before_save( $field_value, $field_id = 0, $reserialize = true, $data_obj = null ) {
 
    // Return if empty.
    if ( empty( $field_value ) ) {
        return $field_value;
    }
 
    if ( isset( $data_obj->field_id ) && ! empty( $data_obj->field_id ) ) {
        $fields = xprofile_get_field( $data_obj->field_id, null, false );
 
        // Allows storing the 'facebook', 'twitter' and so on as array keys in the data.
        if ( isset( $fields->type ) && 'socialnetworks' === $fields->type ) {
            return $field_value;
        }
    }
 
    // Force reserialization if serialized (avoids mutation, retains integrity)
    if ( is_serialized( $field_value ) && ( false === $reserialize ) ) {
        $reserialize = true;
    }
 
    // Value might be a serialized array of options.
    $field_value = maybe_unserialize( $field_value );
 
    // Sanitize single field value.
    if ( ! is_array( $field_value ) ) {
        $kses_field_value     = xprofile_filter_kses( $field_value, $data_obj );
        $filtered_field_value = wp_rel_nofollow( force_balance_tags( $kses_field_value ) );
 
        /**
         * Filters the kses-filtered data before saving to database.
         *
         * @since BuddyPress 1.5.0
         *
         * @param string $filtered_field_value The filtered value.
         * @param string $field_value The original value before filtering.
         * @param BP_XProfile_ProfileData $data_obj The BP_XProfile_ProfileData object.
         */
        $filtered_field_value = apply_filters( 'xprofile_filtered_data_value_before_save', $filtered_field_value, $field_value, $data_obj );
 
        // Sanitize multiple individual option values.
    } else {
        $filtered_values = array();
        foreach ( (array) $field_value as $value ) {
            $kses_field_value = xprofile_filter_kses( $value, $data_obj );
            $filtered_value   = wp_rel_nofollow( force_balance_tags( $kses_field_value ) );
 
            /** This filter is documented in bp-xprofile/bp-xprofile-filters.php */
            $filtered_values[] = apply_filters( 'xprofile_filtered_data_value_before_save', $filtered_value, $value, $data_obj );
        }
 
        if ( ! empty( $reserialize ) ) {
            $filtered_field_value = serialize( $filtered_values );
        } else {
            $filtered_field_value = $filtered_values;
        }
    }
 
    return $filtered_field_value;
}

Changelog

Changelog
Version Description
BuddyPress 1.2.6 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.