bp_xprofile_validate_nickname_value( $retval, $field_id, string $value, string $user_id = null )
Validate nickname approved characters and format.
Description
Parameters
- $retval
-
(Required)
- $field_name
-
(Required)
- $value
-
(Required)
- $user_id
-
(Optional)
Default value: null
Return
($retval)
Source
File: bp-xprofile/bp-xprofile-filters.php
function bp_xprofile_validate_nickname_value( $retval, $field_id, $value, $user_id = null ) {
if ( $field_id != bp_xprofile_nickname_field_id() ) {
return $retval;
}
if ( $retval ) {
return $retval;
}
$value = strtolower( $value );
$field_name = xprofile_get_field( $field_id )->name;
// Empty nickname
if ( '' === trim( $value ) ) {
return sprintf( __( '%s is required and not allowed to be empty.', 'buddyboss' ), $field_name );
}
// only alpha numeric, underscore, dash
if ( ! preg_match( '/^([A-Za-z0-9-_\.]+)$/', $value ) ) {
return sprintf( __( 'Invalid %s. Only "a-z", "0-9", "-", "_" and "." are allowed.', 'buddyboss' ), $field_name );
}
// cannot have 2 continued special characters
if ( preg_match( '/([-_\.]{2})/', $value ) ) {
return sprintf( __( '"-", "_" and "." cannot be repeated twice in %s.', 'buddyboss' ), $field_name );
}
// must be shorter then 32 characters
$nickname_length = apply_filters( 'xprofile_nickname_max_length', 32 );
if ( strlen( $value ) > $nickname_length ) {
return sprintf( __( '%s must be shorter than %d characters.', 'buddyboss' ), $field_name, $nickname_length );
}
global $wpdb;
$where = [
'meta_key = "nickname"',
'meta_value = "' . $value . '"'
];
if ( $user_id ) {
$where[] = 'user_id != ' . $user_id;
}
$sql = sprintf(
'SELECT count(*) FROM %s WHERE %s',
$wpdb->usermeta,
implode( ' AND ', $where )
);
if ( $asdf = $wpdb->get_var( $sql ) > 0 ) {
return sprintf( __( '%s has already been taken.', 'buddyboss' ), $field_name );
}
return $retval;
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 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.