Changeset 18597 for trunk/wp-includes/capabilities.php
- Timestamp:
- 08/24/2011 07:32:59 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/wp-includes/capabilities.php (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/capabilities.php
r18515 r18597 421 421 var $filter = null; 422 422 423 /** 424 * Constructor - Sets up the object properties. 425 * 426 * Retrieves the userdata and then assigns all of the data keys to direct 427 * properties of the object. Calls {@link WP_User::_init_caps()} after 428 * setting up the object's user data properties. 429 * 430 * @since 2.0.0 431 * @access public 432 * 433 * @param int|string $id User's ID or username 434 * @param int $name Optional. User's username 423 private static $back_compat_keys = array( 424 'user_firstname' => 'first_name', 425 'user_lastname' => 'last_name', 426 'user_description' => 'description' 427 ); 428 429 /** 430 * Constructor 431 * 432 * Retrieves the userdata and passes it to {@link WP_User::init()}. 433 * 434 * @since 2.0.0 435 * @access public 436 * 437 * @param int|string $id User's ID 438 * @param string $name Optional. User's username 435 439 * @param int $blog_id Optional Blog ID, defaults to current blog. 436 440 * @return WP_User 437 441 */ 438 function __construct( $id, $name = '', $blog_id = '' ) { 439 if ( empty( $id ) && empty( $name ) ) 440 return; 441 442 function __construct( $id = 0, $name = '', $blog_id = '' ) { 442 443 if ( ! is_numeric( $id ) ) { 443 444 $name = $id; … … 445 446 } 446 447 447 if ( ! empty( $id ))448 $ this->data = get_userdata($id );448 if ( $id ) 449 $data = self::get_data_by( 'id', $id ); 449 450 else 450 $this->data = get_user_by('login', $name ); 451 452 if ( empty( $this->data->ID ) ) 453 return; 454 455 $this->ID = $this->data->ID; 451 $data = self::get_data_by( 'login', $name ); 452 453 if ( $data ) 454 $this->init( $data, $blog_id ); 455 } 456 457 /** 458 * Sets up object properties, including capabilities. 459 * 460 * @param object $data User DB row object 461 * @param int $blog_id Optional. The blog id to initialize for 462 */ 463 function init( $data, $blog_id = '' ) { 464 $this->data = $data; 465 $this->ID = (int) $data->ID; 466 456 467 $this->for_blog( $blog_id ); 468 } 469 470 /** 471 * Return only the main user fields 472 * 473 * @since 3.3.0 474 * 475 * @param string $field The field to query against: 'id', 'slug', 'email' or 'login' 476 * @param string|int $value The field value 477 */ 478 static function get_data_by( $field, $value ) { 479 global $wpdb; 480 481 if ( 'id' == $field ) 482 $value = absint( $value ); 483 else 484 $value = trim( $value ); 485 486 if ( !$value ) 487 return false; 488 489 switch ( $field ) { 490 case 'id': 491 $user_id = $value; 492 $db_field = 'ID'; 493 break; 494 case 'slug': 495 $user_id = wp_cache_get($value, 'userslugs'); 496 $db_field = 'user_nicename'; 497 break; 498 case 'email': 499 $user_id = wp_cache_get($value, 'useremail'); 500 $db_field = 'user_email'; 501 break; 502 case 'login': 503 $value = sanitize_user( $value ); 504 $user_id = wp_cache_get($value, 'userlogins'); 505 $db_field = 'user_login'; 506 break; 507 default: 508 return false; 509 } 510 511 if ( false !== $user_id ) { 512 if ( $user = wp_cache_get( $user_id, 'users' ) ) 513 return $user; 514 } 515 516 if ( !$user = $wpdb->get_row( $wpdb->prepare( 517 "SELECT * FROM $wpdb->users WHERE $db_field = %s", $value 518 ) ) ) 519 return false; 520 521 update_user_caches( $user ); 522 523 return $user; 457 524 } 458 525 … … 467 534 $key = 'ID'; 468 535 } 469 return isset( $this->data->$key ); 536 537 if ( isset( $this->data->$key ) ) 538 return true; 539 540 if ( isset( self::$back_compat_keys[ $key ] ) ) 541 $key = self::$back_compat_keys[ $key ]; 542 543 return metadata_exists( 'user', $this->ID, $key ); 470 544 } 471 545 … … 481 555 } 482 556 483 return $this->data->$key; 557 if ( isset( $this->data->$key ) ) { 558 $value = $this->data->$key; 559 } else { 560 if ( isset( self::$back_compat_keys[ $key ] ) ) 561 $key = self::$back_compat_keys[ $key ]; 562 $value = get_user_meta( $this->ID, $key, true ); 563 } 564 565 if ( $this->filter ) { 566 $value = sanitize_user_field( $key, $value, $this->ID, $this->filter ); 567 } 568 569 return $value; 484 570 } 485 571 … … 500 586 501 587 /** 588 * Retrieve the value of a property or meta key. 589 * 590 * Retrieves from the users and usermeta table. 591 * 592 * @since 3.3.0 593 * 594 * @param string $key Property 595 */ 596 function get( $key ) { 597 return $this->__get( $key ); 598 } 599 600 /** 601 * Determine whether a property or meta key is set 602 * 603 * Consults the users and usermeta tables. 604 * 605 * @since 3.3.0 606 * 607 * @param string $key Property 608 */ 609 function has_prop( $key ) { 610 return $this->__isset( $key ); 611 } 612 613 /** 502 614 * Set up capability object properties. 503 615 * … … 520 632 $this->cap_key = $cap_key; 521 633 522 $this->caps = &$this->data->{$this->cap_key}; 634 $this->caps = get_user_meta( $this->ID, $this->cap_key, true ); 635 523 636 if ( ! is_array( $this->caps ) ) 524 637 $this->caps = array(); … … 663 776 function update_user_level_from_caps() { 664 777 global $wpdb; 665 $this->user_level = array_reduce( array_keys( $this->allcaps ), array( &$this, 'level_reduction' ), 0 );778 $this->user_level = array_reduce( array_keys( $this->allcaps ), array( $this, 'level_reduction' ), 0 ); 666 779 update_user_meta( $this->ID, $wpdb->prefix . 'user_level', $this->user_level ); 667 780 } … … 1067 1180 $args = array_merge( array( $capability ), $args ); 1068 1181 1069 return call_user_func_array( array( &$current_user, 'has_cap' ), $args );1182 return call_user_func_array( array( $current_user, 'has_cap' ), $args ); 1070 1183 } 1071 1184
Note: See TracChangeset
for help on using the changeset viewer.