diff --git a/includes/core/class-user.php b/includes/core/class-user.php index 6a0a9aca..a449366c 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -39,6 +39,7 @@ if ( ! class_exists( 'um\core\User' ) ) { add_action( 'init', array( &$this, 'set' ), 1 ); $this->preview = false; + $this->send_mail_on_delete = true; // a list of keys that should never be in wp_usermeta $this->update_user_keys = array( @@ -54,6 +55,8 @@ if ( ! class_exists( 'um\core\User' ) ) { // When the cache should be cleared add_action('um_delete_user_hook', array(&$this, 'remove_cached_queue') ); + add_action('um_delete_user', array( &$this, 'remove_cache' ), 10, 1 ); + add_action('um_after_user_status_is_changed_hook', array(&$this, 'remove_cached_queue') ); // When user cache should be cleared @@ -83,6 +86,73 @@ if ( ! class_exists( 'um\core\User' ) ) { add_action( 'wpmu_activate_user', array( &$this, 'add_um_role_wpmu_new_user' ), 10, 1 ); add_action( 'init', array( &$this, 'check_membership' ), 10 ); + + add_action( 'delete_user', array( &$this, 'delete_user_handler' ), 10, 1 ); + add_action( 'wpmu_delete_user', array( &$this, 'delete_user_handler' ), 10, 1 ); + } + + + /** + * @param $user_id + */ + function delete_user_handler( $user_id ) { + + um_fetch_user( $user_id ); + + /** + * UM hook + * + * @type action + * @title um_delete_user_hook + * @description On delete user + * @change_log + * ["Since: 2.0"] + * @usage add_action( 'um_delete_user_hook', 'function_name', 10 ); + * @example + * + */ + do_action( 'um_delete_user_hook' ); + + /** + * UM hook + * + * @type action + * @title um_delete_user + * @description On delete user + * @input_vars + * [{"var":"$user_id","type":"int","desc":"User ID"}] + * @change_log + * ["Since: 2.0"] + * @usage add_action( 'um_delete_user', 'function_name', 10, 1 ); + * @example + * + */ + do_action( 'um_delete_user', um_user( 'ID' ) ); + + // send email notifications + if ( $this->send_mail_on_delete ) { + UM()->mail()->send( um_user( 'user_email' ), 'deletion_email' ); + + $emails = um_multi_admin_email(); + if ( ! empty( $emails ) ) { + foreach ( $emails as $email ) { + UM()->mail()->send( $email, 'notification_deletion', array( 'admin' => true ) ); + } + } + } + + // remove uploads + UM()->files()->remove_dir( um_user_uploads_dir() ); } @@ -1288,59 +1358,10 @@ if ( ! class_exists( 'um\core\User' ) ) { * @param bool $send_mail */ function delete( $send_mail = true ) { - /** - * UM hook - * - * @type action - * @title um_delete_user_hook - * @description On delete user - * @change_log - * ["Since: 2.0"] - * @usage add_action( 'um_delete_user_hook', 'function_name', 10 ); - * @example - * - */ - do_action( 'um_delete_user_hook' ); - /** - * UM hook - * - * @type action - * @title um_delete_user - * @description On delete user - * @input_vars - * [{"var":"$user_id","type":"int","desc":"User ID"}] - * @change_log - * ["Since: 2.0"] - * @usage add_action( 'um_delete_user', 'function_name', 10, 1 ); - * @example - * - */ - do_action( 'um_delete_user', um_user( 'ID' ) ); - // send email notifications - if ( $send_mail ) { - UM()->mail()->send( um_user( 'user_email' ), 'deletion_email' ); + $this->send_mail_on_delete = $send_mail; - $emails = um_multi_admin_email(); - if ( ! empty( $emails ) ) { - foreach ( $emails as $email ) { - UM()->mail()->send( $email, 'notification_deletion', array( 'admin' => true ) ); - } - } - } - - // remove uploads - UM()->files()->remove_dir( um_user_uploads_dir() ); + $this->delete_user_handler( um_user( 'ID' ) ); // remove user if ( is_multisite() ) { diff --git a/includes/core/um-actions-core.php b/includes/core/um-actions-core.php index 2c85e9cb..fdfabc43 100644 --- a/includes/core/um-actions-core.php +++ b/includes/core/um-actions-core.php @@ -108,7 +108,9 @@ function um_action_request_process() { break; case 'um_delete': - if ( ! UM()->roles()->um_current_user_can( 'delete', $uid ) ) wp_die( __('You do not have permission to delete this user.','ultimate-member') ); + if ( ! UM()->roles()->um_current_user_can( 'delete', $uid ) ) { + wp_die( __('You do not have permission to delete this user.','ultimate-member') ); + } um_fetch_user( $uid ); UM()->user()->delete(); exit( wp_redirect( UM()->permalinks()->get_current_url( true ) ) );