diff --git a/includes/core/class-permalinks.php b/includes/core/class-permalinks.php index a17e9962..4b400b65 100644 --- a/includes/core/class-permalinks.php +++ b/includes/core/class-permalinks.php @@ -23,7 +23,7 @@ if ( ! class_exists( 'Permalinks' ) ) { add_action( 'wp_head', array( &$this, 'um_rel_canonical_' ), 9 ); - add_filter( 'um_user_pre_updating_profile_array', array( &$this, 'um_user_updating_profile_need_change_permalink') ); + add_filter( 'um_user_pre_updating_profile_array', array( &$this, 'um_user_updating_profile_need_change_permalink' ) ); } @@ -506,18 +506,21 @@ if ( ! class_exists( 'Permalinks' ) ) { return $url; } - /** - * Adds the "need_change_permalink" parameter to recreate the user's permanent link - * @param array $to_update - * @return array $to_update - */ - function um_user_updating_profile_need_change_permalink( $to_update ) { - if ( um_user( 'first_name' ) != $to_update['first_name'] || - um_user( 'last_name' ) != $to_update['last_name'] ) { - $to_update['need_change_permalink'] = true; - } - return $to_update; - } + /** + * Adds the "need_change_permalink" parameter to recreate the user's permanent link* + * + * @param array $to_update + * @return array $to_update + */ + function um_user_updating_profile_need_change_permalink( $to_update ) { + + if ( um_user( 'first_name' ) != $to_update['first_name'] || + um_user( 'last_name' ) != $to_update['last_name'] ) { + $to_update['need_change_permalink'] = true; + } + + return $to_update; + } } } \ No newline at end of file diff --git a/includes/core/class-user.php b/includes/core/class-user.php index f835a892..7c4ba64d 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -165,129 +165,133 @@ if ( ! class_exists( 'User' ) ) { } - function get_profile_url( $user_id, $update_slug = false ) { - // Permalink base - $permalink_base = UM()->options()->get( 'permalink_base' ); + /** + * @param $user_id + * @param bool $update_slug + * + * @return string + */ + function get_profile_url( $user_id, $update_slug = false ) { + // Permalink base + $permalink_base = UM()->options()->get( 'permalink_base' ); - // Get user slug - $profile_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true ); - $generate_slug = UM()->options()->get( 'um_generate_slug_in_directory' ); + // Get user slug + $profile_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true ); + $generate_slug = UM()->options()->get( 'um_generate_slug_in_directory' ); - // Return existing profile slug - if ( $generate_slug && $update_slug == false && $profile_slug ) { - return UM()->permalinks()->profile_permalink( $profile_slug ); - } + // Return existing profile slug + if ( $generate_slug && $update_slug == false && $profile_slug ) { + return UM()->permalinks()->profile_permalink( $profile_slug ); + } - // Reset cache - if ( $update_slug == true ) { - delete_option( "um_cache_userdata_{$user_id}" ); - um_fetch_user( $user_id ); - } + // Reset cache + if ( $update_slug == true ) { + delete_option( "um_cache_userdata_{$user_id}" ); + um_fetch_user( $user_id ); + } - $userdata = get_userdata( $user_id ); + $userdata = get_userdata( $user_id ); - if ( empty( $userdata ) ) { - return UM()->permalinks()->profile_permalink( $profile_slug ); - } + if ( empty( $userdata ) ) { + return UM()->permalinks()->profile_permalink( $profile_slug ); + } - $user_in_url = ''; - // Username - if ( $permalink_base == 'user_login' ) { - $user_in_url = $userdata->user_login; + $user_in_url = ''; + // Username + if ( $permalink_base == 'user_login' ) { - if ( is_email( $user_in_url ) ) { - $user_email = $user_in_url; - $user_in_url = str_replace( '@', '', $user_in_url ); + $user_in_url = $userdata->user_login; - if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) { - $search_length = strlen( '.' ); - $user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length ); - } - update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email ); + if ( is_email( $user_in_url ) ) { - } else { + $user_email = $user_in_url; + $user_in_url = str_replace( '@', '', $user_in_url ); - $user_in_url = sanitize_title( $user_in_url ); + if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) { + $search_length = strlen( '.' ); + $user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length ); + } + update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email ); - } - } + } else { - // User ID - if ( $permalink_base == 'user_id' ) { - $user_in_url = $user_id; - } + $user_in_url = sanitize_title( $user_in_url ); - // Fisrt and Last name - $full_name_permalinks = array( 'name', 'name_dash', 'name_plus' ); - if ( in_array( $permalink_base, $full_name_permalinks ) ) { - $separated = array('name' => '.','name_dash' =>'-','name_plus'=>'+'); - $separate = $separated[$permalink_base]; - $first_name = $userdata->first_name; - $last_name = $userdata->last_name; - $full_name = sprintf('%s %s',$first_name,$last_name); + } + } - $full_name = preg_replace( '/\s+/', ' ', $full_name ); // Remove double spaces + // User ID + if ( $permalink_base == 'user_id' ) { + $user_in_url = $user_id; + } - $profile_slug = UM()->permalinks()->profile_slug( $full_name, $first_name, $last_name ); + // Fisrt and Last name + $full_name_permalinks = array( 'name', 'name_dash', 'name_plus' ); + if ( in_array( $permalink_base, $full_name_permalinks ) ) { + $separated = array( 'name' => '.', 'name_dash' => '-', 'name_plus' => '+' ); + $separate = $separated[ $permalink_base ]; + $first_name = $userdata->first_name; + $last_name = $userdata->last_name; + $full_name = sprintf( '%s %s', $first_name, $last_name ); - $current_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true ); - if ( $current_slug ) { - $username = $current_slug; - } else { + $full_name = preg_replace( '/\s+/', ' ', $full_name ); // Remove double spaces - $append = 0; - $username = $full_name; - $_username = $full_name; + $profile_slug = UM()->permalinks()->profile_slug( $full_name, $first_name, $last_name ); - while ( 1 ) { + $current_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true ); + if ( $current_slug ) { + $username = $current_slug; + } else { - $username = $_username .(empty($append)?'':" $append" ); - if(!UM()->permalinks()->exist_url_slug_permalink_base( $permalink_base, $profile_slug . (empty($append)?'':"{$separate}{$append}" ) )){ - break; - } - $append++; + $append = 0; + $username = $full_name; + $_username = $full_name; - } - } - $user_in_url = UM()->permalinks()->profile_slug( $username, $first_name, $last_name ); - } + while ( 1 ) { + $username = $_username . ( empty( $append ) ? '': " $append" ); + if ( ! UM()->permalinks()->exist_url_slug_permalink_base( $permalink_base, $profile_slug . ( empty( $append ) ? '' : "{$separate}{$append}" ) ) ) { + break; + } + $append++; + } + } + $user_in_url = UM()->permalinks()->profile_slug( $username, $first_name, $last_name ); + } - update_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", $user_in_url ); + update_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", $user_in_url ); - if ( empty ( $user_in_url ) ) { - $user_in_url = $user_id; - } + if ( empty ( $user_in_url ) ) { + $user_in_url = $user_id; + } - return UM()->permalinks()->profile_permalink( $user_in_url ); - } + return UM()->permalinks()->profile_permalink( $user_in_url ); + } + /** + * Backend user creation + * + * @param $user_id + */ + function user_register_via_admin( $user_id ) { + if ( empty( $user_id ) ) + return; - /** - * Backend user creation - * - * @param $user_id - */ - function user_register_via_admin( $user_id ) { + if ( is_admin() ) { + //if there custom 2 role not empty + if ( ! empty( $_POST['um-role'] ) ) { + $user = get_userdata( $user_id ); + $user->add_role( $_POST['um-role'] ); + UM()->user()->profile['role'] = $_POST['um-role']; + UM()->user()->update_usermeta_info( 'role' ); + } - if ( empty( $user_id ) ) - return; + do_action( 'um_user_register', $user_id, $_POST ); + } - if ( is_admin() ) { - //if there custom 2 role not empty - if ( ! empty( $_POST['um-role'] ) ) { - $user = get_userdata( $user_id ); - $user->add_role( $_POST['um-role'] ); - UM()->user()->profile['role'] = $_POST['um-role']; - UM()->user()->update_usermeta_info( 'role' ); - } - - do_action( 'um_user_register', $user_id, $_POST ); - } - - } + } /** @@ -296,37 +300,36 @@ if ( ! class_exists( 'User' ) ) { * @param int $user_id * @param \WP_User $old_data */ - function profile_update( $user_id, $old_data ) { - // Bail if no user ID was passed - if ( empty( $user_id ) ) { - return; - } + function profile_update( $user_id, $old_data ) { + // Bail if no user ID was passed + if ( empty( $user_id ) ) { + return; + } - $old_roles = $old_data->roles; - $userdata = get_userdata( $user_id ); - $new_roles = $userdata->roles; + $old_roles = $old_data->roles; + $userdata = get_userdata( $user_id ); + $new_roles = $userdata->roles; - if ( ! empty( $_POST['um-role'] ) ) { - $new_roles = array_merge( $new_roles, array( $_POST['um-role'] ) ); - if ( ! user_can( $user_id, $_POST['um-role'] ) ) { - UM()->roles()->set_role( $user_id, $_POST['um-role'] ); - } - } + if ( ! empty( $_POST['um-role'] ) ) { + $new_roles = array_merge( $new_roles, array( $_POST['um-role'] ) ); + if ( ! user_can( $user_id, $_POST['um-role'] ) ) { + UM()->roles()->set_role( $user_id, $_POST['um-role'] ); + } + } - do_action( 'um_after_member_role_upgrade', $new_roles, $old_roles ); + do_action( 'um_after_member_role_upgrade', $new_roles, $old_roles ); - //Update permalink - $changes = apply_filters( 'um_user_edit_after_updating_profile_array', $_POST ); - if ( isset( $changes['need_change_permalink'] ) && $changes['need_change_permalink'] == true ) { + //Update permalink + $changes = apply_filters( 'um_user_edit_after_updating_profile_array', $_POST ); + if ( isset( $changes['need_change_permalink'] ) && $changes['need_change_permalink'] == true ) { + $pre_user_id = um_user( 'ID' ); + um_fetch_user( $user_id ); + UM()->permalinks()->profile_url( $changes ); + um_fetch_user( $pre_user_id ); + } - $pre_user_id = um_user( 'ID' ); - um_fetch_user( $user_id ); - UM()->permalinks()->profile_url( $changes ); - um_fetch_user( $pre_user_id ); - } - - $this->remove_cache( $user_id ); - } + $this->remove_cache( $user_id ); + } /** diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index b7ef222b..dc9f9b35 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -215,7 +215,7 @@ function um_submit_account_errors_hook( $args ) { do_action('um_post_account_update'); - do_action('um_after_user_account_updated', get_current_user_id(), $changes); + do_action( 'um_after_user_account_updated', get_current_user_id(), $changes ); $url = ''; if ( um_is_core_page( 'account' ) ) { @@ -287,30 +287,32 @@ function um_submit_account_errors_hook( $args ) { } - /** - * Adds the "need_change_permalink" parameter to recreate the user's permanent link - * @param array $to_update - * @return array $to_update - */ - function um_account_pre_updating_profile_need_change_permalink( $to_update ) { +/** +* Adds the "need_change_permalink" parameter to recreate the user's permanent link + * +* @param array $to_update +* @return array $to_update +*/ +function um_account_pre_updating_profile_need_change_permalink( $to_update ) { - if ( um_user( 'first_name' ) != $to_update['first_name'] || - um_user( 'last_name' ) != $to_update['last_name'] ) { - $to_update['need_change_permalink'] = true; - } - - return $to_update; + if ( um_user( 'first_name' ) != $to_update['first_name'] || + um_user( 'last_name' ) != $to_update['last_name'] ) { + $to_update['need_change_permalink'] = true; } - add_filter( 'um_account_pre_updating_profile_array', 'um_account_pre_updating_profile_need_change_permalink' ); + return $to_update; +} - /** - * - * @param $user_id - * @param $changed - * - */ - function um_after_user_account_updated_permalink($user_id,$changed){ - UM()->permalinks()->profile_url($changed); - } - add_action('um_after_user_account_updated','um_after_user_account_updated_permalink',10,2); +add_filter( 'um_account_pre_updating_profile_array', 'um_account_pre_updating_profile_need_change_permalink' ); + + +/** + * Update Profile URL + * + * @param $user_id + * @param $changed + */ +function um_after_user_account_updated_permalink( $user_id, $changed ) { + UM()->permalinks()->profile_url( $changed ); +} +add_action( 'um_after_user_account_updated', 'um_after_user_account_updated_permalink', 10, 2 ); diff --git a/includes/core/um-filters-user.php b/includes/core/um-filters-user.php index c8274254..e190dabb 100644 --- a/includes/core/um-filters-user.php +++ b/includes/core/um-filters-user.php @@ -3,203 +3,217 @@ if ( ! defined( 'ABSPATH' ) ) exit; - /*** - *** @Main admin user actions - ***/ - add_filter('um_admin_user_actions_hook', 'um_admin_user_actions_hook', 1); - function um_admin_user_actions_hook( $actions ) { +/*** +*** @Main admin user actions +***/ +add_filter('um_admin_user_actions_hook', 'um_admin_user_actions_hook', 1); +function um_admin_user_actions_hook( $actions ) { - $actions = null; - - um_fetch_user( um_profile_id() ); + $actions = null; - if ( current_user_can('manage_options') ) { - - if ( um_user('account_status') == 'awaiting_admin_review' ){ - $actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimate-member') ); - $actions['um_reject_membership'] = array( 'label' => __('Reject Membership','ultimate-member') ); - } - - if ( um_user('account_status') == 'rejected' ) { - $actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimate-member') ); - } - - if ( um_user('account_status') == 'approved' ) { - $actions['um_put_as_pending'] = array( 'label' => __('Put as Pending Review','ultimate-member') ); - } - - if ( um_user('account_status') == 'awaiting_email_confirmation' ) { - $actions['um_resend_activation'] = array( 'label' => __('Resend Activation E-mail','ultimate-member') ); - } - - if ( um_user('account_status') != 'inactive' ) { - $actions['um_deactivate'] = array( 'label' => __('Deactivate this account','ultimate-member') ); - } - - if ( um_user('account_status') == 'inactive' ) { - $actions['um_reenable'] = array( 'label' => __('Reactivate this account','ultimate-member') ); - } - - if ( UM()->roles()->um_current_user_can( 'delete', um_profile_id() ) ) { - $actions['um_delete'] = array( 'label' => __('Delete this user','ultimate-member') ); - } - - } - - if ( current_user_can('delete_users') ) { - $actions['um_switch_user'] = array( 'label' => __('Login as this user','ultimate-member') ); - } - - - - return $actions; - } + um_fetch_user( um_profile_id() ); + if ( current_user_can('manage_options') ) { - /** - * Filter user basename - * @param string $value - * @return string - * @hook_filter: um_clean_user_basename_filter - */ - add_filter('um_clean_user_basename_filter','um_clean_user_basename_filter',2,10); - function um_clean_user_basename_filter( $value, $raw ){ - $permalink_base = UM()->options()->get( 'permalink_base' ); - - $user_query = new WP_User_Query( - array( - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => 'um_user_profile_url_slug_'.$permalink_base, - 'value' => $raw, - 'compare' => '=' - ) - ), - 'fields' => array('ID') - ) - - ); - - if( $user_query->total_users > 0 ){ - - $result = current( $user_query->get_results() ); - $slugname = ''; - - if( isset( $result->ID ) ){ - $slugname = get_user_meta( $result->ID, 'um_user_profile_url_slug_'.$permalink_base, true ); - $value = $slugname; - } + if ( um_user('account_status') == 'awaiting_admin_review' ){ + $actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimate-member') ); + $actions['um_reject_membership'] = array( 'label' => __('Reject Membership','ultimate-member') ); } - - $value = apply_filters("um_permalink_base_before_filter", $value ); - $raw_value = $value; - - switch( $permalink_base ){ - case 'name': - - - if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ - $value = str_replace( '_', '. ', $value ); - } - - if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ - $value = str_replace( '_', '-', $value ); - } - - if( ! empty( $value ) && strrpos( $value ,".") > -1 && strrpos( $raw_value ,"_" ) <= -1 ){ - $value = str_replace( '.', ' ', $value ); - } - - $value = apply_filters("um_permalink_base_after_filter_name", $value, $raw_value ); - - break; - - case 'name_dash': - - if( ! empty( $value ) && strrpos( $value ,"-") > -1 ){ - $value = str_replace( '-', ' ', $value ); - } - - if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ - $value = str_replace( '_', '-', $value ); - } - - // Checks if last name has a dash - if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ - $value = str_replace( '_', '-', $value ); - } - - $value = apply_filters("um_permalink_base_after_filter_name_dash", $value, $raw_value ); - - break; - - - case 'name_plus': - - if( ! empty( $value ) && strrpos( $value ,"+") > -1 ){ - $value = str_replace( '+', ' ', $value ); - } - - if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ - $value = str_replace( '_', '+', $value ); - } - - $value = apply_filters("um_permalink_base_after_filter_name_plus", $value, $raw_value ); - - break; - - default: - - // Checks if last name has a dash - if( ! empty( $value ) && strrpos( $value ,"_") > -1 && substr( $value , "_") == 1 ){ - $value = str_replace( '_', '-', $value ); - } - - $value = apply_filters("um_permalink_base_after_filter", $value, $raw_value ); - - break; + if ( um_user('account_status') == 'rejected' ) { + $actions['um_approve_membership'] = array( 'label' => __('Approve Membership','ultimate-member') ); } - return $value; + if ( um_user('account_status') == 'approved' ) { + $actions['um_put_as_pending'] = array( 'label' => __('Put as Pending Review','ultimate-member') ); + } + + if ( um_user('account_status') == 'awaiting_email_confirmation' ) { + $actions['um_resend_activation'] = array( 'label' => __('Resend Activation E-mail','ultimate-member') ); + } + + if ( um_user('account_status') != 'inactive' ) { + $actions['um_deactivate'] = array( 'label' => __('Deactivate this account','ultimate-member') ); + } + + if ( um_user('account_status') == 'inactive' ) { + $actions['um_reenable'] = array( 'label' => __('Reactivate this account','ultimate-member') ); + } + + if ( UM()->roles()->um_current_user_can( 'delete', um_profile_id() ) ) { + $actions['um_delete'] = array( 'label' => __('Delete this user','ultimate-member') ); + } } + if ( current_user_can('delete_users') ) { + $actions['um_switch_user'] = array( 'label' => __('Login as this user','ultimate-member') ); + } - /** - * Filter before update profile to force utf8 strings - * @param mixed $value - * @return mixed - * @uses hook filter: um_is_selected_filter_value - */ - add_filter('um_before_update_profile','um_before_update_profile',2,10); - function um_before_update_profile( $changes, $user_id ){ - if( ! UM()->options()->get( 'um_force_utf8_strings' ) ) - return $changes; - foreach( $changes as $key => $value ) { - $changes[ $key ] = um_force_utf8_string( $value ); + return $actions; +} + + +/** + * Filter user basename + * @param string $value + * @return string + * @hook_filter: um_clean_user_basename_filter + */ +add_filter('um_clean_user_basename_filter','um_clean_user_basename_filter',2,10); +function um_clean_user_basename_filter( $value, $raw ){ + $permalink_base = UM()->options()->get( 'permalink_base' ); + + $user_query = new WP_User_Query( + array( + 'meta_query' => array( + 'relation' => 'AND', + array( + 'key' => 'um_user_profile_url_slug_'.$permalink_base, + 'value' => $raw, + 'compare' => '=' + ) + ), + 'fields' => array('ID') + ) + + ); + + if( $user_query->total_users > 0 ){ + + $result = current( $user_query->get_results() ); + $slugname = ''; + + if( isset( $result->ID ) ){ + $slugname = get_user_meta( $result->ID, 'um_user_profile_url_slug_'.$permalink_base, true ); + $value = $slugname; } - + } + + + $value = apply_filters("um_permalink_base_before_filter", $value ); + $raw_value = $value; + + switch( $permalink_base ){ + case 'name': + + + if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ + $value = str_replace( '_', '. ', $value ); + } + + if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ + $value = str_replace( '_', '-', $value ); + } + + if( ! empty( $value ) && strrpos( $value ,".") > -1 && strrpos( $raw_value ,"_" ) <= -1 ){ + $value = str_replace( '.', ' ', $value ); + } + + $value = apply_filters("um_permalink_base_after_filter_name", $value, $raw_value ); + + break; + + case 'name_dash': + + if( ! empty( $value ) && strrpos( $value ,"-") > -1 ){ + $value = str_replace( '-', ' ', $value ); + } + + if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ + $value = str_replace( '_', '-', $value ); + } + + // Checks if last name has a dash + if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ + $value = str_replace( '_', '-', $value ); + } + + $value = apply_filters("um_permalink_base_after_filter_name_dash", $value, $raw_value ); + + break; + + + case 'name_plus': + + if( ! empty( $value ) && strrpos( $value ,"+") > -1 ){ + $value = str_replace( '+', ' ', $value ); + } + + if( ! empty( $value ) && strrpos( $value ,"_") > -1 ){ + $value = str_replace( '_', '+', $value ); + } + + $value = apply_filters("um_permalink_base_after_filter_name_plus", $value, $raw_value ); + + break; + + default: + + // Checks if last name has a dash + if( ! empty( $value ) && strrpos( $value ,"_") > -1 && substr( $value , "_") == 1 ){ + $value = str_replace( '_', '-', $value ); + } + + $value = apply_filters("um_permalink_base_after_filter", $value, $raw_value ); + + break; + } + + return $value; + +} + + +/** + * Filter before update profile to force utf8 strings + * + * @param array $changes + * @param int $user_id + * + * @return array + */ +function um_before_update_profile( $changes, $user_id ) { + if ( ! UM()->options()->get( 'um_force_utf8_strings' ) ) { return $changes; } - add_filter('insert_user_meta','um_user_edit_check_change_first_name_and_last_name',10,1); - function um_user_edit_check_change_first_name_and_last_name($meta){ - if (!empty($_POST['user_id'])){ - if(get_user_meta( $_POST['user_id'],'first_name',true ) != $meta['first_name'] || - get_user_meta( $_POST['user_id'],'last_name',true ) != $meta['last_name']){ - add_filter( 'um_user_edit_after_updating_profile_array','um_user_edit_after_updating_profile_need_change_permalink' ); - } - } - - - return $meta; + foreach ( $changes as $key => $value ) { + $changes[ $key ] = um_force_utf8_string( $value ); } - function um_user_edit_after_updating_profile_need_change_permalink( $to_update ) { - $to_update['need_change_permalink'] = true; - return $to_update; - } \ No newline at end of file + return $changes; +} +add_filter( 'um_before_update_profile','um_before_update_profile', 10, 2 ); + + +/** + * @param $meta + * + * @return mixed + */ +function um_user_edit_check_change_first_name_and_last_name( $meta ) { + if ( ! empty( $_POST['user_id'] ) ) { + if ( get_user_meta( $_POST['user_id'], 'first_name', true ) != $meta['first_name'] || + get_user_meta( $_POST['user_id'], 'last_name', true ) != $meta['last_name'] ) { + add_filter( 'um_user_edit_after_updating_profile_array', 'um_user_edit_after_updating_profile_need_change_permalink' ); + } + } + + + return $meta; +} +add_filter( 'insert_user_meta','um_user_edit_check_change_first_name_and_last_name', 10, 1 ); + + +/** + * @param $to_update + * + * @return mixed + */ +function um_user_edit_after_updating_profile_need_change_permalink( $to_update ) { + $to_update['need_change_permalink'] = true; + return $to_update; +} \ No newline at end of file