WordPress.org

Make WordPress Core

Changeset 15748


Ignore:
Timestamp:
10/07/10 20:13:11 (4 years ago)
Author:
scribu
Message:

Revive WP_User_Search as deprecated. See #14579

File:
1 edited

Legend:

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

    r15653 r15748  
    289289} 
    290290 
     291if ( !class_exists('WP_User_Search') ) : 
     292/** 
     293 * WordPress User Search class. 
     294 * 
     295 * @since 2.1 
     296 * @deprecated 3.1.0 
     297 */ 
     298class WP_User_Search { 
     299 
     300    /** 
     301     * {@internal Missing Description}} 
     302     * 
     303     * @since unknown 
     304     * @access private 
     305     * @var unknown_type 
     306     */ 
     307    var $results; 
     308 
     309    /** 
     310     * {@internal Missing Description}} 
     311     * 
     312     * @since unknown 
     313     * @access private 
     314     * @var unknown_type 
     315     */ 
     316    var $search_term; 
     317 
     318    /** 
     319     * Page number. 
     320     * 
     321     * @since unknown 
     322     * @access private 
     323     * @var int 
     324     */ 
     325    var $page; 
     326 
     327    /** 
     328     * Role name that users have. 
     329     * 
     330     * @since unknown 
     331     * @access private 
     332     * @var string 
     333     */ 
     334    var $role; 
     335 
     336    /** 
     337     * Raw page number. 
     338     * 
     339     * @since unknown 
     340     * @access private 
     341     * @var int|bool 
     342     */ 
     343    var $raw_page; 
     344 
     345    /** 
     346     * Amount of users to display per page. 
     347     * 
     348     * @since unknown 
     349     * @access public 
     350     * @var int 
     351     */ 
     352    var $users_per_page = 50; 
     353 
     354    /** 
     355     * {@internal Missing Description}} 
     356     * 
     357     * @since unknown 
     358     * @access private 
     359     * @var unknown_type 
     360     */ 
     361    var $first_user; 
     362 
     363    /** 
     364     * {@internal Missing Description}} 
     365     * 
     366     * @since unknown 
     367     * @access private 
     368     * @var int 
     369     */ 
     370    var $last_user; 
     371 
     372    /** 
     373     * {@internal Missing Description}} 
     374     * 
     375     * @since unknown 
     376     * @access private 
     377     * @var string 
     378     */ 
     379    var $query_limit; 
     380 
     381    /** 
     382     * {@internal Missing Description}} 
     383     * 
     384     * @since 3.0.0 
     385     * @access private 
     386     * @var string 
     387     */ 
     388    var $query_orderby; 
     389 
     390    /** 
     391     * {@internal Missing Description}} 
     392     * 
     393     * @since 3.0.0 
     394     * @access private 
     395     * @var string 
     396     */ 
     397    var $query_from; 
     398 
     399    /** 
     400     * {@internal Missing Description}} 
     401     * 
     402     * @since 3.0.0 
     403     * @access private 
     404     * @var string 
     405     */ 
     406    var $query_where; 
     407 
     408    /** 
     409     * {@internal Missing Description}} 
     410     * 
     411     * @since unknown 
     412     * @access private 
     413     * @var int 
     414     */ 
     415    var $total_users_for_query = 0; 
     416 
     417    /** 
     418     * {@internal Missing Description}} 
     419     * 
     420     * @since unknown 
     421     * @access private 
     422     * @var bool 
     423     */ 
     424    var $too_many_total_users = false; 
     425 
     426    /** 
     427     * {@internal Missing Description}} 
     428     * 
     429     * @since unknown 
     430     * @access private 
     431     * @var unknown_type 
     432     */ 
     433    var $search_errors; 
     434 
     435    /** 
     436     * {@internal Missing Description}} 
     437     * 
     438     * @since unknown 
     439     * @access private 
     440     * @var unknown_type 
     441     */ 
     442    var $paging_text; 
     443 
     444    /** 
     445     * PHP4 Constructor - Sets up the object properties. 
     446     * 
     447     * @since unknown 
     448     * 
     449     * @param string $search_term Search terms string. 
     450     * @param int $page Optional. Page ID. 
     451     * @param string $role Role name. 
     452     * @return WP_User_Search 
     453     */ 
     454    function WP_User_Search ($search_term = '', $page = '', $role = '') { 
     455        _deprecated_function( __FUNCTION__, '3.1', 'WP_User_Query' ); 
     456 
     457        $this->search_term = $search_term; 
     458        $this->raw_page = ( '' == $page ) ? false : (int) $page; 
     459        $this->page = (int) ( '' == $page ) ? 1 : $page; 
     460        $this->role = $role; 
     461 
     462        $this->prepare_query(); 
     463        $this->query(); 
     464        $this->prepare_vars_for_template_usage(); 
     465        $this->do_paging(); 
     466    } 
     467 
     468    /** 
     469     * {@internal Missing Short Description}} 
     470     * 
     471     * {@internal Missing Long Description}} 
     472     * 
     473     * @since unknown 
     474     * @access public 
     475     */ 
     476    function prepare_query() { 
     477        global $wpdb; 
     478        $this->first_user = ($this->page - 1) * $this->users_per_page; 
     479 
     480        $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page); 
     481        $this->query_orderby = ' ORDER BY user_login'; 
     482 
     483        $search_sql = ''; 
     484        if ( $this->search_term ) { 
     485            $searches = array(); 
     486            $search_sql = 'AND ('; 
     487            foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) 
     488                $searches[] = $col . " LIKE '%$this->search_term%'"; 
     489            $search_sql .= implode(' OR ', $searches); 
     490            $search_sql .= ')'; 
     491        } 
     492 
     493        $this->query_from = " FROM $wpdb->users"; 
     494        $this->query_where = " WHERE 1=1 $search_sql"; 
     495 
     496        if ( $this->role ) { 
     497            $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; 
     498            $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); 
     499        } elseif ( is_multisite() ) { 
     500            $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels 
     501            $this->query_from .= ", $wpdb->usermeta"; 
     502            $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; 
     503        } 
     504 
     505        do_action_ref_array( 'pre_user_search', array( &$this ) ); 
     506    } 
     507 
     508    /** 
     509     * {@internal Missing Short Description}} 
     510     * 
     511     * {@internal Missing Long Description}} 
     512     * 
     513     * @since unknown 
     514     * @access public 
     515     */ 
     516    function query() { 
     517        global $wpdb; 
     518 
     519        $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit); 
     520 
     521        if ( $this->results ) 
     522            $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit 
     523        else 
     524            $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!')); 
     525    } 
     526 
     527    /** 
     528     * {@internal Missing Short Description}} 
     529     * 
     530     * {@internal Missing Long Description}} 
     531     * 
     532     * @since unknown 
     533     * @access public 
     534     */ 
     535    function prepare_vars_for_template_usage() { 
     536        $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone 
     537    } 
     538 
     539    /** 
     540     * {@internal Missing Short Description}} 
     541     * 
     542     * {@internal Missing Long Description}} 
     543     * 
     544     * @since unknown 
     545     * @access public 
     546     */ 
     547    function do_paging() { 
     548        if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results 
     549            $args = array(); 
     550            if( ! empty($this->search_term) ) 
     551                $args['usersearch'] = urlencode($this->search_term); 
     552            if( ! empty($this->role) ) 
     553                $args['role'] = urlencode($this->role); 
     554 
     555            $this->paging_text = paginate_links( array( 
     556                'total' => ceil($this->total_users_for_query / $this->users_per_page), 
     557                'current' => $this->page, 
     558                'base' => 'users.php?%_%', 
     559                'format' => 'userspage=%#%', 
     560                'add_args' => $args 
     561            ) ); 
     562            if ( $this->paging_text ) { 
     563                $this->paging_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s&#8211;%s of %s' ) . '</span>%s', 
     564                    number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ), 
     565                    number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ), 
     566                    number_format_i18n( $this->total_users_for_query ), 
     567                    $this->paging_text 
     568                ); 
     569            } 
     570        } 
     571    } 
     572 
     573    /** 
     574     * {@internal Missing Short Description}} 
     575     * 
     576     * {@internal Missing Long Description}} 
     577     * 
     578     * @since unknown 
     579     * @access public 
     580     * 
     581     * @return unknown 
     582     */ 
     583    function get_results() { 
     584        return (array) $this->results; 
     585    } 
     586 
     587    /** 
     588     * Displaying paging text. 
     589     * 
     590     * @see do_paging() Builds paging text. 
     591     * 
     592     * @since unknown 
     593     * @access public 
     594     */ 
     595    function page_links() { 
     596        echo $this->paging_text; 
     597    } 
     598 
     599    /** 
     600     * Whether paging is enabled. 
     601     * 
     602     * @see do_paging() Builds paging text. 
     603     * 
     604     * @since unknown 
     605     * @access public 
     606     * 
     607     * @return bool 
     608     */ 
     609    function results_are_paged() { 
     610        if ( $this->paging_text ) 
     611            return true; 
     612        return false; 
     613    } 
     614 
     615    /** 
     616     * Whether there are search terms. 
     617     * 
     618     * @since unknown 
     619     * @access public 
     620     * 
     621     * @return bool 
     622     */ 
     623    function is_search() { 
     624        if ( $this->search_term ) 
     625            return true; 
     626        return false; 
     627    } 
     628} 
     629endif; 
     630 
    291631/** 
    292632 * Retrieve editable posts from other users. 
Note: See TracChangeset for help on using the changeset viewer.