WordPress.org

Make WordPress Core

Ticket #17009: wp_update_user.patch

File wp_update_user.patch, 1.7 KB (added by casben79, 4 years ago)

Patch for the issues.

  • user.php

     
    15421542 * @param array $userdata An array of user data. 
    15431543 * @return int The updated user's ID. 
    15441544 */ 
    1545 function wp_update_user($userdata) { 
     1545function wp_update_user( $userdata ) { 
    15461546        $ID = (int) $userdata['ID']; 
    15471547 
    15481548        // First, get all of the original fields 
    1549         $user = get_userdata($ID); 
     1549        $user = get_userdata( $ID ); 
    15501550 
    1551         // Escape data pulled from DB. 
    1552         $user = add_magic_quotes(get_object_vars($user)); 
    1553  
    1554         // If password is changing, hash it now. 
    1555         if ( ! empty($userdata['user_pass']) ) { 
    1556                 $plaintext_pass = $userdata['user_pass']; 
    1557                 $userdata['user_pass'] = wp_hash_password($userdata['user_pass']); 
     1551        // Escape data pulled from DB if any data was pulled. Otherwise make the variable an empty array to use with array_merge() later on 
     1552        if( $user ) { 
     1553                $user = add_magic_quotes( get_object_vars( $user ) ); 
     1554        } else { 
     1555                $user = array(); 
    15581556        } 
     1557         
     1558        wp_cache_delete( $user[ 'user_email' ], 'useremail' ); 
    15591559 
    1560         wp_cache_delete($user[ 'user_email' ], 'useremail'); 
    1561  
    15621560        // Merge old and new fields with new fields overwriting old ones. 
    1563         $userdata = array_merge($user, $userdata); 
    1564         $user_id = wp_insert_user($userdata); 
     1561        $userdata = array_merge( $user, $userdata ); 
     1562        $user_id = wp_insert_user( $userdata ); 
    15651563 
    15661564        // Update the cookies if the password changed. 
    15671565        $current_user = wp_get_current_user(); 
    1568         if ( $current_user->id == $ID ) { 
    1569                 if ( isset($plaintext_pass) ) { 
    1570                         wp_clear_auth_cookie(); 
    1571                         wp_set_auth_cookie($ID); 
    1572                 } 
     1566        if ( $current_user->id == $ID && ! empty( $userdata['user_pass'] ) ) { 
     1567                wp_clear_auth_cookie(); 
     1568                wp_set_auth_cookie($ID); 
    15731569        } 
    15741570 
    15751571        return $user_id;