Ticket #19500: 19500.4.diff

File 19500.4.diff, 2.1 KB (added by duck_, 13 months ago)
Line 
1Index: wp-includes/user.php
2===================================================================
3--- wp-includes/user.php        (revision 20574)
4+++ wp-includes/user.php        (working copy)
5@@ -652,7 +652,7 @@
6  *
7  * @param int $user_id User ID
8  * @param bool $all Whether to retrieve all blogs, or only blogs that are not marked as deleted, archived, or spam.
9- * @return array A list of the user's blogs. False if the user was not found or an empty array if the user has no blogs.
10+ * @return array A list of the user's blogs. An empty array if the user doesn't exist or belongs to no blogs.
11  */
12 function get_blogs_of_user( $user_id, $all = false ) {
13        global $wpdb;
14@@ -661,11 +661,11 @@
15 
16        // Logged out users can't have blogs
17        if ( empty( $user_id ) )
18-               return false;
19+               return array();
20 
21        $keys = get_user_meta( $user_id );
22        if ( empty( $keys ) )
23-               return false;
24+               return array();
25 
26        if ( ! is_multisite() ) {
27                $blog_id = get_current_blog_id();
28@@ -745,10 +745,7 @@
29                $blog_id = get_current_blog_id();
30 
31        $blogs = get_blogs_of_user( $user_id );
32-       if ( is_array( $blogs ) )
33-               return array_key_exists( $blog_id, $blogs );
34-       else
35-               return false;
36+       return array_key_exists( $blog_id, $blogs );
37 }
38 
39 /**
40Index: wp-admin/includes/user.php
41===================================================================
42--- wp-admin/includes/user.php  (revision 20574)
43+++ wp-admin/includes/user.php  (working copy)
44@@ -264,12 +264,14 @@
45        }
46 
47        // FINALLY, delete user
48-       if ( !is_multisite() ) {
49-               $wpdb->delete( $wpdb->usermeta, array( 'user_id' => $id ) );
50+       if ( is_multisite() ) {
51+               remove_user_from_blog( $id, get_current_blog_id() );
52+       } else {
53+               $meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) );
54+               foreach ( $meta as $mid )
55+                       delete_metadata_by_mid( 'user', $mid );
56+
57                $wpdb->delete( $wpdb->users, array( 'ID' => $id ) );
58-       } else {
59-               $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels
60-               $wpdb->delete( $wpdb->usermeta, array( 'user_id' => $id , 'meta_key' => $level_key ) );
61        }
62 
63        clean_user_cache( $user );