mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
- fixed updating display_name if there is set the User Display Name setting to Default WP Display Name in UM > General > Users > Display name;
- fixed typo in the password validation
This commit is contained in:
@@ -391,5 +391,20 @@ if ( ! class_exists( 'UM_Functions' ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Replace the first match in the string, alternative for the `str_replace()` function
|
||||
*
|
||||
* @param string $search
|
||||
* @param string $replace
|
||||
* @param string $subject
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function str_replace_first( $search, $replace, $subject ) {
|
||||
$search = '/' . preg_quote( $search, '/' ) . '/';
|
||||
return preg_replace( $search, $replace, $subject, 1 );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -549,11 +549,11 @@ if ( ! class_exists( 'um\core\Password' ) ) {
|
||||
$max_length = ! empty( $max_length ) ? $max_length : 30;
|
||||
|
||||
if ( mb_strlen( $args['user_password'] ) < $min_length ) {
|
||||
UM()->form()->add_error( 'user_password', __( 'Your password must contain at least 8 characters', 'ultimate-member' ) );
|
||||
UM()->form()->add_error( 'user_password', sprintf( __( 'Your password must contain at least %d characters', 'ultimate-member' ), $min_length ) );
|
||||
}
|
||||
|
||||
if ( mb_strlen( $args['user_password'] ) > $max_length ) {
|
||||
UM()->form()->add_error( 'user_password', __( 'Your password must contain less than 30 characters', 'ultimate-member' ) );
|
||||
UM()->form()->add_error( 'user_password', sprintf( __( 'Your password must contain less than %d characters', 'ultimate-member' ), $max_length ) );
|
||||
}
|
||||
|
||||
if ( ! UM()->validation()->strong_pass( $args['user_password'] ) ) {
|
||||
|
||||
@@ -15,6 +15,14 @@ if ( ! class_exists( 'um\core\User' ) ) {
|
||||
class User {
|
||||
|
||||
|
||||
/**
|
||||
* Data that we will set before the update profile to compare it after update
|
||||
*
|
||||
* @var null
|
||||
*/
|
||||
public $previous_data = null;
|
||||
|
||||
|
||||
/**
|
||||
* User constructor.
|
||||
*/
|
||||
|
||||
@@ -88,11 +88,11 @@ function um_submit_account_errors_hook( $args ) {
|
||||
$max_length = ! empty( $max_length ) ? $max_length : 30;
|
||||
|
||||
if ( mb_strlen( $args['user_password'] ) < $min_length ) {
|
||||
UM()->form()->add_error( 'user_password', __( 'Your password must contain at least 8 characters', 'ultimate-member' ) );
|
||||
UM()->form()->add_error( 'user_password', sprintf( __( 'Your password must contain at least %d characters', 'ultimate-member' ), $min_length ) );
|
||||
}
|
||||
|
||||
if ( mb_strlen( $args['user_password'] ) > $max_length ) {
|
||||
UM()->form()->add_error( 'user_password', __( 'Your password must contain less than 30 characters', 'ultimate-member' ) );
|
||||
UM()->form()->add_error( 'user_password', sprintf( __( 'Your password must contain less than %d characters', 'ultimate-member' ), $max_length ) );
|
||||
}
|
||||
|
||||
if ( ! UM()->validation()->strong_pass( $args['user_password'] ) ) {
|
||||
@@ -375,8 +375,24 @@ function um_submit_account_details( $args ) {
|
||||
*/
|
||||
do_action( 'um_account_pre_update_profile', $changes, $user_id );
|
||||
|
||||
UM()->user()->update_profile( $changes );
|
||||
if ( isset( $changes['first_name'] ) || isset( $changes['last_name'] ) || isset( $changes['nickname'] ) ) {
|
||||
$user = get_userdata( $user_id );
|
||||
if ( ! empty( $user ) && ! is_wp_error( $user ) ) {
|
||||
UM()->user()->previous_data['display_name'] = $user->display_name;
|
||||
|
||||
if ( isset( $changes['first_name'] ) ) {
|
||||
UM()->user()->previous_data['first_name'] = $user->first_name;
|
||||
}
|
||||
if ( isset( $changes['last_name'] ) ) {
|
||||
UM()->user()->previous_data['last_name'] = $user->last_name;
|
||||
}
|
||||
if ( isset( $changes['nickname'] ) ) {
|
||||
UM()->user()->previous_data['nickname'] = $user->nickname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UM()->user()->update_profile( $changes );
|
||||
|
||||
if ( UM()->account()->is_secure_enabled() ) {
|
||||
update_user_meta( $user_id, 'um_account_secure_fields', array() );
|
||||
@@ -502,7 +518,7 @@ add_action( 'um_before_account_notifications', 'um_before_account_notifications'
|
||||
* @param array $changes An array of fields values.
|
||||
*/
|
||||
function um_after_user_account_updated_permalink( $user_id, $changes ) {
|
||||
if ( isset( $changes['first_name'] ) && isset( $changes['last_name'] ) ) {
|
||||
if ( isset( $changes['first_name'] ) || isset( $changes['last_name'] ) ) {
|
||||
do_action( 'um_update_profile_full_name', $user_id, $changes );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -462,8 +462,27 @@ function um_user_edit_profile( $args ) {
|
||||
*/
|
||||
$to_update = apply_filters( 'um_user_pre_updating_profile_array', $to_update, $user_id );
|
||||
|
||||
|
||||
if ( is_array( $to_update ) ) {
|
||||
|
||||
if ( isset( $to_update['first_name'] ) || isset( $to_update['last_name'] ) || isset( $to_update['nickname'] ) ) {
|
||||
$user = get_userdata( $user_id );
|
||||
if ( ! empty( $user ) && ! is_wp_error( $user ) ) {
|
||||
UM()->user()->previous_data['display_name'] = $user->display_name;
|
||||
|
||||
if ( isset( $to_update['first_name'] ) ) {
|
||||
UM()->user()->previous_data['first_name'] = $user->first_name;
|
||||
}
|
||||
|
||||
if ( isset( $to_update['last_name'] ) ) {
|
||||
UM()->user()->previous_data['last_name'] = $user->last_name;
|
||||
}
|
||||
|
||||
if ( isset( $to_update['nickname'] ) ) {
|
||||
UM()->user()->previous_data['nickname'] = $user->nickname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UM()->user()->update_profile( $to_update );
|
||||
/**
|
||||
* UM hook
|
||||
|
||||
@@ -40,12 +40,48 @@ function um_update_profile_full_name( $user_id, $changes ) {
|
||||
break;
|
||||
case 'nickname':
|
||||
$update_name = get_user_meta( $user_id, 'nickname', true );
|
||||
break;
|
||||
case 'default':
|
||||
$user = get_userdata( $user_id );
|
||||
|
||||
if ( ! empty( $user ) && ! is_wp_error( $user ) ) {
|
||||
if ( ! empty( UM()->user()->previous_data['display_name'] ) ) {
|
||||
if ( isset( UM()->user()->previous_data['first_name'] ) ) {
|
||||
$fname = get_user_meta( $user_id, 'first_name', true );
|
||||
$update_name = UM()->str_replace_first( UM()->user()->previous_data['first_name'], $fname, UM()->user()->previous_data['display_name'] );
|
||||
}
|
||||
|
||||
if ( isset( UM()->user()->previous_data['last_name'] ) ) {
|
||||
$lname = get_user_meta( $user_id, 'last_name', true );
|
||||
if ( isset( $update_name ) ) {
|
||||
$update_name = UM()->str_replace_first( UM()->user()->previous_data['last_name'], $lname, $update_name );
|
||||
} else {
|
||||
$update_name = UM()->str_replace_first( UM()->user()->previous_data['last_name'], $lname, UM()->user()->previous_data['display_name'] );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( UM()->user()->previous_data['nickname'] ) ) {
|
||||
$nickname = get_user_meta( $user_id, 'nickname', true );
|
||||
if ( isset( $update_name ) ) {
|
||||
$update_name = UM()->str_replace_first( UM()->user()->previous_data['nickname'], $nickname, $update_name );
|
||||
} else {
|
||||
$update_name = UM()->str_replace_first( UM()->user()->previous_data['nickname'], $nickname, UM()->user()->previous_data['display_name'] );
|
||||
}
|
||||
}
|
||||
|
||||
// unset if the display name is the same
|
||||
if ( isset( $update_name ) && $update_name === UM()->user()->previous_data['display_name'] ) {
|
||||
unset( $update_name );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if ( isset( $update_name ) ) {
|
||||
|
||||
$arr_user = array( 'ID' => $user_id, 'display_name' => $update_name );
|
||||
$arr_user = array( 'ID' => $user_id, 'display_name' => $update_name );
|
||||
$return = wp_update_user( $arr_user );
|
||||
|
||||
if ( is_wp_error( $return ) ) {
|
||||
@@ -54,7 +90,7 @@ function um_update_profile_full_name( $user_id, $changes ) {
|
||||
|
||||
}
|
||||
|
||||
if ( isset( $changes['first_name'] ) && isset( $changes['last_name'] ) ) {
|
||||
if ( isset( $changes['first_name'] ) || isset( $changes['last_name'] ) ) {
|
||||
$user = get_userdata( $user_id );
|
||||
if ( ! empty( $user ) && ! is_wp_error( $user ) ) {
|
||||
$full_name = $user->display_name;
|
||||
@@ -67,4 +103,4 @@ function um_update_profile_full_name( $user_id, $changes ) {
|
||||
// regenerate slug
|
||||
UM()->user()->generate_profile_slug( $user_id );
|
||||
}
|
||||
add_action( 'um_update_profile_full_name', 'um_update_profile_full_name', 10, 2 );
|
||||
add_action( 'um_update_profile_full_name', 'um_update_profile_full_name', 10, 2 );
|
||||
|
||||
Reference in New Issue
Block a user