Changeset 15491 for trunk/wp-admin/includes/user.php
- Timestamp:
- 08/11/2010 09:54:51 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/wp-admin/includes/user.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/user.php
r15315 r15491 483 483 } 484 484 485 if ( !class_exists('WP_User_Search') ) :486 /**487 * WordPress User Search class.488 *489 * @since unknown490 */491 class WP_User_Search {492 493 /**494 * {@internal Missing Description}}495 *496 * @since unknown497 * @access private498 * @var unknown_type499 */500 var $results;501 502 /**503 * {@internal Missing Description}}504 *505 * @since unknown506 * @access private507 * @var unknown_type508 */509 var $search_term;510 511 /**512 * Page number.513 *514 * @since unknown515 * @access private516 * @var int517 */518 var $page;519 520 /**521 * Role name that users have.522 *523 * @since unknown524 * @access private525 * @var string526 */527 var $role;528 529 /**530 * Raw page number.531 *532 * @since unknown533 * @access private534 * @var int|bool535 */536 var $raw_page;537 538 /**539 * Amount of users to display per page.540 *541 * @since unknown542 * @access public543 * @var int544 */545 var $users_per_page = 50;546 547 /**548 * {@internal Missing Description}}549 *550 * @since unknown551 * @access private552 * @var unknown_type553 */554 var $first_user;555 556 /**557 * {@internal Missing Description}}558 *559 * @since unknown560 * @access private561 * @var int562 */563 var $last_user;564 565 /**566 * {@internal Missing Description}}567 *568 * @since unknown569 * @access private570 * @var string571 */572 var $query_limit;573 574 /**575 * {@internal Missing Description}}576 *577 * @since 3.0.0578 * @access private579 * @var string580 */581 var $query_orderby;582 583 /**584 * {@internal Missing Description}}585 *586 * @since 3.0.0587 * @access private588 * @var string589 */590 var $query_from;591 592 /**593 * {@internal Missing Description}}594 *595 * @since 3.0.0596 * @access private597 * @var string598 */599 var $query_where;600 601 /**602 * {@internal Missing Description}}603 *604 * @since unknown605 * @access private606 * @var int607 */608 var $total_users_for_query = 0;609 610 /**611 * {@internal Missing Description}}612 *613 * @since unknown614 * @access private615 * @var bool616 */617 var $too_many_total_users = false;618 619 /**620 * {@internal Missing Description}}621 *622 * @since unknown623 * @access private624 * @var unknown_type625 */626 var $search_errors;627 628 /**629 * {@internal Missing Description}}630 *631 * @since unknown632 * @access private633 * @var unknown_type634 */635 var $paging_text;636 637 /**638 * PHP4 Constructor - Sets up the object properties.639 *640 * @since unknown641 *642 * @param string $search_term Search terms string.643 * @param int $page Optional. Page ID.644 * @param string $role Role name.645 * @return WP_User_Search646 */647 function WP_User_Search ($search_term = '', $page = '', $role = '') {648 $this->search_term = $search_term;649 $this->raw_page = ( '' == $page ) ? false : (int) $page;650 $this->page = (int) ( '' == $page ) ? 1 : $page;651 $this->role = $role;652 653 $this->prepare_query();654 $this->query();655 $this->prepare_vars_for_template_usage();656 $this->do_paging();657 }658 659 /**660 * {@internal Missing Short Description}}661 *662 * {@internal Missing Long Description}}663 *664 * @since unknown665 * @access public666 */667 function prepare_query() {668 global $wpdb;669 $this->first_user = ($this->page - 1) * $this->users_per_page;670 671 $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page);672 $this->query_orderby = ' ORDER BY user_login';673 674 $search_sql = '';675 if ( $this->search_term ) {676 $searches = array();677 $search_sql = 'AND (';678 foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )679 $searches[] = $col . " LIKE '%$this->search_term%'";680 $search_sql .= implode(' OR ', $searches);681 $search_sql .= ')';682 }683 684 $this->query_from = " FROM $wpdb->users";685 $this->query_where = " WHERE 1=1 $search_sql";686 687 if ( $this->role ) {688 $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id";689 $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%');690 } elseif ( is_multisite() ) {691 $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels692 $this->query_from .= ", $wpdb->usermeta";693 $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'";694 }695 696 do_action_ref_array( 'pre_user_search', array( &$this ) );697 }698 699 /**700 * {@internal Missing Short Description}}701 *702 * {@internal Missing Long Description}}703 *704 * @since unknown705 * @access public706 */707 function query() {708 global $wpdb;709 710 $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit);711 712 if ( $this->results )713 $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit714 else715 $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!'));716 }717 718 /**719 * {@internal Missing Short Description}}720 *721 * {@internal Missing Long Description}}722 *723 * @since unknown724 * @access public725 */726 function prepare_vars_for_template_usage() {727 $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone728 }729 730 /**731 * {@internal Missing Short Description}}732 *733 * {@internal Missing Long Description}}734 *735 * @since unknown736 * @access public737 */738 function do_paging() {739 if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results740 $args = array();741 if( ! empty($this->search_term) )742 $args['usersearch'] = urlencode($this->search_term);743 if( ! empty($this->role) )744 $args['role'] = urlencode($this->role);745 746 $this->paging_text = paginate_links( array(747 'total' => ceil($this->total_users_for_query / $this->users_per_page),748 'current' => $this->page,749 'base' => 'users.php?%_%',750 'format' => 'userspage=%#%',751 'add_args' => $args752 ) );753 if ( $this->paging_text ) {754 $this->paging_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s–%s of %s' ) . '</span>%s',755 number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ),756 number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ),757 number_format_i18n( $this->total_users_for_query ),758 $this->paging_text759 );760 }761 }762 }763 764 /**765 * {@internal Missing Short Description}}766 *767 * {@internal Missing Long Description}}768 *769 * @since unknown770 * @access public771 *772 * @return unknown773 */774 function get_results() {775 return (array) $this->results;776 }777 778 /**779 * Displaying paging text.780 *781 * @see do_paging() Builds paging text.782 *783 * @since unknown784 * @access public785 */786 function page_links() {787 echo $this->paging_text;788 }789 790 /**791 * Whether paging is enabled.792 *793 * @see do_paging() Builds paging text.794 *795 * @since unknown796 * @access public797 *798 * @return bool799 */800 function results_are_paged() {801 if ( $this->paging_text )802 return true;803 return false;804 }805 806 /**807 * Whether there are search terms.808 *809 * @since unknown810 * @access public811 *812 * @return bool813 */814 function is_search() {815 if ( $this->search_term )816 return true;817 return false;818 }819 }820 endif;821 822 485 add_action('admin_init', 'default_password_nag_handler'); 823 486 function default_password_nag_handler($errors = false) {
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)