Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global $wpdb;
- $show = (isset($_GET['show'])) ? $_GET['show'] : 'all';
- $sort_by = (isset($_GET['sort'])) ? $_GET['sort'] : 'login';
- $sort_order = (isset($_GET['order'])) ? $_GET['order'] : 'ASC';
- $num_posts = (isset($_GET['num'])) ? $_GET['num'] : 20;
- $user = (isset($_POST['user'])) ? $_POST['user'] : 'all';
- $paged = (isset($_GET['paged'])) ? $_GET['paged'] : 1;
- // If a specific user, reset all other params to defaults (only 1 record to show).
- if ($user != 'all') {
- $show = 'all';
- $sort_by = 'login';
- $sort_order = 'ASC';
- $paged = 1;
- }
- $user_clause = ($user == 'all') ? "" : "AND a.ID = " . $user;
- $role_clause = ($show == 'all') ? "" : "AND b.meta_key = 'aa_capabilities' AND b.meta_value LIKE '%" . $show . "%'";
- switch ($sort_by) {
- case 'login':
- $sort_clause = "ORDER BY LOWER(a.user_login) " . $sort_order;
- break;
- case 'email':
- $sort_clause = "ORDER BY LOWER(a.user_email) " . $sort_order;
- break;
- case 'display_name':
- $sort_clause = "ORDER BY LOWER(a.display_name) " . $sort_order;
- break;
- case 'balance':
- $sort_clause = "ORDER BY CAST(c.meta_value AS decimal) " . $sort_order;
- break;
- default:
- $sort_clause = "ORDER BY LOWER(a.user_login) " . $sort_order;
- break;
- }
- $query = "SELECT COUNT(DISTINCT a.ID) FROM $wpdb->users a
- JOIN $wpdb->usermeta b ON a.ID = b.user_id
- JOIN $wpdb->usermeta c ON a.ID = c.user_id
- WHERE c.meta_key = '_account_balance'
- " . $user_clause . " " . $role_clause . " " . $sort_clause;
- $num_users = $wpdb->get_var($query);
- // Work out pagination.
- $num_pages = ceil($num_users/$num_posts);
- $bottom_limit = $num_posts*($paged-1);
- $limit_clause = "LIMIT " . $num_posts . " OFFSET " . (($bottom_limit>0) ? $bottom_limit : 0);
- // Get actual results.
- $query = "SELECT DISTINCT a.ID FROM $wpdb->users a
- JOIN $wpdb->usermeta b ON a.ID = b.user_id
- JOIN $wpdb->usermeta c ON a.ID = c.user_id
- WHERE c.meta_key = '_account_balance'
- " . $user_clause . " " . $role_clause . " " . $sort_clause . " " . $limit_clause;
- $userlist = $wpdb->get_results($query);
- if ($num_users > 0) {
- // Display code goes here (the foreach $userlist, yada yada yada)
- }
- if ($paged > 1) {
- $prev = $paged-1;
- echo '<span class="link-class"><a href="' . $base_url . '&show=' . $show . '&sort=' . $sort_by . '&order=' . $sort_order . '&num=' . $num_posts . '&paged=' . $prev . '">« Previous</a></span> ';
- }
- if ($num_pages > 1 && $paged < $num_pages) {
- $next = $paged+1;
- echo '<span class="link-class"><a href="' . $base_url . '&show=' . $show . '&sort=' . $sort_by . '&order=' . $sort_order . '&num=' . $num_posts . '&paged=' . $next . '">Next »</a></span>';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement