WordPress.org

Make WordPress Core

Ticket #5392: get_user.2.diff

File get_user.2.diff, 5.8 KB (added by ryan, 11 years ago)
  • wp-includes/pluggable.php

     
    6060if ( !function_exists('get_userdata') ) :
    6161function get_userdata( $user_id ) {
    6262        global $wpdb;
     63
    6364        $user_id = abs(intval($user_id));
    6465        if ( $user_id == 0 )
    6566                return false;
    6667
    6768        $user = wp_cache_get($user_id, 'users');
    6869
    69         if ( $user )
     70        if ( '0' === $user )
     71                return false;
     72        else if ( $user )
    7073                return $user;
    7174
    72         if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE ID = %d LIMIT 1", $user_id)) )
     75        if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE ID = %d LIMIT 1", $user_id)) ) {
     76                wp_cache_add($user_id, 0, 'users');
    7377                return false;
     78        }
    7479
    75         $wpdb->hide_errors();
    76         $metavalues = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id));
    77         $wpdb->show_errors();
     80        _fill_user($user);
    7881
    79         if ($metavalues) {
    80                 foreach ( $metavalues as $meta ) {
    81                         $value = maybe_unserialize($meta->meta_value);
    82                         $user->{$meta->meta_key} = $value;
    83 
    84                         // We need to set user_level from meta, not row
    85                         if ( $wpdb->prefix . 'user_level' == $meta->meta_key )
    86                                 $user->user_level = $meta->meta_value;
    87                 } // end foreach
    88         } //end if
    89 
    90         // For backwards compat.
    91         if ( isset($user->first_name) )
    92                 $user->user_firstname = $user->first_name;
    93         if ( isset($user->last_name) )
    94                 $user->user_lastname = $user->last_name;
    95         if ( isset($user->description) )
    96                 $user->user_description = $user->description;
    97 
    98         wp_cache_add($user_id, $user, 'users');
    99         wp_cache_add($user->user_login, $user_id, 'userlogins');
    10082        return $user;
    10183}
    10284endif;
     
    11698                return false;
    11799
    118100        $user_id = wp_cache_get($user_login, 'userlogins');
    119         $userdata = wp_cache_get($user_id, 'users');
     101        if ( '0' === $user_id )
     102                return false;
    120103
    121         if ( $userdata )
    122                 return $userdata;
     104        $user = false;
     105        if ( false !== $user_id )
     106                $user = wp_cache_get($user_id, 'users');
    123107
    124         if ( !$user_ID = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_login = %s", $user_login)) )
     108        if ( false !== $user )
     109                return $user;
     110
     111        if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_login = %s", $user_login)) ) {
     112                wp_cache_add($user_login, 0, 'userlogins');
    125113                return false;
     114        }
    126115
    127         $user = get_userdata($user_ID);
     116        _fill_user($user);
     117
    128118        return $user;
    129119}
    130120endif;
    131121
     122if ( !function_exists('get_user_by_email') ) :
     123function get_user_by_email($email) {
     124        global $wpdb;
     125
     126        $user_id = wp_cache_get($email, 'useremail');
     127
     128        if ( '0' === $user_id )
     129                return false;
     130
     131        $user = false;
     132        if ( false !== $user_id )
     133                $user = wp_cache_get($user_id, 'users');
     134
     135        if ( false !== $user )
     136                return $user;
     137
     138        if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_email = %s", $email)) ) {
     139                wp_cache_add($email, 0, 'useremail');
     140                return false;
     141        }
     142
     143        _fill_user($user);
     144
     145        return $user;
     146}
     147endif;
     148
    132149if ( !function_exists( 'wp_mail' ) ) :
    133150function wp_mail( $to, $subject, $message, $headers = '' ) {
    134151        // Compact the input, apply the filters, and extract them back out
  • wp-includes/registration.php

     
    66 * @return mixed The user's ID on success, and null on failure.
    77 */
    88function username_exists( $username ) {
    9         if ( $user = get_userdatabylogin( sanitize_user( $username ) ) ) {
     9        if ( $user = get_userdatabylogin( $username ) ) {
    1010                return $user->ID;
    1111        } else {
    1212                return null;
     
    2020 * @return mixed The user's ID on success, and false on failure.
    2121 */
    2222function email_exists( $email ) {
    23         global $wpdb;
    24         return $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_email = %s", $email) );
     23        if ( $user = get_user_by_email($email) )
     24                return $user->ID;
     25
     26        return false;
    2527}
    2628
    2729/**
  • wp-includes/user.php

     
    7878
    7979        $user = get_userdata($user_id);
    8080        wp_cache_delete($user_id, 'users');
    81         wp_cache_delete($user->user_login, 'userlogins');
    8281
    8382        return true;
    8483}
     
    142141
    143142        $user = get_userdata($user_id);
    144143        wp_cache_delete($user_id, 'users');
    145         wp_cache_delete($user->user_login, 'userlogins');
    146144
    147145        return true;
    148146}
     
    238236        return $output;
    239237}
    240238
     239function _fill_user( &$user ) {
     240        global $wpdb;
     241
     242        $wpdb->hide_errors();
     243        $metavalues = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user->ID));
     244        $wpdb->show_errors();
     245
     246        if ( $metavalues ) {
     247                foreach ( $metavalues as $meta ) {
     248                        $value = maybe_unserialize($meta->meta_value);
     249                        $user->{$meta->meta_key} = $value;
     250                }
     251        }
     252
     253        $level = $wpdb->prefix . 'user_level';
     254        if ( isset( $user->{$level} ) )
     255                $user->user_level = $user->{$level};
     256
     257        // For backwards compat.
     258        if ( isset($user->first_name) )
     259                $user->user_firstname = $user->first_name;
     260        if ( isset($user->last_name) )
     261                $user->user_lastname = $user->last_name;
     262        if ( isset($user->description) )
     263                $user->user_description = $user->description;
     264
     265        wp_cache_add($user->ID, $user, 'users');
     266        wp_cache_add($user->user_login, $user->ID, 'userlogins');
     267        wp_cache_add($user->user_email, $user->ID, 'useremail');
     268}
     269
    241270?>
  • wp-admin/includes/user.php

     
    272272
    273273        wp_cache_delete($id, 'users');
    274274        wp_cache_delete($user->user_login, 'userlogins');
     275        wp_cache_delete($user->user_email, 'useremail');
    275276
    276277        return true;
    277278}