paginated user list
This commit is contained in:
parent
413a742ca8
commit
97a03d8f83
@ -95,11 +95,14 @@ class UserPage extends Extension {
|
||||
$this->page_create();
|
||||
}
|
||||
else if($event->get_arg(0) == "list") {
|
||||
$offset = 0;
|
||||
$limit = 50;
|
||||
|
||||
$q = "SELECT * FROM users WHERE 1=1";
|
||||
$a = array("offset"=>$offset, "limit"=>$limit);
|
||||
$page_num = int_escape($event->get_arg(1));
|
||||
if($page_num <= 0) $page_num = 1;
|
||||
$offset = ($page_num-1) * $limit;
|
||||
|
||||
$q = "WHERE 1=1";
|
||||
$a = array();
|
||||
|
||||
if(@$_GET['username']) {
|
||||
$q .= " AND SCORE_STRNORM(name) LIKE SCORE_STRNORM(:name)";
|
||||
@ -107,7 +110,7 @@ class UserPage extends Extension {
|
||||
}
|
||||
|
||||
if($user->can('delete_user') && @$_GET['email']) {
|
||||
$q .= " AND SCORE_STRNORM(name) LIKE SCORE_STRNORM(:email)";
|
||||
$q .= " AND SCORE_STRNORM(email) LIKE SCORE_STRNORM(:email)";
|
||||
$a["email"] = '%' . $_GET['email'] . '%';
|
||||
}
|
||||
|
||||
@ -115,12 +118,14 @@ class UserPage extends Extension {
|
||||
$q .= " AND class LIKE :class";
|
||||
$a["class"] = $_GET['class'];
|
||||
}
|
||||
$where = $database->scoreql_to_sql($q);
|
||||
|
||||
$q .= " LIMIT :limit OFFSET :offset";
|
||||
|
||||
$rows = $database->get_all($database->scoreql_to_sql($q), $a);
|
||||
$count = $database->get_one("SELECT count(*) FROM users $where", $a);
|
||||
$a["offset"] = $offset;
|
||||
$a["limit"] = $limit;
|
||||
$rows = $database->get_all("SELECT * FROM users $where LIMIT :limit OFFSET :offset", $a);
|
||||
$users = array_map("_new_user", $rows);
|
||||
$this->theme->display_user_list($page, $users, $user);
|
||||
$this->theme->display_user_list($page, $users, $user, $page_num, $count/$limit);
|
||||
}
|
||||
else if($event->get_arg(0) == "logout") {
|
||||
$this->page_logout();
|
||||
|
@ -14,7 +14,7 @@ class UserPageTheme extends Themelet {
|
||||
* @param User[] $users
|
||||
* @param User $user
|
||||
*/
|
||||
public function display_user_list(Page $page, array $users, User $user) {
|
||||
public function display_user_list(Page $page, array $users, User $user, int $page_num, int $page_total) {
|
||||
$page->set_title("User List");
|
||||
$page->set_heading("User List");
|
||||
$page->add_block(new NavBlock());
|
||||
@ -36,7 +36,7 @@ class UserPageTheme extends Themelet {
|
||||
$html .= "<tr>" . make_form("user_admin/list", "GET");
|
||||
$html .= "<td><input type='text' name='username' value='$h_username'/></td>";
|
||||
if($user->can('delete_user'))
|
||||
$html .= "<td><input type='email' name='text' value='$h_email'/></td>";
|
||||
$html .= "<td><input type='text' name='email' value='$h_email'/></td>";
|
||||
$html .= "<td><input type='text' name='class' value='$h_class'/></td>";
|
||||
$html .= "<td><input type='submit' value='Search'/></td>";
|
||||
$html .= "</form></tr>";
|
||||
@ -60,6 +60,26 @@ class UserPageTheme extends Themelet {
|
||||
$html .= "</table>";
|
||||
|
||||
$page->add_block(new Block("Users", $html));
|
||||
$this->display_paginator($page, "user_admin/list", $this->get_args(), $page_num, $page_total);
|
||||
}
|
||||
|
||||
protected function ueie($var) {
|
||||
if(isset($_GET[$var])) return $var."=".url_escape($_GET[$var]);
|
||||
else return "";
|
||||
}
|
||||
protected function get_args() {
|
||||
$args = "";
|
||||
// Check if each arg is actually empty and skip it if so
|
||||
if(strlen($this->ueie("username")))
|
||||
$args .= $this->ueie("username")."&";
|
||||
if(strlen($this->ueie("email")))
|
||||
$args .= $this->ueie("email")."&";
|
||||
if(strlen($this->ueie("class")))
|
||||
$args .= $this->ueie("class")."&";
|
||||
// If there are no args at all, set $args to null to prevent an unnecessary ? at the end of the paginator url
|
||||
if(strlen($args) == 0)
|
||||
$args = null;
|
||||
return $args;
|
||||
}
|
||||
|
||||
public function display_user_links(Page $page, User $user, $parts) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user