Make WordPress Core

Changeset 13326


Ignore:
Timestamp:
02/23/2010 09:15:47 AM (15 years ago)
Author:
nacin
Message:

Ensure we're back compat with return values and actions in deprecated *_usermeta() family. See #10837

Location:
trunk/wp-includes
Files:
2 edited

Legend:

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

    r13300 r13326  
    22822282function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) {
    22832283    _deprecated_function( __FUNCTION__, '3.0', 'delete_user_meta()' );
    2284     return delete_user_meta( $user_id, $meta_key, $meta_value );
     2284    global $wpdb;
     2285    if ( !is_numeric( $user_id ) )
     2286        return false;
     2287    $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
     2288
     2289    if ( is_array($meta_value) || is_object($meta_value) )
     2290        $meta_value = serialize($meta_value);
     2291    $meta_value = trim( $meta_value );
     2292
     2293    $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     2294
     2295    if ( $cur && $cur->umeta_id )
     2296        do_action( 'delete_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     2297
     2298    if ( ! empty($meta_value) )
     2299        $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $meta_value) );
     2300    else
     2301        $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     2302
     2303    wp_cache_delete($user_id, 'users');
     2304
     2305    if ( $cur && $cur->umeta_id )
     2306        do_action( 'deleted_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     2307
     2308    return true;
    22852309}
    22862310
     
    23022326 * @return mixed
    23032327 */
    2304 function get_usermeta( $user_id, $meta_key = '') {
     2328function get_usermeta( $user_id, $meta_key = '' ) {
    23052329    _deprecated_function( __FUNCTION__, '3.0', 'get_user_meta()' );
    2306     return get_user_meta( $user_id, $meta_key, false );
     2330    global $wpdb;
     2331    $user_id = (int) $user_id;
     2332
     2333    if ( !$user_id )
     2334        return false;
     2335
     2336    if ( !empty($meta_key) ) {
     2337        $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
     2338        $user = wp_cache_get($user_id, 'users');
     2339        // Check the cached user object
     2340        if ( false !== $user && isset($user->$meta_key) )
     2341            $metas = array($user->$meta_key);
     2342        else
     2343            $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     2344    } else {
     2345        $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) );
     2346    }
     2347
     2348    if ( empty($metas) ) {
     2349        if ( empty($meta_key) )
     2350            return array();
     2351        else
     2352            return '';
     2353    }
     2354
     2355    $metas = array_map('maybe_unserialize', $metas);
     2356
     2357    if ( count($metas) == 1 )
     2358        return $metas[0];
     2359    else
     2360        return $metas;
    23072361}
    23082362
     
    23282382function update_usermeta( $user_id, $meta_key, $meta_value ) {
    23292383    _deprecated_function( __FUNCTION__, '3.0', 'update_user_meta()' );
    2330     return update_user_meta( $user_id, $meta_key, $meta_value );
    2331 }
     2384    global $wpdb;
     2385    if ( !is_numeric( $user_id ) )
     2386        return false;
     2387    $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
     2388
     2389    /** @todo Might need fix because usermeta data is assumed to be already escaped */
     2390    if ( is_string($meta_value) )
     2391        $meta_value = stripslashes($meta_value);
     2392    $meta_value = maybe_serialize($meta_value);
     2393
     2394    if (empty($meta_value)) {
     2395        return delete_usermeta($user_id, $meta_key);
     2396    }
     2397
     2398    $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     2399
     2400    if ( $cur )
     2401        do_action( 'update_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     2402
     2403    if ( !$cur )
     2404        $wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') );
     2405    else if ( $cur->meta_value != $meta_value )
     2406        $wpdb->update($wpdb->usermeta, compact('meta_value'), compact('user_id', 'meta_key') );
     2407    else
     2408        return false;
     2409
     2410    wp_cache_delete($user_id, 'users');
     2411
     2412    if ( !$cur )
     2413        do_action( 'added_usermeta', $wpdb->insert_id, $user_id, $meta_key, $meta_value );
     2414    else
     2415        do_action( 'updated_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     2416
     2417    return true;
     2418}
  • trunk/wp-includes/meta.php

    r12859 r13326  
    207207
    208208    if ( isset($meta_cache[$meta_key]) ) {
    209         if ( $single ) {
     209        if ( $single )
    210210            return maybe_unserialize( $meta_cache[$meta_key][0] );
    211         } else {
     211        else
    212212            return array_map('maybe_unserialize', $meta_cache[$meta_key]);
    213         }
    214213    }
    215214
Note: See TracChangeset for help on using the changeset viewer.