Changeset 3864 for trunk/wp-admin/users.php
- Timestamp:
- 06/11/2006 05:56:56 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/users.php
r3862 r3864 20 20 $redirect = 'users.php'; 21 21 } 22 23 24 // WP_User_Search class 25 // by Mark Jaquith 26 27 28 class WP_User_Search { 29 var $results; 30 var $search_term; 31 var $page; 32 var $raw_page; 33 var $users_per_page = 50; 34 var $first_user; 35 var $last_user; 36 var $query_limit; 37 var $query_from_where; 38 var $total_users_for_query = 0; 39 var $too_many_total_users = false; 40 var $search_errors; 41 42 function WP_User_Search ($search_term = '', $page = '') { // constructor 43 $this->search_term = $search_term; 44 $this->raw_page = ( '' == $page ) ? false : (int) $page; 45 $this->page = (int) ( '' == $page ) ? 1 : $page; 46 47 $this->prepare_query(); 48 $this->query(); 49 $this->prepare_vars_for_template_usage(); 50 $this->do_paging(); 51 } 52 53 function prepare_query() { 54 global $wpdb; 55 $this->first_user = ($this->page - 1) * $this->users_per_page; 56 $this->query_limit = 'LIMIT ' . $this->first_user . ',' . $this->users_per_page; 57 if ( $this->search_term ) { 58 $searches = array(); 59 $search_sql = 'AND ('; 60 foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) 61 $searches[] = $col . " LIKE '%$this->search_term%'"; 62 $search_sql .= implode(' OR ', $searches); 63 $search_sql .= ')'; 64 } 65 $this->query_from_where = "FROM $wpdb->users WHERE 1=1 $search_sql"; 66 67 if ( !$_GET['update'] && !$this->search_term && !$this->raw_page && $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users") > $this->users_per_page ) 68 $this->too_many_total_users = sprintf(__('Because this blog has more than %s users, they cannot all be shown on one page. Use the paging or search functionality in order to find the user you want to edit.'), $this->users_per_page); 69 } 70 71 function query() { 72 global $wpdb; 73 $this->results = $wpdb->get_col('SELECT ID ' . $this->query_from_where . $this->query_limit); 74 75 if ( $this->results ) 76 $this->total_users_for_query = $wpdb->get_var('SELECT COUNT(ID) ' . $this->query_from_where); // no limit 77 else 78 $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!')); 79 } 80 81 function prepare_vars_for_template_usage() { 82 $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone 83 } 84 85 function do_paging() { 86 if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results 87 $prev_page = ( $this->page > 1) ? true : false; 88 $next_page = ( ($this->page * $this->users_per_page) < $this->total_users_for_query ) ? true : false; 89 $this->paging_text = ''; 90 if ( $prev_page ) 91 $this->paging_text .= '<p class="alignleft"><a href="' . add_query_arg(array('usersearch' => $this->search_term, 'userspage' => $this->page - 1), 'users.php?') . '">« Previous Page</a></p>'; 92 if ( $next_page ) 93 $this->paging_text .= '<p class="alignright"><a href="' . add_query_arg(array('usersearch' => $this->search_term, 'userspage' => $this->page + 1), 'users.php?') . '">Next Page »</a></p>'; 94 if ( $prev_page || $next_page ) 95 $this->paging_text .= '<br style="clear:both" />'; 96 } 97 } 98 99 function get_results() { 100 return $this->results; 101 } 102 103 function page_links() { 104 echo $this->paging_text; 105 } 106 107 function results_are_paged() { 108 if ( $this->paging_text ) 109 return true; 110 return false; 111 } 112 113 function is_search() { 114 if ( $this->search_term ) 115 return true; 116 return false; 117 } 118 } 119 22 120 23 121 switch ($action) { … … 173 271 include('admin-header.php'); 174 272 175 /* Paging and Search by Mark Jaquith, June 6th, 2006 */ 176 177 $users_per_page = 50; 178 179 $page = (int) $_GET['userspage']; 180 if ( !$page ) 181 $page = 1; 182 183 $starton = ($page - 1) * $users_per_page; 184 185 $limit = 'LIMIT ' . $starton . ',' . $users_per_page; 186 187 $search_term = $_GET['usersearch']; 188 if ( $search_term ) { 189 $searches = array(); 190 $search_sql = 'AND ('; 191 foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) 192 $searches[] = $col . " LIKE '%$search_term%'"; 193 $search_sql .= implode(' OR ', $searches); 194 $search_sql .= ')'; 195 $search_term = stripslashes($search_term); // done with DB, from now on we want slashes gone 196 } 197 198 if ( !$_GET['update'] && !$search_term && !$_GET['userspage'] && $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users") > $users_per_page ) 199 $too_many_users = sprintf(__('Because this blog has more than %s users, they cannot all be shown on one page. Use the paging or search functionality in order to find the user you want to edit.'), $users_per_page); 200 201 $from_where = "FROM $wpdb->users WHERE 1=1 $search_sql"; 202 $userids = $wpdb->get_col('SELECT ID ' . $from_where . $limit); 203 204 if ( $userids ) 205 $total_users_for_this_query = $wpdb->get_var('SELECT COUNT(ID) ' . $from_where); // no limit 206 else 207 $search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!')); 208 209 // Now for the paging 210 if ( $total_users_for_this_query > $users_per_page ) { // have to page the results 211 $prev_page = ( $page > 1) ? true : false; 212 $next_page = ( ($page * $users_per_page) < $total_users_for_this_query ) ? true : false; 213 $paging_text = ''; 214 if ( $prev_page ) 215 $paging_text .= '<p class="alignleft"><a href="' . add_query_arg(array('usersearch' => $search_term, 'userspage' => $page - 1), 'users.php?') . '">« Previous Page</a></p>'; 216 if ( $next_page ) 217 $paging_text .= '<p class="alignright"><a href="' . add_query_arg(array('usersearch' => $search_term, 'userspage' => $page + 1), 'users.php?') . '">Next Page »</a></p>'; 218 if ( $prev_page || $next_page ) 219 $paging_text .= '<br style="clear:both" />'; 220 } 221 222 // Clean up, we're done with these variables 223 unset($prev_page, $next_page, $limit, $searches, $search_sql, $col); 273 // Query the users 274 $wp_user_search = new WP_User_Search($_GET['usersearch'], $_GET['userspage']); 224 275 225 276 // Make the user objects 226 foreach ( (array) $useridsas $userid ) {277 foreach ( $wp_user_search->get_results() as $userid ) { 227 278 $tmp_user = new WP_User($userid); 228 279 $roles = $tmp_user->roles; … … 276 327 <?php endif; ?> 277 328 278 <?php if ( $ too_many_users ) : ?>329 <?php if ( $wp_user_search->too_many_total_users ) : ?> 279 330 <div id="message" class="updated"> 280 <p><?php echo $ too_many_users; ?></p>331 <p><?php echo $wp_user_search->too_many_total_users; ?></p> 281 332 </div> 282 333 <?php endif; ?> … … 284 335 <div class="wrap"> 285 336 286 <?php if ( $ search_term) : ?>287 <h2><?php printf(__('Users Matching "%s" by Role'), $ search_term); ?></h2>337 <?php if ( $wp_user_search->is_search() ) : ?> 338 <h2><?php printf(__('Users Matching "%s" by Role'), $wp_user_search->search_term); ?></h2> 288 339 <?php else : ?> 289 340 <h2><?php _e('User List by Role'); ?></h2> … … 291 342 292 343 <form action="" method="get" name="search" id="search"> 293 <p><input type="text" name="usersearch" id="usersearch" value="<?php echo wp_specialchars($ search_term); ?>" /> <input type="submit" value="<?php _e('Search for users »'); ?>" /></p>344 <p><input type="text" name="usersearch" id="usersearch" value="<?php echo wp_specialchars($wp_user_search->search_term); ?>" /> <input type="submit" value="<?php _e('Search for users »'); ?>" /></p> 294 345 </form> 295 346 296 <?php if ( is_wp_error( $ search_errors ) ) : ?>347 <?php if ( is_wp_error( $wp_user_search->search_errors ) ) : ?> 297 348 <div class="error"> 298 349 <ul> 299 350 <?php 300 foreach ( $ search_errors->get_error_messages() as $message )351 foreach ( $wp_user_search->search_errors->get_error_messages() as $message ) 301 352 echo "<li>$message</li>"; 302 353 ?> … … 306 357 307 358 308 <?php if ( $ userids) : ?>309 310 <?php if ( $ search_term) : ?>359 <?php if ( $wp_user_search->get_results() ) : ?> 360 361 <?php if ( $wp_user_search->is_search() ) : ?> 311 362 <p><a href="users.php"><?php _e('« Back to All Users'); ?></a></p> 312 363 <?php endif; ?> 313 364 314 <h3><?php printf(__('Results %1$s - %2$s of %3$s shown below'), $ starton + 1, min($starton + $users_per_page, $total_users_for_this_query), $total_users_for_this_query); ?></h3>315 316 <?php if ( $ paging_text) : ?>317 <div class="user-paging-text"><?php echo $paging_text; ?></p></div>365 <h3><?php printf(__('Results %1$s - %2$s of %3$s shown below'), $wp_user_search->first_user + 1, min($wp_user_search->first_user + $wp_user_search->users_per_page, $wp_user_search->total_users_for_query), $wp_user_search->total_users_for_query); ?></h3> 366 367 <?php if ( $wp_user_search->results_are_paged() ) : ?> 368 <div class="user-paging-text"><?php $wp_user_search->page_links(); ?></p></div> 318 369 <?php endif; ?> 319 370 … … 354 405 </table> 355 406 356 <?php if ( $ paging_text) : ?>357 <div class="user-paging-text"><?php echo $paging_text; ?></div>407 <?php if ( $wp_user_search->results_are_paged() ) : ?> 408 <div class="user-paging-text"><?php $wp_user_search->page_links(); ?></div> 358 409 <?php endif; ?> 359 410
Note: See TracChangeset
for help on using the changeset viewer.