Make WordPress Core


Ignore:
Timestamp:
04/17/2009 09:25:11 PM (15 years ago)
Author:
ryan
Message:

Cache user lookups made by nicename. Add get_user_by(). fixes #4170

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/pluggable.php

    r10967 r10992  
    140140endif;
    141141
     142/**
     143 * Retrieve user info by a given field
     144 *
     145 * @since 2.8.0
     146 *
     147 * @param string $field The field to retrieve the user with.  id | slug | email | login
     148 * @param int|string $value A value for $field.  A user ID, slug, email address, or login name.
     149 * @return bool|object False on failure, User DB row object
     150 */
     151function get_user_by($field, $value) {
     152    global $wpdb;
     153
     154    switch ($field) {
     155        case 'id':
     156            return get_userdata($value);
     157            break;
     158        case 'slug':
     159            $user_id = wp_cache_get($value, 'userslugs');
     160            $field = 'user_nicename';
     161            break;
     162        case 'email':
     163            $user_id = wp_cache_get($value, 'useremail');
     164            $field = 'user_email';
     165            break;
     166        case 'login':
     167            $value = sanitize_user( $value );
     168            $user_id = wp_cache_get($value, 'userlogins');
     169            $field = 'user_login';
     170            break;
     171        default:
     172            return false;
     173    }
     174
     175     if ( false !== $user_id )
     176        return get_userdata($user_id);
     177
     178    if ( !$user = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->users WHERE $field = %s", $value) ) )
     179        return false;
     180
     181    _fill_user($user);
     182
     183    return $user;
     184}
     185
    142186if ( !function_exists('get_userdatabylogin') ) :
    143187/**
     
    150194 */
    151195function get_userdatabylogin($user_login) {
    152     global $wpdb;
    153     $user_login = sanitize_user( $user_login );
    154 
    155     if ( empty( $user_login ) )
    156         return false;
    157 
    158     $user_id = wp_cache_get($user_login, 'userlogins');
    159 
    160     $user = false;
    161     if ( false !== $user_id )
    162         $user = wp_cache_get($user_id, 'users');
    163 
    164     if ( false !== $user )
    165         return $user;
    166 
    167     if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_login = %s", $user_login)) )
    168         return false;
    169 
    170     _fill_user($user);
    171 
    172     return $user;
     196    return get_user_by('login', $user_login);
    173197}
    174198endif;
     
    184208 */
    185209function get_user_by_email($email) {
    186     global $wpdb;
    187 
    188     $user_id = wp_cache_get($email, 'useremail');
    189 
    190     $user = false;
    191     if ( false !== $user_id )
    192         $user = wp_cache_get($user_id, 'users');
    193 
    194     if ( false !== $user )
    195         return $user;
    196 
    197     if ( !$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_email = %s", $email)) )
    198         return false;
    199 
    200     _fill_user($user);
    201 
    202     return $user;
     210    return get_user_by('email', $email);
    203211}
    204212endif;
Note: See TracChangeset for help on using the changeset viewer.