diff --git a/includes/admin/class-secure.php b/includes/admin/class-secure.php index a3f173de..a8a37d61 100644 --- a/includes/admin/class-secure.php +++ b/includes/admin/class-secure.php @@ -150,6 +150,7 @@ if ( ! class_exists( 'um\admin\Secure' ) ) { } // Restore Account Status. if ( isset( $metadata['account_status'] ) ) { + // Force update of the user status without email notifications. UM()->common()->users()->set_status( $user_id, $metadata['account_status'] ); } @@ -327,7 +328,7 @@ if ( ! class_exists( 'um\admin\Secure' ) ) { if ( 'account_status' === $column_name ) { um_fetch_user( $user_id ); $is_blocked = um_user( 'um_user_blocked' ); - $account_status = um_user( 'account_status' ); + $account_status = UM()->common()->users()->get_status( $user_id ); if ( ! empty( $is_blocked ) && in_array( $account_status, array( 'rejected', 'inactive' ), true ) ) { $datetime = um_user( 'um_user_blocked__timestamp' ); $val .= '
' . esc_html__( 'Blocked Due to Suspicious Activity', 'ultimate-member' ) . '
'; diff --git a/includes/common/class-secure.php b/includes/common/class-secure.php index 141ef494..65396d7e 100644 --- a/includes/common/class-secure.php +++ b/includes/common/class-secure.php @@ -106,7 +106,7 @@ if ( ! class_exists( 'um\common\Secure' ) ) { $banned_profile_links = ''; foreach ( $user_ids as $uid ) { um_fetch_user( $uid ); - $banned_profile_links .= UM()->user()->get_profile_link( $uid ) . ' ' . um_user( 'account_status' ) . '
'; + $banned_profile_links .= UM()->user()->get_profile_link( $uid ) . ' ' . UM()->common()->users()->get_status( $uid ) . '
'; } um_reset_user(); @@ -221,18 +221,20 @@ if ( ! class_exists( 'um\common\Secure' ) ) { 'submitted' => ! empty( UM()->form()->post_form ) ? UM()->form()->post_form : '', 'roles' => $user->roles, 'user_agent' => $user_agent, - 'account_status' => um_user( 'status' ), + 'account_status' => UM()->common()->users()->get_status( $user->ID ), ); update_user_meta( $user->ID, 'um_user_blocked__metadata', $captured ); $user->remove_all_caps(); $user->update_user_level_from_caps(); + // Force update of the user status without email notifications. if ( is_user_logged_in() ) { UM()->common()->users()->set_status( $user->ID, 'inactive' ); } else { UM()->common()->users()->set_status( $user->ID, 'rejected' ); } + um_reset_user(); update_user_meta( $user->ID, 'um_user_blocked', 'suspicious_activity' ); update_user_meta( $user->ID, 'um_user_blocked__timestamp', current_time( 'mysql', true ) ); diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index ea83dffa..dd40f0dd 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -2680,8 +2680,8 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { 'card_anchor' => esc_html( substr( md5( $user_id ), 10, 5 ) ), 'id' => absint( $user_id ), 'role' => esc_html( um_user( 'role' ) ), - 'account_status' => esc_html( um_user( 'account_status' ) ), - 'account_status_name' => esc_html( um_user( 'account_status_name' ) ), + 'account_status' => esc_html( UM()->common()->users()->get_status( $user_id ) ), + 'account_status_name' => esc_html( UM()->common()->users()->get_status( $user_id, 'formatted' ) ), 'cover_photo' => wp_kses( um_user( 'cover_photo', $this->cover_size ), UM()->get_allowed_html( 'templates' ) ), 'display_name' => esc_html( um_user( 'display_name' ) ), 'profile_url' => esc_url( um_user_profile_url() ), diff --git a/includes/core/class-user.php b/includes/core/class-user.php index 7512e920..14f7aa09 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -432,7 +432,7 @@ if ( ! class_exists( 'um\core\User' ) ) { } $metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' ); - if ( ! in_array( $meta_key, $metakeys ) ) { + if ( ! in_array( $meta_key, $metakeys, true ) ) { return; } @@ -506,7 +506,7 @@ if ( ! class_exists( 'um\core\User' ) ) { function on_update_usermeta( $meta_id, $object_id, $meta_key, $_meta_value ) { $metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' ); - if ( ! in_array( $meta_key, $metakeys ) ) { + if ( ! in_array( $meta_key, $metakeys, true ) ) { return; } @@ -642,28 +642,23 @@ if ( ! class_exists( 'um\core\User' ) ) { delete_transient( 'um_count_users_pending_dot' ); } - /** * */ - function check_membership() { + public function check_membership() { if ( ! is_user_logged_in() ) { return; } - um_fetch_user( get_current_user_id() ); - $status = um_user( 'account_status' ); - - if ( 'rejected' == $status ) { + $status = UM()->common()->users()->get_status( get_current_user_id() ); + if ( 'rejected' === $status ) { wp_logout(); session_unset(); - exit( wp_redirect( um_get_core_page( 'login' ) ) ); + um_safe_redirect( um_get_core_page( 'login' ) ); + exit; } - - um_reset_user(); } - /** * Multisite add existing user * @@ -1295,25 +1290,7 @@ if ( ! class_exists( 'um\core\User' ) ) { $this->usermeta['account_status'][0] = 'approved'; } - if ( $this->usermeta['account_status'][0] == 'approved' ) { - $this->usermeta['account_status_name'][0] = __( 'Approved', 'ultimate-member' ); - } - - if ( $this->usermeta['account_status'][0] == 'awaiting_email_confirmation' ) { - $this->usermeta['account_status_name'][0] = __( 'Awaiting Email Confirmation', 'ultimate-member' ); - } - - if ( $this->usermeta['account_status'][0] == 'awaiting_admin_review' ) { - $this->usermeta['account_status_name'][0] = __( 'Pending Review', 'ultimate-member' ); - } - - if ( $this->usermeta['account_status'][0] == 'rejected' ) { - $this->usermeta['account_status_name'][0] = __( 'Membership Rejected', 'ultimate-member' ); - } - - if ( $this->usermeta['account_status'][0] == 'inactive' ) { - $this->usermeta['account_status_name'][0] = __( 'Membership Inactive', 'ultimate-member' ); - } + $this->usermeta['account_status_name'][0] = UM()->common()->users()->get_status( $this->id, 'formatted' ); // add user meta foreach ( $this->usermeta as $k => $v ) { @@ -1619,36 +1596,29 @@ if ( ! class_exists( 'um\core\User' ) ) { * * @param bool $send_mail */ - function delete( $send_mail = true ) { - + public function delete( $send_mail = true ) { $this->send_mail_on_delete = $send_mail; - //don't send email notification to not approved user - if ( 'approved' != um_user( 'account_status' ) ) { + // Don't send email notification to not approved user + if ( 'approved' !== UM()->common()->users()->get_status( $this->id ) ) { $this->send_mail_on_delete = false; } // remove user if ( is_multisite() ) { - if ( ! function_exists( 'wpmu_delete_user' ) ) { require_once ABSPATH . 'wp-admin/includes/ms.php'; } wpmu_delete_user( $this->id ); - } else { - if ( ! function_exists( 'wp_delete_user' ) ) { require_once ABSPATH . 'wp-admin/includes/user.php'; } wp_delete_user( $this->id ); - } - } - /** * This method gets a user role in slug format. e.g. member * diff --git a/includes/core/rest/class-api-v1.php b/includes/core/rest/class-api-v1.php index f999a3d5..e80a59ea 100644 --- a/includes/core/rest/class-api-v1.php +++ b/includes/core/rest/class-api-v1.php @@ -174,7 +174,7 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) { $val->roles = $user->roles; $val->first_name = um_user( 'first_name' ); $val->last_name = um_user( 'last_name' ); - $val->account_status = um_user( 'account_status' ); + $val->account_status = UM()->common()->users()->get_status( $user->ID ); $val->profile_pic_original = um_get_user_avatar_url( '', 'original' ); $val->profile_pic_normal = um_get_user_avatar_url( '', 200 ); $val->profile_pic_small = um_get_user_avatar_url( '', 40 ); @@ -239,6 +239,7 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) { switch ( $data ) { case 'status': + // Force update of the user status without email notifications. UM()->common()->users()->set_status( $id, $value ); $response['success'] = __( 'User status has been changed.', 'ultimate-member' ); break; @@ -361,7 +362,7 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) { $response['profile_pic_small'] = um_get_user_avatar_url( '', 40 ); break; case 'status': - $response['status'] = um_user( 'account_status' ); + $response['status'] = UM()->common()->users()->get_status( $user->ID ); break; case 'role': //get priority role here @@ -382,7 +383,7 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) { $val->roles = $user->roles; $val->first_name = um_user( 'first_name' ); $val->last_name = um_user( 'last_name' ); - $val->account_status = um_user( 'account_status' ); + $val->account_status = UM()->common()->users()->get_status( $user->ID ); $val->profile_pic_original = um_get_user_avatar_url( '', 'original' ); $val->profile_pic_normal = um_get_user_avatar_url( '', 200 ); $val->profile_pic_small = um_get_user_avatar_url( '', 40 ); diff --git a/includes/core/rest/class-api-v2.php b/includes/core/rest/class-api-v2.php index 6163e683..8f72fd83 100644 --- a/includes/core/rest/class-api-v2.php +++ b/includes/core/rest/class-api-v2.php @@ -173,7 +173,7 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) { $val->roles = $user->roles; $val->first_name = um_user( 'first_name' ); $val->last_name = um_user( 'last_name' ); - $val->account_status = um_user( 'account_status' ); + $val->account_status = UM()->common()->users()->get_status( $user->ID ); $val->profile_pic_original = um_get_user_avatar_url( '', 'original' ); $val->profile_pic_normal = um_get_user_avatar_url( '', 200 ); $val->profile_pic_small = um_get_user_avatar_url( '', 40 ); @@ -221,6 +221,7 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) { switch ( $data ) { case 'status': + // Force update of the user status without email notifications. UM()->common()->users()->set_status( $id, $value ); $response['success'] = __( 'User status has been changed.', 'ultimate-member' ); break; @@ -325,7 +326,7 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) { $response['profile_pic_small'] = um_get_user_avatar_url( '', 40 ); break; case 'status': - $response['status'] = um_user( 'account_status' ); + $response['status'] = UM()->common()->users()->get_status( $user->ID ); break; case 'role': //get priority role here @@ -346,7 +347,7 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) { $val->roles = $user->roles; $val->first_name = um_user( 'first_name' ); $val->last_name = um_user( 'last_name' ); - $val->account_status = um_user( 'account_status' ); + $val->account_status = UM()->common()->users()->get_status( $user->ID ); $val->profile_pic_original = um_get_user_avatar_url( '', 'original' ); $val->profile_pic_normal = um_get_user_avatar_url( '', 200 ); $val->profile_pic_small = um_get_user_avatar_url( '', 40 ); diff --git a/includes/core/um-actions-access.php b/includes/core/um-actions-access.php index c8e53613..a56d66bb 100644 --- a/includes/core/um-actions-access.php +++ b/includes/core/um-actions-access.php @@ -1,5 +1,7 @@ -common()->users()->get_status( $user_id ); + if ( 'approved' !== $account_status ) { um_redirect_home(); } - - um_reset_user(); - } } -add_action( 'um_access_profile', 'um_access_profile' ); \ No newline at end of file +add_action( 'um_access_profile', 'um_access_profile' ); diff --git a/includes/core/um-actions-login.php b/includes/core/um-actions-login.php index a47065fe..816f53e7 100644 --- a/includes/core/um-actions-login.php +++ b/includes/core/um-actions-login.php @@ -130,16 +130,14 @@ function um_submit_form_errors_hook_logincheck( $submitted_data, $form_data ) { } $user_id = ( isset( UM()->login()->auth_id ) ) ? UM()->login()->auth_id : ''; - um_fetch_user( $user_id ); - $status = um_user( 'account_status' ); // account status + $status = UM()->common()->users()->get_status( $user_id ); // account status switch ( $status ) { // If user can't log in to site... case 'inactive': case 'awaiting_admin_review': case 'awaiting_email_confirmation': case 'rejected': - um_reset_user(); // Not `um_safe_redirect()` because UM()->permalinks()->get_current_url() is situated on the same host. wp_safe_redirect( add_query_arg( 'err', esc_attr( $status ), UM()->permalinks()->get_current_url() ) ); exit; diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php index e60e5ac8..3810847a 100644 --- a/includes/core/um-actions-profile.php +++ b/includes/core/um-actions-profile.php @@ -1318,11 +1318,11 @@ function um_profile_header( $args ) { } ?> -
+
common()->users()->get_status( um_user( 'ID' ), 'formatted' ) ) ); ?>
diff --git a/includes/core/um-actions-register.php b/includes/core/um-actions-register.php index 286ccf99..74bcf169 100644 --- a/includes/core/um-actions-register.php +++ b/includes/core/um-actions-register.php @@ -58,15 +58,6 @@ function um_after_insert_user( $user_id, $args, $form_data = null ) { UM()->user()->set_registration_details( $args['submitted'], $args, $form_data ); } - // Set user status. - $status = um_user( 'status' ); - if ( empty( $status ) ) { - um_fetch_user( $user_id ); - $status = um_user( 'status' ); - } - - UM()->common()->users()->set_status( $user_id, $status ); - // Create user uploads directory. UM()->uploader()->get_upload_user_base_dir( $user_id, true ); @@ -123,11 +114,12 @@ add_action( 'um_user_register', 'um_after_insert_user', 1, 3 ); */ function um_send_registration_notification( $user_id ) { um_fetch_user( $user_id ); + $registration_status = um_user( 'status' ); $emails = um_multi_admin_email(); if ( ! empty( $emails ) ) { foreach ( $emails as $email ) { - if ( 'pending' !== um_user( 'account_status' ) ) { + if ( 'pending' !== $registration_status ) { UM()->mail()->send( $email, 'notification_new_user', array( 'admin' => true ) ); } else { UM()->mail()->send( $email, 'notification_review', array( 'admin' => true ) ); @@ -145,7 +137,7 @@ add_action( 'um_registration_complete', 'um_send_registration_notification' ); * @param null|array $form_data */ function um_check_user_status( $user_id, $args, $form_data = null ) { - $status = um_user( 'account_status' ); + $registration_status = um_user( 'status' ); /** * Fires after complete UM user registration. * Where $status can be equal to 'approved', 'checkmail' or 'pending'. @@ -175,7 +167,7 @@ function um_check_user_status( $user_id, $args, $form_data = null ) { * } * add_action( 'um_post_registration_pending_hook', 'my_um_post_registration', 10, 3 ); */ - do_action( "um_post_registration_{$status}_hook", $user_id, $args, $form_data ); + do_action( "um_post_registration_{$registration_status}_hook", $user_id, $args, $form_data ); if ( is_null( $form_data ) || is_admin() ) { return; @@ -210,9 +202,9 @@ function um_check_user_status( $user_id, $args, $form_data = null ) { * } * add_action( 'track_pending_user_registration', 'my_um_post_registration', 10, 3 ); */ - do_action( "track_{$status}_user_registration", $user_id, $args, $form_data ); + do_action( "track_{$registration_status}_user_registration", $user_id, $args, $form_data ); - if ( 'approved' === $status ) { + if ( 'approved' === $registration_status ) { // Check if user is logged in because there can be the customized way when through 'um_registration_for_loggedin_users' hook the registration is enabled for the logged-in users (e.g. Administrator). if ( ! is_user_logged_in() ) { // Custom way if 'um_registration_for_loggedin_users' hook after custom callbacks returns true. Then don't make auto-login because user is already logged-in. @@ -255,7 +247,7 @@ function um_check_user_status( $user_id, $args, $form_data = null ) { } else { um_fetch_user( $user_id ); // required because there can be empty um_user. - if ( 'redirect_url' === um_user( $status . '_action' ) && '' !== um_user( $status . '_url' ) ) { + if ( 'redirect_url' === um_user( $registration_status . '_action' ) && '' !== um_user( $registration_status . '_url' ) ) { /** * Filters the redirect URL for pending user after registration. * @@ -275,13 +267,13 @@ function um_check_user_status( $user_id, $args, $form_data = null ) { * } * add_filter( 'um_registration_pending_user_redirect', 'my_registration_pending_user_redirect', 10, 3 ); */ - $redirect_url = apply_filters( 'um_registration_pending_user_redirect', um_user( $status . '_url' ), $status, um_user( 'ID' ) ); + $redirect_url = apply_filters( 'um_registration_pending_user_redirect', um_user( $registration_status . '_url' ), $registration_status, $user_id ); um_safe_redirect( $redirect_url ); } - if ( 'show_message' === um_user( $status . '_action' ) && '' !== um_user( $status . '_message' ) ) { + if ( 'show_message' === um_user( $registration_status . '_action' ) && '' !== um_user( $registration_status . '_message' ) ) { $url = UM()->permalinks()->get_current_url(); - $url = add_query_arg( 'message', esc_attr( $status ), $url ); + $url = add_query_arg( 'message', esc_attr( $registration_status ), $url ); // Add only priority role to URL. $url = add_query_arg( 'um_role', esc_attr( um_user( 'role' ) ), $url ); $url = add_query_arg( 'um_form_id', esc_attr( $form_data['form_id'] ), $url ); @@ -305,7 +297,7 @@ function um_check_user_status( $user_id, $args, $form_data = null ) { * } * add_filter( 'um_registration_show_message_redirect_url', 'my_um_registration_show_message_redirect_url', 10, 4 ); */ - $url = apply_filters( 'um_registration_show_message_redirect_url', $url, $status, um_user( 'ID' ), $form_data ); + $url = apply_filters( 'um_registration_show_message_redirect_url', $url, $registration_status, $user_id, $form_data ); // Not `um_safe_redirect()` because UM()->permalinks()->get_current_url() is situated on the same host. wp_safe_redirect( $url ); exit; diff --git a/includes/core/um-filters-login.php b/includes/core/um-filters-login.php index a5369469..7d7ba07f 100644 --- a/includes/core/um-filters-login.php +++ b/includes/core/um-filters-login.php @@ -66,8 +66,7 @@ function um_wp_form_errors_hook_logincheck( $user ) { } if ( isset( $user->ID ) ) { - um_fetch_user( $user->ID ); - $status = um_user( 'account_status' ); + $status = UM()->common()->users()->get_status( $user->ID ); $error = null; switch ( $status ) {