6f77dcf9 by Kevin Burton

added pagination and search

1 parent 7280be63
......@@ -435,8 +435,12 @@ input.dp-applied {
.admin-member-id { font-size:14px; color:#777; }
.users-role-bar { margin-top:15px; font-size:11px; }
.users-role-bar { margin-top:15px; font-size:11px; margin-left:8px; float: left; margin-bottom: 5px;}
.users-role-bar a { text-decoration: none; }
.users-role-bar a.active { color:#000; font-weight: bold; }
.sm_count { font-size:11px; color:#999; font-weight: normal; }
.TzPaginateResults { margin-top:35px; font-size:11px; text-align: right; margin-right:10px; margin-bottom:5px; float:right; }
.TzPaginateResults a { text-decoration: none; padding:1px 0px; border:1px solid transparent; }
.TzPaginateResults a.active { color:#000; font-weight: bold; border:1px solid #ccc;padding:1px 3px; }
......
......@@ -57,35 +57,66 @@ function search_special_status($key) {
}
}
function get_users($role = null, $start=0, $limit=20) {
function get_users($role = null, $pagenum=1, $records_per_page=0, $return_count_only = false, $search = null) {
global $wpdb;
$users = array();
$blog_prefix = $wpdb->get_blog_prefix( $blog_id );
if ($search) {
$search = strip_tags($search);
$search_text = "AND (uml.meta_value LIKE '%$search%' OR umf.meta_value LIKE '%$search%')";
} else {
$search_text = "";
}
$blog_prefix = $wpdb->get_blog_prefix();
if ($role) {
$filter = "AND {$wpdb->usermeta}.user_id IN (SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='wp_capabilities' AND meta_value LIKE '%$role%' )";
$extra_table = "";//", {$wpdb->usermeta} as umc";
//$filter = "AND (umc.user_id=u.ID AND umc.meta_key='wp_capabilites' AND umc.meta_value LIKE '%$role%')";
$filter = "AND u.ID IN (SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='wp_capabilities' AND meta_value LIKE '%$role%')";
} else {
$extra_table = "";
$filter = "";
}
$query = "SELECT {$wpdb->users}.*, meta_value as last_name FROM $wpdb->users, $wpdb->usermeta WHERE {$wpdb->users}.ID = {$wpdb->usermeta}.user_id AND meta_key = 'last_name' $filter ORDER BY last_name ASC LIMIT $start,$limit";
$wp_user_search = $wpdb->get_results($query);
foreach ( $wp_user_search as $user ) {
$uid = (int) $user->ID;
$user = new WP_User($uid);
$user_login = $user->user_login;
$name = get_user_meta($uid,'first_name',true) . " " . get_user_meta($uid, 'last_name',true);
reset($user->roles);
$role = ucwords(current($user->roles));
$query = "
SELECT
u.ID, u.user_login, user_email, uml.meta_value as last_name, umf.meta_value as first_name
FROM
{$wpdb->users} as u, {$wpdb->usermeta} as uml, {$wpdb->usermeta} as umf, {$wpdb->usermeta} as ums $extra_table
WHERE
(uml.user_id=u.ID AND uml.meta_key='last_name')
AND (umf.user_id=u.ID AND umf.meta_key='first_name')
AND (ums.user_id=u.ID AND ums.meta_key='status')
$filter
$search_text
ORDER BY last_name ASC, first_name ASC
";
$users[] = array('uid'=>$uid,'name'=>$name,'first_name'=>get_user_meta($uid,'first_name',true),'last_name'=>get_user_meta($uid, 'last_name',true),'role'=>$role, 'user_login'=>$user_login, 'email'=>$user->user_email);
if ($records_per_page > 0) {
$limit = " LIMIT ".( ($pagenum - 1) * $records_per_page ).", $records_per_page";
} else {
$limit = "";
}
$wp_user_search = $wpdb->get_results($query.$limit);
if ($return_count_only) {
return $wpdb->num_rows;
} else {
foreach ( $wp_user_search as $user ) {
$uid = (int) $user->ID;
$user = new WP_User($uid);
reset($user->roles);
$role = ucwords(current($user->roles));
$users[] = array('uid'=>$uid,'first_name'=>$user->first_name,'last_name'=>$user->last_name,'role'=>$role, 'user_login'=>$user->user_login, 'email'=>$user->user_email, 'status'=>$user->status);
}
return $users;
}
return $users;
}
function create_user() {
......
......@@ -12,6 +12,41 @@ use Tz\WordPress\Tools\Notifications;
use Exception, StdClass;
use WP_User;
$records_per_page = 3;
$filter_role = isset($_GET['role']) ? $_GET['role'] : null;
$pagenum = isset($_GET['pagenum']) ? $_GET['pagenum'] : 1;
$search = isset($_GET['search_criteria']) ? $_GET['search_criteria'] : null;
$rows = get_users($filter_role, 0,0, true, $search);
$last = ceil($rows/$records_per_page);
if ($last < 1) {
$last = 1;
}
if ($pagenum < 1) {
$pagenum = 1;
} elseif ($pagenum > $last) {
$pagenum = $last;
}
$site_users = get_users($filter_role, $pagenum, $records_per_page, false, $search);
if ($filter_role) {
$url = $_SERVER['PHP_SELF']."?page=cbv_users&role=$filter_role&pagenum=";
} elseif ($search) {
$url = $_SERVER['PHP_SELF']."?page=cbv_users&search_criteria=$search&pagenum=";
} else {
$url = $_SERVER['PHP_SELF']."?page=cbv_users&pagenum=";
}
?>
<div id="" class="wrap">
<div id="icon-users" class="icon32"><br /></div>
......@@ -19,46 +54,62 @@ use WP_User;
<p style="display:none;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam iaculis convallis nisi eu dignissim. Quisque malesuada augue in mi blandit at blandit tortor sollicitudin. Cras at justo mi, vel mollis est. Donec orci erat, blandit varius vehicula vitae, volutpat at lorem. Etiam tincidunt bibendum ante, non tincidunt purus faucibus sed. Suspendisse eget facilisis tellus. Nulla imperdiet leo placerat diam sollicitudin nec mattis neque mattis. Cras id lacus tellus. Phasellus volutpat vehicula porttitor. Praesent erat felis, pharetra mollis egestas sit amet, rhoncus eget nisl. Morbi interdum sapien vitae nibh pharetra scelerisque. Mauris porta accumsan velit ac aliquam. Sed sit amet dictum felis. Fusce tempus vulputate nulla, quis tincidunt velit mattis eu.</p>
<div class="users-role-bar">
<?php $users = count_users(); ?>
<a href="/wp-admin/admin.php?page=cbv_users" <?php echo (!isset($_GET['role']) ? "class='active'" : ""); ?>>All <span class="sm_count">(<?php echo $users['total_users']?>)</span></a>
<?php
if (isset($users['avail_roles'])) {
foreach($users['avail_roles'] as $role=>$counted) {
print ' | <a href="/wp-admin/admin.php?page=cbv_users&role='.$role.'" '.( (isset($_GET['role']) && $_GET['role']==$role) ? "class='active'" : "").'>'.ucwords($role).' <span class="sm_count">('.$counted.')</span></a>';
<?php if (isset($_GET['search_criteria'])):?>
<div style="margin-bottom:10px;display:block;"><strong>Searched for: </strong> <?php echo strip_tags($_GET['search_criteria']); ?> <a href="/wp-admin/admin.php?page=cbv_users" class="button">Clear Search</a></div>
<?php else: ?>
<strong>Filter</strong>:
<?php $users = count_users(); ?>
<a href="/wp-admin/admin.php?page=cbv_users" <?php echo (!isset($_GET['role']) ? "class='active'" : ""); ?>>All</a>
<?php
if (isset($users['avail_roles'])) {
foreach($users['avail_roles'] as $role=>$counted) {
print ' | <a href="/wp-admin/admin.php?page=cbv_users&role='.$role.'" '.( (isset($_GET['role']) && $_GET['role']==$role) ? "class='active'" : "").'>'.ucwords($role).'</a>';
}
}
}
?>
?>
<form method="GET" action="<?php echo $_SERVER['PHP_SELF']."?page=cbv_users"; ?>"><input type="hidden" name="page" value="cbv_users" /><div style="margin-top:3px;display:block;"><em>or</em> <strong>Search</strong>: <input type="text" name="search_criteria" value="" /><input type="submit" value="Go" /></div></form>
<?php endif;?>
</div>
<table cellspacing="0" class="widefat post fixed" style="margin-top:15px;">
<div class="TzPaginateResults">
<?php echo "Users: $rows ";if($last > 1): echo " | Pages: "; for($i=1; $i <= $last; $i++):?>
<a href="<?php echo $url.$i; ?>" <?php echo ($pagenum==$i) ? "class='active'" : ""?>><?php echo $i; ?></a>
<?php endfor;endif; ?>
</div>
<div style="clear:both"></div>
<table cellspacing="0" class="widefat post fixed">
<thead>
<tr>
<th scope="col" class="manage-column">Name</th>
<th scope="col" width="180" class="manage-column">Username</th>
<th scope="col" width="250" class="manage-column">Email</th>
<th scope="col" width="200" class="manage-column">Role</th>
<th scope="col" width="100" class="manage-column">Status</th>
</tr>
</thead>
<tbody>
<?php
$filter_role = (isset($_GET['role']) ? $_GET['role'] : null);
$users = get_users($filter_role, 0);
foreach($users as $user):
foreach($site_users as $user):
?>
<tr>
<td><a href="/wp-admin/admin.php?page=cbv_users&action=edit&uid=<?php echo $user['uid']?>"><?php echo $user['last_name'].', '.$user['first_name']?></a></td>
<td><a href="/wp-admin/admin.php?page=cbv_users&action=edit&uid=<?php echo $user['uid']?>"><?php echo $user['user_login']?></a></td>
<td><?php echo $user['email']?></td>
<td><?php echo $user['role']?></td>
<td><?php echo ucwords($user['status']);?></td>
</tr>
<?php endforeach; ?>
</body>
</table>
<div class="TzPaginateResults" style="margin-top:10px;">
<?php if($last > 1): echo "Pages: "; for($i=1; $i <= $last; $i++):?>
<a href="<?php echo $url.$i; ?>" <?php echo ($pagenum==$i) ? "class='active'" : ""?>><?php echo $i; ?></a>
<?php endfor;endif; ?>
</div>
<div style="clear:both;"></div>
</div>
<script src="<?php echo Tools\url('../UserManager.js', __FILE__);?>" type="text/javascript"></script>
\ No newline at end of file
......
......@@ -168,7 +168,7 @@ unset($rc, $roles['administrator']);
<h3 style="margin-bottom:5px; padding-bottom:0px;">Account Status:</h3>
<select name="status">
<option value="active" <?php echo ($status=="active") ? "selected" : ""; ?>>Active</option>
<option value="suspeneded" <?php echo ($status=="suspended") ? "selected" : ""; ?>>Suspended</option>
<option value="suspended" <?php echo ($status=="suspended") ? "selected" : ""; ?>>Suspended</option>
<option value="terminated" <?php echo ($status=="terminated") ? "selected" : ""; ?>>Terminated</option>
</select>
......