Bladeren bron

Pagination For Groups page

Hello all,

As i see the groups page should have Pagination  & search funtion to
manage it in easy way like other pages which had it.
Obada8 8 jaren geleden
bovenliggende
commit
333ee6dc38
3 gewijzigde bestanden met toevoegingen van 128 en 6 verwijderingen
  1. 44 1
      includes/database_mysql.php
  2. 45 2
      includes/database_mysqli.php
  3. 39 3
      modules/user_admin/show_groups.php

+ 44 - 1
includes/database_mysql.php

@@ -277,7 +277,7 @@ class OGPDatabaseMySQL extends OGPDatabase
 		$results = array();
 
 		while ( $row = mysql_fetch_assoc($result)) {
-			array_push($results,$row);
+			array_push($results, $row);
 		}
 
 		return $results;
@@ -301,6 +301,28 @@ class OGPDatabaseMySQL extends OGPDatabase
 			$this->table_prefix);
 		return $this->listQuery($query);
 	}
+	
+	public function get_group_count($search_field){
+		$sql = "SELECT COUNT(1) AS total FROM ".$this->table_prefix."user_group_info ";
+		if (!empty($search_field)) {
+			$sql .= "WHERE main_user_id = '$search_field' OR group_id = '$search_field' OR group_name LIKE '%$search_field%'";
+		}		
+		++$this->queries_;
+		return $this->resultQuery($sql);
+	}
+	
+	public function getGroupList_limit($page_user,$limit_user,$search_field) {
+		$user_get_id = ($page_user - 1) * $limit_user;
+		$query = sprintf("SELECT group_id,group_name
+			FROM %suser_group_info
+			
+			".($search_field ? "WHERE main_user_id = '$search_field' OR group_id = '$search_field' OR group_name LIKE \"%%".$search_field."%%\" " : "")."
+			
+			ORDER BY group_id ASC LIMIT $user_get_id, $limit_user
+			",
+			$this->table_prefix);
+		return $this->listQuery($query);
+	}	
 
 	public function getUsersGroups($user_id) {
 		$query = sprintf("SELECT *
@@ -319,6 +341,27 @@ class OGPDatabaseMySQL extends OGPDatabase
 			mysql_real_escape_string($main_user_id,$this->link));
 		return $this->listQuery($query);
 	}
+	
+	public function getUserGroupList_count($main_user_id,$search_field) {
+		$sql = "SELECT COUNT(1) AS total FROM ".$this->table_prefix."user_group_info WHERE `main_user_id` = $main_user_id ";
+		if (!empty($search_field)) {
+			$sql .= "AND group_id = '$search_field' OR group_name LIKE '%$search_field%' ";
+		}		
+		++$this->queries_;
+		return $this->resultQuery($sql);
+	}
+	
+	public function getUserGroupList_limit($main_user_id,$page_user,$limit_user,$search_field) {
+		$user_get_id = ($page_user - 1) * $limit_user;
+		$query = sprintf("SELECT *
+			FROM %suser_group_info
+			WHERE `main_user_id` = %d 
+			".($search_field ? "AND group_id = '$search_field' OR group_name LIKE \"%%".$search_field."%%\" " : "")."
+			ORDER BY group_id ASC LIMIT $user_get_id, $limit_user",
+			$this->table_prefix,
+			mysqli_real_escape_string($this->link,$main_user_id));
+		return $this->listQuery($query);
+	}
 
 	public function addUser($username,$password,$user_role,$user_email=NULL,$user_parent=NULL){
 		$panel_language = isset($GLOBALS['panel_language']) ? $GLOBALS['panel_language'] : $_SESSION['users_lang']; // $_SESSION['users_lang'] is used at install.php

+ 45 - 2
includes/database_mysqli.php

@@ -271,9 +271,9 @@ class OGPDatabaseMySQL extends OGPDatabase
 
 		++$this->queries_;
 		$result = mysqli_query($this->link, $sql);
-
 		$results = array();
-		while ($row = mysqli_fetch_assoc($result)) {
+		
+		while ( $row = mysqli_fetch_assoc($result)) {
 			array_push($results, $row);
 		}
 
@@ -298,6 +298,28 @@ class OGPDatabaseMySQL extends OGPDatabase
 			$this->table_prefix);
 		return $this->listQuery($query);
 	}
+	
+	public function get_group_count($search_field){
+		$sql = "SELECT COUNT(1) AS total FROM ".$this->table_prefix."user_group_info ";
+		if (!empty($search_field)) {
+			$sql .= "WHERE main_user_id = '$search_field' OR group_id = '$search_field' OR group_name LIKE '%$search_field%'";
+		}		
+		++$this->queries_;
+		return $this->resultQuery($sql);
+	}
+	
+	public function getGroupList_limit($page_user,$limit_user,$search_field) {
+		$user_get_id = ($page_user - 1) * $limit_user;
+		$query = sprintf("SELECT group_id,group_name
+			FROM %suser_group_info
+			
+			".($search_field ? "WHERE main_user_id = '$search_field' OR group_id = '$search_field' OR group_name LIKE \"%%".$search_field."%%\" " : "")."
+			
+			ORDER BY group_id ASC LIMIT $user_get_id, $limit_user
+			",
+			$this->table_prefix);
+		return $this->listQuery($query);
+	}
 
 	public function getUsersGroups($user_id) {
 		$query = sprintf("SELECT *
@@ -316,6 +338,27 @@ class OGPDatabaseMySQL extends OGPDatabase
 			mysqli_real_escape_string($this->link,$main_user_id));
 		return $this->listQuery($query);
 	}
+	
+	public function getUserGroupList_count($main_user_id,$search_field) {
+		$sql = "SELECT COUNT(1) AS total FROM ".$this->table_prefix."user_group_info WHERE `main_user_id` = $main_user_id ";
+		if (!empty($search_field)) {
+			$sql .= "AND group_id = '$search_field' OR group_name LIKE '%$search_field%' ";
+		}		
+		++$this->queries_;
+		return $this->resultQuery($sql);
+	}
+	
+	public function getUserGroupList_limit($main_user_id,$page_user,$limit_user,$search_field) {
+		$user_get_id = ($page_user - 1) * $limit_user;
+		$query = sprintf("SELECT *
+			FROM %suser_group_info
+			WHERE `main_user_id` = %d 
+			".($search_field ? "AND group_id = '$search_field' OR group_name LIKE \"%%".$search_field."%%\" " : "")."
+			ORDER BY group_id ASC LIMIT $user_get_id, $limit_user",
+			$this->table_prefix,
+			mysqli_real_escape_string($this->link,$main_user_id));
+		return $this->listQuery($query);
+	}
 
 	public function addUser($username,$password,$user_role,$user_email=NULL,$user_parent=NULL){
 		$panel_language = isset($GLOBALS['panel_language']) ? $GLOBALS['panel_language'] : $_SESSION['users_lang']; // $_SESSION['users_lang'] is used at install.php

+ 39 - 3
modules/user_admin/show_groups.php

@@ -23,7 +23,16 @@
  */
 
 function exec_ogp_module() {
-    global $db;
+    global $db, $loggedInUserInfo;
+	
+	$page_user = (isset($_GET['page']) && (int)$_GET['page'] > 0) ? (int)$_GET['page'] : 1;
+	$limit_user = (isset($_GET['limit']) && (int)$_GET['limit'] > 0) ? (int)$_GET['limit'] : 10;
+	$search_field = (isset($_GET['search']) && !empty($_GET['search'])) ? $_GET['search'] : false;
+
+	if(hasValue($loggedInUserInfo) && is_array($loggedInUserInfo) && $loggedInUserInfo["users_page_limit"] && !hasValue($_GET['limit'])){
+		$limit_user = $loggedInUserInfo["users_page_limit"];
+	}
+	
 ?>
     <div class="center">
     <h2><?php print_lang('add_new_group'); ?></h2>
@@ -41,10 +50,23 @@ function exec_ogp_module() {
     </div>
 <?php
     echo '<h2>'.get_lang('available_groups').'</h2>';
+	
+	echo '<table style="width: 100%;">
+			<tr>
+				<td style="width: 50%; vertical-align: middle; text-align: right;">
+					<form action="home.php" method="GET" style="float:right;">
+					<input type ="hidden" name="m" value="user_admin" />
+					<input type ="hidden" name="p" value="show_groups" />
+					<input name="search" type="text" id="search" value="' . $search_field . '"/>
+					<input type="submit" value="'.get_lang('search').'" />
+					</form>
+				</td>
+			</tr>
+		</table>';	
 	if ($db->isAdmin($_SESSION['user_id']))
-		$result = $db->getGroupList();
+		$result = $db->getGroupList_limit($page_user,$limit_user,$search_field);
 	else
-		$result = $db->getUserGroupList($_SESSION['user_id']);
+		$result = $db->getUserGroupList_limit($_SESSION['user_id'],$page_user,$limit_user,$search_field);
 		
     if ( $result === FALSE )
     {
@@ -125,4 +147,18 @@ function exec_ogp_module() {
         echo "</td></tr>";
     }
     echo "</table>";
+	
+	if ($db->isAdmin($_SESSION['user_id']))
+	$count_groups = $db->get_group_count($search_field);
+	else
+	$count_groups = $db->getUserGroupList_count($_SESSION['user_id'],$search_field);
+
+	if(isset($_GET['search']) && !empty($_GET['search'])){
+	$uri = '?m=user_admin&p=show_groups&search='.$_GET['search'].'&limit='.$limit_user.'&page=';
+	}
+	else{
+	$uri = '?m=user_admin&p=show_groups&limit='.$limit_user.'&page=';
+	}
+	echo paginationPages($count_groups[0]['total'], $page_user, $limit_user, $uri, 3, 'userGroups');	
 }
+?>