WordPress.org

Make WordPress Core

Changeset 15748


Ignore:
Timestamp:
10/07/2010 08:13:11 PM (8 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.