Move WP_User_Search to admin includes. Props Viper007Bond. fixes #5111

git-svn-id: http://svn.automattic.com/wordpress/trunk@6615 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2008-01-14 21:55:17 +00:00
parent 0866e1e584
commit b7b689e35f
2 changed files with 95 additions and 96 deletions

View File

@ -281,4 +281,99 @@ function wp_revoke_user($id) {
$user->remove_all_caps();
}
// WP_User_Search class
// by Mark Jaquith
if ( !class_exists('WP_User_Search') ) :
class WP_User_Search {
var $results;
var $search_term;
var $page;
var $raw_page;
var $users_per_page = 50;
var $first_user;
var $last_user;
var $query_limit;
var $query_from_where;
var $total_users_for_query = 0;
var $too_many_total_users = false;
var $search_errors;
function WP_User_Search ($search_term = '', $page = '') { // constructor
$this->search_term = $search_term;
$this->raw_page = ( '' == $page ) ? false : (int) $page;
$this->page = (int) ( '' == $page ) ? 1 : $page;
$this->prepare_query();
$this->query();
$this->prepare_vars_for_template_usage();
$this->do_paging();
}
function prepare_query() {
global $wpdb;
$this->first_user = ($this->page - 1) * $this->users_per_page;
$this->query_limit = 'LIMIT ' . $this->first_user . ',' . $this->users_per_page;
if ( $this->search_term ) {
$searches = array();
$search_sql = 'AND (';
foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )
$searches[] = $col . " LIKE '%$this->search_term%'";
$search_sql .= implode(' OR ', $searches);
$search_sql .= ')';
}
$this->query_from_where = "FROM $wpdb->users WHERE 1=1 $search_sql";
}
function query() {
global $wpdb;
$this->results = $wpdb->get_col('SELECT ID ' . $this->query_from_where . $this->query_limit);
if ( $this->results )
$this->total_users_for_query = $wpdb->get_var('SELECT COUNT(ID) ' . $this->query_from_where); // no limit
else
$this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!'));
}
function prepare_vars_for_template_usage() {
$this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone
}
function do_paging() {
if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results
$this->paging_text = paginate_links( array(
'total' => ceil($this->total_users_for_query / $this->users_per_page),
'current' => $this->page,
'prev_text' => __('« Previous Page'),
'next_text' => __('Next Page »'),
'base' => 'users.php?%_%',
'format' => 'userspage=%#%',
'add_args' => array( 'usersearch' => urlencode($this->search_term) )
) );
}
}
function get_results() {
return (array) $this->results;
}
function page_links() {
echo $this->paging_text;
}
function results_are_paged() {
if ( $this->paging_text )
return true;
return false;
}
function is_search() {
if ( $this->search_term )
return true;
return false;
}
}
endif;
?>

View File

@ -20,102 +20,6 @@ if ( empty($_POST) ) {
$redirect = 'users.php';
}
// WP_User_Search class
// by Mark Jaquith
class WP_User_Search {
var $results;
var $search_term;
var $page;
var $raw_page;
var $users_per_page = 50;
var $first_user;
var $last_user;
var $query_limit;
var $query_from_where;
var $total_users_for_query = 0;
var $too_many_total_users = false;
var $search_errors;
function WP_User_Search ($search_term = '', $page = '') { // constructor
$this->search_term = $search_term;
$this->raw_page = ( '' == $page ) ? false : (int) $page;
$this->page = (int) ( '' == $page ) ? 1 : $page;
$this->prepare_query();
$this->query();
$this->prepare_vars_for_template_usage();
$this->do_paging();
}
function prepare_query() {
global $wpdb;
$this->first_user = ($this->page - 1) * $this->users_per_page;
$this->query_limit = 'LIMIT ' . $this->first_user . ',' . $this->users_per_page;
if ( $this->search_term ) {
$searches = array();
$search_sql = 'AND (';
foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )
$searches[] = $col . " LIKE '%$this->search_term%'";
$search_sql .= implode(' OR ', $searches);
$search_sql .= ')';
}
$this->query_from_where = "FROM $wpdb->users WHERE 1=1 $search_sql";
}
function query() {
global $wpdb;
$this->results = $wpdb->get_col('SELECT ID ' . $this->query_from_where . $this->query_limit);
if ( $this->results )
$this->total_users_for_query = $wpdb->get_var('SELECT COUNT(ID) ' . $this->query_from_where); // no limit
else
$this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!'));
}
function prepare_vars_for_template_usage() {
$this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone
}
function do_paging() {
if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results
$this->paging_text = paginate_links( array(
'total' => ceil($this->total_users_for_query / $this->users_per_page),
'current' => $this->page,
'prev_text' => __('« Previous Page'),
'next_text' => __('Next Page »'),
'base' => 'users.php?%_%',
'format' => 'userspage=%#%',
'add_args' => array( 'usersearch' => urlencode($this->search_term) )
) );
}
}
function get_results() {
return (array) $this->results;
}
function page_links() {
echo $this->paging_text;
}
function results_are_paged() {
if ( $this->paging_text )
return true;
return false;
}
function is_search() {
if ( $this->search_term )
return true;
return false;
}
}
switch ($action) {
case 'promote':