From 3f920d7ab6c4f7c6e460e785911545164a2e86e9 Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Tue, 1 Sep 2020 23:34:17 +0300 Subject: [PATCH] - Fixed: Activate an account via email --- includes/core/class-permalinks.php | 28 +++++++++++++---------- includes/core/um-actions-save-profile.php | 17 +++++++------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/includes/core/class-permalinks.php b/includes/core/class-permalinks.php index 8cd7ca1a..79f69fc9 100644 --- a/includes/core/class-permalinks.php +++ b/includes/core/class-permalinks.php @@ -182,20 +182,22 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { $user_id = absint( $_REQUEST['user_id'] ); delete_option( "um_cache_userdata_{$user_id}" ); - um_fetch_user( $user_id ); - - if ( strtolower( $_REQUEST['hash'] ) !== strtolower( um_user( 'account_secret_hash' ) ) ) { + $account_secret_hash = get_user_meta( $user_id, 'account_secret_hash', true ); + if ( empty( $account_secret_hash ) || strtolower( $_REQUEST['hash'] ) !== strtolower( $account_secret_hash ) ) { wp_die( __( 'This activation link is expired or have already been used.', 'ultimate-member' ) ); } + um_fetch_user( $user_id ); UM()->user()->approve(); - $redirect = ( um_user( 'url_email_activate' ) ) ? um_user( 'url_email_activate' ) : um_get_core_page( 'login', 'account_active' ); - $login = (bool) um_user( 'login_email_activate' ); + um_reset_user(); + + $user_role = UM()->roles()->get_priority_user_role( $user_id ); + $user_role_data = UM()->roles()->role_data( $user_role ); // log in automatically + $login = ! empty( $user_role_data['login_email_activate'] ); // Role setting "Login user after validating the activation link?" if ( ! is_user_logged_in() && $login ) { $user = get_userdata( $user_id ); - $user_id = $user->ID; // update wp user wp_set_current_user( $user_id, $user->user_login ); @@ -206,7 +208,6 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { ob_end_clean(); } - um_reset_user(); /** * UM hook * @@ -228,6 +229,9 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { */ do_action( 'um_after_email_confirmation', $user_id ); + $redirect = empty( $user_role_data['url_email_activate'] ) ? um_get_core_page( 'login', 'account_active' ) : trim( $user_role_data['url_email_activate'] ); // Role setting "URL redirect after e-mail activation" + $redirect = apply_filters( 'um_after_email_confirmation_redirect', $redirect, $user_id, $login ); + exit( wp_redirect( $redirect ) ); } @@ -238,10 +242,10 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { /** * Makes an activate link for any user * - * @return bool|mixed|string|void + * @return bool|string */ function activate_url() { - if ( !um_user('account_secret_hash') ) { + if ( ! um_user( 'account_secret_hash' ) ) { return false; } @@ -268,8 +272,8 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { */ $url = apply_filters( 'um_activate_url', home_url() ); $url = add_query_arg( 'act', 'activate_via_email', $url ); - $url = add_query_arg( 'hash', um_user('account_secret_hash'), $url ); - $url = add_query_arg( 'user_id', um_user('ID'), $url ); + $url = add_query_arg( 'hash', um_user( 'account_secret_hash' ), $url ); + $url = add_query_arg( 'user_id', um_user( 'ID' ), $url ); return $url; } @@ -375,7 +379,7 @@ if ( ! class_exists( 'um\core\Permalinks' ) ) { */ $profile_url = apply_filters( 'um_localize_permalink_filter', $profile_url, $page_id ); - if ( get_option('permalink_structure') ) { + if ( get_option( 'permalink_structure' ) ) { $profile_url = trailingslashit( untrailingslashit( $profile_url ) ); $profile_url = $profile_url . strtolower( $slug ). '/'; diff --git a/includes/core/um-actions-save-profile.php b/includes/core/um-actions-save-profile.php index e479d3df..2a1a6232 100644 --- a/includes/core/um-actions-save-profile.php +++ b/includes/core/um-actions-save-profile.php @@ -31,12 +31,12 @@ function um_update_profile_full_name( $user_id, $changes ) { case 'initial_name': $fname = get_user_meta( $user_id, 'first_name', true ); $lname = get_user_meta( $user_id, 'last_name', true ); - $update_name = $fname . ' ' . ( !empty( $lname ) ? $lname[0] : '' ); + $update_name = $fname . ' ' . ( ! empty( $lname ) ? $lname[0] : '' ); break; case 'initial_name_f': $fname = get_user_meta( $user_id, 'first_name', true ); $lname = get_user_meta( $user_id, 'last_name', true ); - $update_name = ( !empty($fname) ? $fname[0] : '' ) . ' ' . $lname; + $update_name = ( ! empty( $fname ) ? $fname[0] : '' ) . ' ' . $lname; break; case 'nickname': $update_name = get_user_meta( $user_id, 'nickname', true ); @@ -48,19 +48,20 @@ function um_update_profile_full_name( $user_id, $changes ) { $arr_user = array( 'ID' => $user_id, 'display_name' => $update_name ); $return = wp_update_user( $arr_user ); - if( is_wp_error( $return ) ) { + if ( is_wp_error( $return ) ) { wp_die( '
' . var_export( array( 'message' => $return->get_error_message(), 'dump' => $arr_user, 'changes' => $changes ), true ) . '
' ); } } 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; + $full_name = UM()->validation()->safe_name_in_url( $full_name ); - $full_name = UM()->user()->profile['display_name']; - $full_name = UM()->validation()->safe_name_in_url( $full_name ); - - update_user_meta( UM()->user()->id, 'full_name', $full_name ); - + update_user_meta( UM()->user()->id, 'full_name', $full_name ); + } } // regenerate slug