From 6bdb6af868d4dfd94c1ae347e49668ebb3ee99d7 Mon Sep 17 00:00:00 2001 From: nikitozzzzzzz Date: Sun, 26 Nov 2017 13:16:43 +0200 Subject: [PATCH] - multisite users creation fixes; --- .../admin/assets/js/um-admin-role-wrapper.js | 9 ++++ includes/core/class-user.php | 47 ++++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/includes/admin/assets/js/um-admin-role-wrapper.js b/includes/admin/assets/js/um-admin-role-wrapper.js index 6ddddf77..81e6fbc0 100644 --- a/includes/admin/assets/js/um-admin-role-wrapper.js +++ b/includes/admin/assets/js/um-admin-role-wrapper.js @@ -9,4 +9,13 @@ jQuery( document ).ready( function() { } }).trigger('change'); + jQuery( '#adduser-role' ).change( function() { + if ( jQuery.inArray( jQuery(this).val().substr(3), um_roles ) !== -1 ) { + jQuery( '#um_role_existing_selector_wrapper' ).hide(); + jQuery( '#um-role' ).val(''); + } else { + jQuery( '#um_role_existing_selector_wrapper' ).show(); + } + }).trigger('change'); + }); \ No newline at end of file diff --git a/includes/core/class-user.php b/includes/core/class-user.php index 70a7be10..ec1fd251 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -66,9 +66,54 @@ 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 ); + + + add_action( 'added_existing_user', array( &$this, 'add_um_role_existing_user' ), 10, 2 ); + add_action( 'wpmu_activate_user', array( &$this, 'add_um_role_wpmu_new_user' ), 10, 1 ); } + /** + * Multisite add existing user + * + * @param $user_id + * @param $result + */ + function add_um_role_existing_user( $user_id, $result ) { + // Bail if no user ID was passed + if ( empty( $user_id ) ) + return; + + if ( ! empty( $_POST['um-role'] ) ) { + if ( ! user_can( $user_id, $_POST['um-role'] ) ) { + UM()->roles()->set_role( $user_id, $_POST['um-role'] ); + } + } + + $this->remove_cache( $user_id ); + } + + + /** + * Multisite add existing user + * + * @param $user_id + */ + function add_um_role_wpmu_new_user( $user_id ) { + // Bail if no user ID was passed + if ( empty( $user_id ) ) + return; + + if ( ! empty( $_POST['um-role'] ) ) { + if ( ! user_can( $user_id, $_POST['um-role'] ) ) { + UM()->roles()->set_role( $user_id, $_POST['um-role'] ); + } + } + + $this->remove_cache( $user_id ); + } + + /** * Get pending users (in queue) */ @@ -267,7 +312,7 @@ if ( ! class_exists( 'User' ) ) { $section_content = apply_filters( 'um_user_profile_additional_fields', '', $userdata ); - if ( ! empty( $section_content ) ) { + if ( ! empty( $section_content ) && ! ( is_multisite() && is_network_admin() ) ) { if ( $userdata !== 'add-new-user' && $userdata !== 'add-existing-user' ) { ?>