+if ( empty($_POST) ) {
+ $referer = '<input type="hidden" name="wp_http_referer" value="'. attribute_escape(stripslashes($_SERVER['REQUEST_URI'])) . '" />';
+} elseif ( isset($_POST['wp_http_referer']) ) {
+ $redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_POST['wp_http_referer']));
+ $referer = '<input type="hidden" name="wp_http_referer" value="' . attribute_escape($redirect) . '" />';
+} else {
+ $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;
+ }
+}
+
+