| | 370 | * Add meta data field to metadata of user |
| | 371 | * |
| | 372 | * @param int $user_id User ID |
| | 373 | * @param string $meta_key Metadata key. |
| | 374 | * @param mixed $meta_value Metadata value. |
| | 375 | * @param bool $unique Optional, default is false. Whether the same key should not be added. |
| | 376 | * @return bool True on successful update, false on failure. |
| | 377 | */ |
| | 378 | function add_usermeta( $user_id, $meta_key, $meta_value, $unique = false) { |
| | 379 | global $wpdb; |
| | 380 | if ( !is_numeric( $user_id ) ) |
| | 381 | return false; |
| | 382 | $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); |
| | 383 | |
| | 384 | /** @todo Might need fix because usermeta data is assumed to be already escaped */ |
| | 385 | if ( is_string($meta_value) ) |
| | 386 | $meta_value = stripslashes($meta_value); |
| | 387 | $meta_value = maybe_serialize($meta_value); |
| | 388 | |
| | 389 | if ( $unique && $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->usermeta WHERE meta_key = %s AND user_id = %d", $meta_key, $user_id ) ) ) |
| | 390 | return false; |
| | 391 | |
| | 392 | $meta_value = maybe_serialize( stripslashes_deep($meta_value) ); |
| | 393 | |
| | 394 | $wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') ); |
| | 395 | |
| | 396 | wp_cache_delete($user_id, 'users'); |
| | 397 | |
| | 398 | return true; |
| | 399 | } |
| | 400 | |
| | 401 | /** |
| 401 | | $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) ); |
| 402 | | if ( !$cur ) |
| 403 | | $wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') ); |
| 404 | | else if ( $cur->meta_value != $meta_value ) |
| 405 | | $wpdb->update($wpdb->usermeta, compact('meta_value'), compact('user_id', 'meta_key') ); |
| 406 | | else |
| 407 | | return false; |
| | 434 | if ( !empty( $prev_value ) ) { |
| | 435 | $prev_value = maybe_serialize($prev_value); |
| | 436 | $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $prev_value ) ); |
| | 437 | if ( !$cur ) |
| | 438 | return false; |
| | 439 | else if ( $cur->meta_value != $meta_value ) |
| | 440 | $wpdb->update($wpdb->usermeta, compact('meta_value'), array('user_id'=>$user_id, 'meta_key'=>$meta_key, 'meta_value'=>$prev_value) ); |
| | 441 | else |
| | 442 | return false; |
| | 443 | } else { |
| | 444 | $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) ); |
| | 445 | if ( !$cur ) |
| | 446 | $wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') ); |
| | 447 | else if ( $cur->meta_value != $meta_value ) |
| | 448 | $wpdb->update($wpdb->usermeta, compact('meta_value'), compact('user_id', 'meta_key') ); |
| | 449 | else |
| | 450 | return false; |
| | 451 | } |