From 026b783a24f5d82d9c3c9e06145d23097dcd8d9d Mon Sep 17 00:00:00 2001 From: nikitozzzzzzz Date: Thu, 31 Aug 2017 15:05:27 +0300 Subject: [PATCH] - fixed default avatar URL for sites at subfolder; - user registration optimization (removed edit profile handlers on user registration); - fixed "can edit" checkbox at Forms add field modal window; --- includes/admin/core/class-admin-metabox.php | 2 +- includes/admin/core/packages/2.0.php | 8 +- includes/core/class-form.php | 1 + includes/core/class-roles-capabilities.php | 65 +------- includes/core/class-user.php | 32 ++-- includes/core/um-actions-profile.php | 10 +- includes/core/um-actions-register.php | 167 +++++++------------- includes/core/um-actions-wpadmin.php | 2 - includes/um-short-functions.php | 24 +-- 9 files changed, 106 insertions(+), 205 deletions(-) diff --git a/includes/admin/core/class-admin-metabox.php b/includes/admin/core/class-admin-metabox.php index 9cf083a4..690fa673 100644 --- a/includes/admin/core/class-admin-metabox.php +++ b/includes/admin/core/class-admin-metabox.php @@ -1896,7 +1896,7 @@ if ( ! class_exists( 'Admin_Metabox' ) ) {

- edit_mode_value ) ? $this->edit_mode_value : 0 ) ?> /> + edit_mode_value || $this->edit_mode_value ) ?> />

diff --git a/includes/admin/core/packages/2.0.php b/includes/admin/core/packages/2.0.php index 2dd1bf6b..01bdf2a5 100644 --- a/includes/admin/core/packages/2.0.php +++ b/includes/admin/core/packages/2.0.php @@ -990,11 +990,11 @@ if ( ! empty( $um_roles ) ) { $all_users = get_users( $args ); //update roles for users foreach ( $all_users as $k => $user ) { - $user_roleID = get_user_meta( $user->ID, 'role', true ); + $role_slug = get_user_meta( $user->ID, 'role', true ); - if ( ! empty( $user_roleID ) ) { - $userdata = get_userdata( $user->ID ); - $userdata->add_role( 'um_' . $user_roleID ); + if ( ! empty( $role_slug ) ) { + $user_object = get_userdata( $user->ID ); + $user_object->add_role( 'um_' . $role_slug ); } } } diff --git a/includes/core/class-form.php b/includes/core/class-form.php index 4683a42c..a7882eef 100644 --- a/includes/core/class-form.php +++ b/includes/core/class-form.php @@ -8,6 +8,7 @@ if ( ! class_exists( 'Form' ) ) { class Form { public $form_suffix; + var $form_id; function __construct() { diff --git a/includes/core/class-roles-capabilities.php b/includes/core/class-roles-capabilities.php index 0f96aac6..e3dab028 100644 --- a/includes/core/class-roles-capabilities.php +++ b/includes/core/class-roles-capabilities.php @@ -72,7 +72,7 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { * @uses apply_filters() Calls 'um_set_user_role' with the role and user id * @return string */ - function set_um_user_role( $user_id = 0, $new_role = '' ) { + function set_role( $user_id, $new_role = '' ) { // Validate user id $user = get_userdata( $user_id ); @@ -103,9 +103,9 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { UM()->user()->profile['role'] = $new_role; - do_action('um_member_role_upgrade', $role, UM()->user()->profile['role'] ); + do_action( 'um_member_role_upgrade', $role, UM()->user()->profile['role'] ); - UM()->user()->update_usermeta_info('role'); + UM()->user()->update_usermeta_info( 'role' ); do_action('um_after_user_role_is_changed'); @@ -281,64 +281,5 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) { return true; return false; } - -/* - /** - * @param $cap - * @param bool $value - * @param string $struct - * @return bool - * - function current_user_can( $cap, $value = true, $struct = 'string' ) { - if ( ! is_user_logged_in() ) - return false; - - $user_id = get_current_user_id(); - return $this->user_can( $user_id, $cap, $value, $struct ); - } - - - /** - * @param $user_id - * @param $cap - * @param bool $value - * @param string $struct - * @return bool - * - function user_can( $user_id, $cap, $value = true, $struct = 'string' ) { - - - $role = $this->um_get_user_role( $user_id ); - $role_meta = $this->role_data( $role ); - $role_meta = apply_filters( 'um_user_permissions_filter', $role_meta, $user_id ); - - /* $um_roles = get_option( 'um_roles' ); - $um_roles = array_map( function( $item ) { - return 'um_' . $item; - }, $um_roles ); - - $user_meta = get_userdata( $user_id ); - $user_roles = $user_meta->roles; - - $user_um_role = array_intersect( $um_roles, $user_roles ); - if ( ! count( $user_um_role ) ) - return false; - - $user_um_role = $user_um_role[0]; - $role_meta = get_option( "um_role_" . substr( $user_um_role, 3 ) . "_meta" );* - - if ( empty( $role_meta[$cap] ) ) - return false; - - if ( $struct == 'array' ) { - if ( is_array( $role_meta[$cap] ) && ! in_array( $value, $role_meta[$cap] ) ) - return false; - } else { - if ( $role_meta[$cap] != $value ) - return false; - } - - return true; - }*/ } } \ No newline at end of file diff --git a/includes/core/class-user.php b/includes/core/class-user.php index 90352d8b..3b422dcc 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -64,6 +64,8 @@ if ( ! class_exists( 'User' ) ) { add_action( 'user_register', array( &$this, 'user_register_via_admin' ), 10, 1 ); + add_action( 'user_register', array( &$this, 'set_gravatar' ), 11, 1 ); + } @@ -212,11 +214,16 @@ if ( ! class_exists( 'User' ) ) { if ( empty( $user_id ) ) return; - 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_after_new_user_register', $user_id, $_POST ); - + do_action( 'um_user_register', $user_id, $_POST ); } } @@ -230,7 +237,7 @@ if ( ! class_exists( 'User' ) ) { if ( ! empty( $_POST['um-role'] ) ) { if ( ! user_can( $user_id, $_POST['um-role'] ) ) - UM()->roles()->set_um_user_role( $user_id, $_POST['um-role'] ); + UM()->roles()->set_role( $user_id, $_POST['um-role'] ); } $this->remove_cache( $user_id ); @@ -311,7 +318,7 @@ if ( ! class_exists( 'User' ) ) { *** @Remove cached queue from Users backend ***/ function remove_cached_queue() { - delete_option('um_cached_users_queue'); + delete_option( 'um_cached_users_queue' ); } /*** @@ -1029,6 +1036,7 @@ if ( ! class_exists( 'User' ) ) { } + /*** *** @update profile ***/ @@ -1187,6 +1195,8 @@ if ( ! class_exists( 'User' ) ) { return $user_id; } } + + /** * @function user_exists_by_email_as_username() * @@ -1224,19 +1234,23 @@ if ( ! class_exists( 'User' ) ) { return $user_id; } + /** * Set gravatar hash id + * + * @param $user_id + * @return string */ - function set_gravatar( $user_id ){ + function set_gravatar( $user_id ) { um_fetch_user( $user_id ); - $email_address = um_user('user_email'); + $email_address = um_user( 'user_email' ); $hash_email_address = ''; - if( $email_address ){ + if ( $email_address ) { $hash_email_address = md5( $email_address ); $this->profile['synced_gravatar_hashed_id'] = $hash_email_address; - $this->update_usermeta_info('synced_gravatar_hashed_id'); + $this->update_usermeta_info( 'synced_gravatar_hashed_id' ); } return $hash_email_address; diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php index 974cf2e5..cf4e37d3 100644 --- a/includes/core/um-actions-profile.php +++ b/includes/core/um-actions-profile.php @@ -556,13 +556,13 @@ /*** *** @form processing ***/ - add_action('um_submit_form_profile', 'um_submit_form_profile', 10); - function um_submit_form_profile($args){ + add_action( 'um_submit_form_profile', 'um_submit_form_profile', 10 ); + function um_submit_form_profile( $args ) { - if ( !isset( UM()->form()->errors) ) do_action('um_user_edit_profile', $args); - - do_action('um_user_profile_extra_hook', $args ); + if ( isset( UM()->form()->errors ) ) + return false; + do_action( 'um_user_edit_profile', $args ); } /*** diff --git a/includes/core/um-actions-register.php b/includes/core/um-actions-register.php index 938d6354..0bcf5a8d 100644 --- a/includes/core/um-actions-register.php +++ b/includes/core/um-actions-register.php @@ -28,62 +28,41 @@ um_fetch_user( $user_id ); UM()->user()->pending(); - } /** - * After adding a new user + * After insert a new user + * run at frontend and backend + * + * @param $user_id + * @param $args */ - add_action( 'um_after_new_user_register', 'um_after_new_user_register', 10, 2 ); - function um_after_new_user_register( $user_id, $args ) { - global $pagenow; + function um_after_insert_user( $user_id, $args ) { + //clear Users cached queue + UM()->user()->remove_cached_queue(); - um_fetch_user( $user_id ); - - if ( ! isset( $args['role'] ) ) - $args['role'] = get_option( 'default_role', true ); - - if ( $pagenow != 'user-new.php' && ! array_key_exists( $args['role'], UM()->roles()->get_roles( false, array( 'admin' ) ) ) ) - $args['role'] = get_option( 'default_role', true ); - - if ( ! user_can( $user_id, $args['role'] ) ) - UM()->roles()->set_um_user_role( $user_id, $args['role'] ); - - if ( ! empty( $args['submitted'] ) ) + if ( ! empty( $args['submitted'] ) ) { + um_fetch_user( $user_id ); UM()->user()->set_registration_details( $args['submitted'] ); + } - //UM()->user()->set_last_login(); - - UM()->user()->remove_cached_queue(); - - do_action( 'um_post_registration_save', $user_id, $args ); - - //send notification about registration - do_action( 'um_post_registration_listener', $user_id, $args ); - - do_action( 'um_post_registration', $user_id, $args ); + do_action( 'um_registration_set_extra_data', $user_id, $args ); + //redirects handlers at 100 priority, you can add some info before redirects + //after complete UM user registration + do_action( 'um_registration_complete', $user_id, $args ); } - - /** - * Update user's profile after registration - */ - add_action( 'um_post_registration_save', 'um_post_registration_save', 10, 2 ); - function um_post_registration_save( $user_id, $args ) { - unset( $args['user_id'] ); - $args['_user_id'] = $user_id; - $args['is_signup'] = 1; - - do_action( 'um_user_edit_profile', $args ); - } + add_action( 'um_user_register', 'um_after_insert_user', 10, 2 ); - /** - * Post-registration admin listener - */ - add_action('um_post_registration_listener', 'um_post_registration_listener', 10, 2); - function um_post_registration_listener( $user_id, $args ) { + /** + * Send notification about registration + * + * @param $user_id + * @param $args + */ + function um_send_registration_notification( $user_id, $args ) { um_fetch_user( $user_id ); if ( um_user( 'status' ) != 'pending' ) { @@ -91,40 +70,19 @@ } else { UM()->mail()->send( um_admin_email(), 'notification_review', array( 'admin' => true ) ); } - } + add_action( 'um_registration_complete', 'um_send_registration_notification', 10, 2 ); - /** - * Post-registration procedure - */ - add_action('um_post_registration', 'um_post_registration', 10, 2); - function um_post_registration( $user_id, $args ) { - unset( $args['user_id'] ); - extract( $args ); - + /** + * Check user status and redirect it after registration + * + * @param $user_id + * @param $args + */ + function um_check_user_status( $user_id, $args ) { $status = um_user( 'status' ); - /* - * maybe in future - * if ( ! is_admin() ) { - um_fetch_user( $user_id ); - - $user_roles = UM()->roles()->um_get_user_role( $user_id ); - var_dump( $user_roles ); - $role_meta = UM()->roles()->role_data( $user_roles ); - var_dump( $role_meta ); - if ( $role_meta['_um_status'] == 'approved' ) { - UM()->user()->approve(); - } elseif ( $role_meta['_um_status'] == 'checkmail' ) { - UM()->user()->email_pending(); - } elseif ( $role_meta['_um_status'] == 'pending' ) { - UM()->user()->pending(); - } - - $status = um_user( 'status' ); - }*/ - do_action( "um_post_registration_{$status}_hook", $user_id, $args ); if ( ! is_admin() ) { @@ -164,7 +122,7 @@ $url = UM()->permalinks()->get_current_url(); $url = add_query_arg( 'message', esc_attr( $status ), $url ); $url = add_query_arg( 'um_role', esc_attr( um_user( 'role' ) ), $url ); - $url = add_query_arg( 'um_form_id', esc_attr( $form_id ), $url ); + $url = add_query_arg( 'um_form_id', esc_attr( $args['form_id'] ), $url ); exit( wp_redirect( $url ) ); } @@ -174,18 +132,24 @@ } } + add_action( 'um_registration_complete', 'um_check_user_status', 100, 2 ); /** - * New user registration + * Registration form submit handler + * + * @param $args + * @return bool|int|WP_Error */ - add_action( 'um_user_registration', 'um_user_registration', 10 ); - function um_user_registration( $args ) { - unset( $args['user_id'] ); + function um_submit_form_register( $args ) { + if ( isset( UM()->form()->errors ) ) + return false; + + $args = apply_filters( 'um_add_user_frontend_submitted', $args ); extract( $args ); - if ( isset( $username ) && ! isset( $args['user_login'] ) ) { + if ( isset( $username ) && ! isset( $user_login ) ) { $user_login = $username; } @@ -227,29 +191,22 @@ $user_password = UM()->validation()->generate( 8 ); } - if ( ! isset( $user_email ) ) { $site_url = @$_SERVER['SERVER_NAME']; $user_email = 'nobody' . $unique_userID . '@' . $site_url; - $user_email = apply_filters( "um_user_register_submitted__email", $user_email ); + $user_email = apply_filters( 'um_user_register_submitted__email', $user_email ); } - $creds['user_login'] = $user_login; - $creds['user_password'] = $user_password; - $creds['user_email'] = trim( $user_email ); + $credentials = array( + 'user_login' => $user_login, + 'user_password' => $user_password, + 'user_email' => trim( $user_email ), + ); - $args = apply_filters('um_add_user_frontend_submitted', $args ); - - $args['submitted'] = array_merge( $args['submitted'], $creds ); - $args = array_merge( $args, $creds ); - - unset( $args['user_id'] ); - - do_action( 'um_before_new_user_register', $args ); + $args['submitted'] = array_merge( $args['submitted'], $credentials ); + $args = array_merge( $args, $credentials ); $user_role = UM()->form()->assigned_role( UM()->form()->form_id ); -/* if ( empty( $default_role ) ) - $default_role = get_option( 'default_role' );*/ $userdata = array( 'user_login' => $user_login, @@ -259,20 +216,12 @@ ); $user_id = wp_insert_user( $userdata ); - do_action( 'um_after_new_user_register', $user_id, $args ); + do_action( 'um_user_register', $user_id, $args ); return $user_id; - } - - /** - * Form Processing - */ add_action( 'um_submit_form_register', 'um_submit_form_register', 10 ); - function um_submit_form_register( $args ) { - if ( ! isset( UM()->form()->errors ) ) - do_action( 'um_user_registration', $args ); - } + /** * Register user with predefined role in options @@ -346,12 +295,4 @@ function um_add_register_fields($args){ echo UM()->fields()->display( 'register', $args ); - } - - /** - * Set user gravatar with user_email - */ - add_action('user_register','um_user_register_generate_gravatar'); - function um_user_register_generate_gravatar( $user_id ){ - UM()->user()->set_gravatar( $user_id ); - } + } \ No newline at end of file diff --git a/includes/core/um-actions-wpadmin.php b/includes/core/um-actions-wpadmin.php index 12c467c8..03b7c3c4 100644 --- a/includes/core/um-actions-wpadmin.php +++ b/includes/core/um-actions-wpadmin.php @@ -98,8 +98,6 @@ *** @checks if user can access the backend ***/ function um_block_wpadmin_by_user_role() { - /*var_dump( is_admin() && ! defined('DOING_AJAX') && um_user( 'ID' ) && ! um_user( 'can_access_wpadmin' ) && ! is_super_admin( um_user('ID') ) ); - exit;*/ if ( is_admin() && ! defined('DOING_AJAX') && um_user( 'ID' ) && ! um_user( 'can_access_wpadmin' ) && ! is_super_admin( um_user('ID') ) ) { um_redirect_home(); } diff --git a/includes/um-short-functions.php b/includes/um-short-functions.php index 49c90bb2..eae1be79 100644 --- a/includes/um-short-functions.php +++ b/includes/um-short-functions.php @@ -1360,10 +1360,13 @@ return $uri; } - /*** - *** @default avatar - ***/ - function um_get_default_avatar_uri( $user_id = '' ) { + + /** + * Default avatar URL + * + * @return string + */ + function um_get_default_avatar_uri() { $uri = um_get_option( 'default_avatar' ); $uri = ! empty( $uri['url'] ) ? $uri['url'] : ''; if ( ! $uri ) { @@ -1372,15 +1375,18 @@ //http <-> https compatibility default avatar option of SSL was changed $url_array = parse_url( $uri ); - $setting_url = $url_array['scheme'] . '://' . $url_array['host']; - if ( $setting_url != site_url() ) - $uri = str_replace( $setting_url, site_url(), $uri ); - } + if ( is_ssl() && $url_array['scheme'] == 'http' ) { + $uri = str_replace( 'http://', 'https://', $uri ); + } elseif ( ! is_ssl() && $url_array['scheme'] == 'https' ) { + $uri = str_replace( 'https://', 'http://', $uri ); + } + } return $uri; } + /*** *** @get user avatar url ***/ @@ -1616,7 +1622,7 @@ } elseif( um_user('synced_profile_photo') ){ $avatar_uri = um_user('synced_profile_photo'); } else { - $avatar_uri = um_get_default_avatar_uri( um_user('ID') ); + $avatar_uri = um_get_default_avatar_uri(); } $avatar_uri = apply_filters('um_user_avatar_url_filter', $avatar_uri, um_user('ID') );