Просмотр исходного кода

Fix BUG in last pagination and add Pagination For Dashboard

Fix BUG in last pagination and add Pagination For Dashboard
Obada8 9 лет назад
Родитель
Сommit
365eb62340
5 измененных файлов с 229 добавлено и 13 удалено
  1. 12 4
      home.php
  2. 4 0
      includes/database.php
  3. 86 5
      includes/database_mysql.php
  4. 81 0
      includes/database_mysqli.php
  5. 46 4
      modules/dashboard/dashboard.php

+ 12 - 4
home.php

@@ -136,7 +136,15 @@ function heading()
 
 
 function ogpHome()
 function ogpHome()
 {
 {
-    global $db,$view,$settings;
+    global $db,$view,$settings, $loggedInUserInfo;
+
+ 	$page_user = isset($_GET['page']) ? $_GET['page'] : 1;
+  	$limit_user = isset($_GET['limit']) ? $_GET['limit'] : 10;
+	
+	if(hasValue($loggedInUserInfo) && is_array($loggedInUserInfo) && $loggedInUserInfo["users_page_limit"]){
+		$limit_user = $loggedInUserInfo["users_page_limit"];
+ 	}
+	
 	?>
 	?>
 	%top%
 	%top%
 	<?php
 	<?php
@@ -145,10 +153,10 @@ function ogpHome()
 		$isAdmin = $db->isAdmin($_SESSION['user_id']);
 		$isAdmin = $db->isAdmin($_SESSION['user_id']);
 			
 			
 		if ( $isAdmin )
 		if ( $isAdmin )
-			$server_homes = $db->getHomesFor('admin', $_SESSION['user_id']);
+			$server_homes = $db->getHomesFor_limit('admin', $_SESSION['user_id'],$page_user,$limit_user);
 		else
 		else
-			$server_homes = $db->getHomesFor('user_and_group', $_SESSION['user_id']);
-		
+			$server_homes = $db->getHomesFor_limit('user_and_group', $_SESSION['user_id'],$page_user,$limit_user);
+				
 		if(!empty($server_homes))
 		if(!empty($server_homes))
 		{
 		{
 			$servers_by_game_name = array();
 			$servers_by_game_name = array();

+ 4 - 0
includes/database.php

@@ -188,6 +188,10 @@ abstract class OGPDatabase {
 
 
     abstract public function getIpPortsForUser($user_id);
     abstract public function getIpPortsForUser($user_id);
 
 
+	abstract public function getIpPortsForUser_limit($user_id,$page_user,$limit_user);
+ 	
+ 	abstract public function getIpPorts_count($id_type,$assign_id);
+	
     // Module manager functions
     // Module manager functions
 
 
     /// \brief Returns the installed modules.
     /// \brief Returns the installed modules.

+ 86 - 5
includes/database_mysql.php

@@ -267,7 +267,7 @@ class OGPDatabaseMySQL extends OGPDatabase
 			$this->table_prefix);
 			$this->table_prefix);
 
 
 		++$this->queries_;
 		++$this->queries_;
-		$result = mysql_query($this->link,$query);
+		$result = mysql_query($query,$this->link);
 
 
 		$results = array();
 		$results = array();
 
 
@@ -1572,13 +1572,13 @@ class OGPDatabaseMySQL extends OGPDatabase
 		{
 		{
 			$query1 = sprintf($template,
 			$query1 = sprintf($template,
 				$this->table_prefix,
 				$this->table_prefix,
-				mysql_real_escape_string($this->link,$assign_id) );
+				mysql_real_escape_string($assign_id,$this->link) );
 			$query2 = sprintf($template2,
 			$query2 = sprintf($template2,
 				$this->table_prefix,
 				$this->table_prefix,
-				mysql_real_escape_string($this->link,$assign_id) );
+				mysql_real_escape_string($assign_id,$this->link) );
 			$query3 = sprintf($template3,
 			$query3 = sprintf($template3,
 				$this->table_prefix,
 				$this->table_prefix,
-				mysql_real_escape_string($this->link,$assign_id) );
+				mysql_real_escape_string($assign_id,$this->link) );
 			$servers = $this->listQuery($query1);
 			$servers = $this->listQuery($query1);
 			if($servers)
 			if($servers)
 			{
 			{
@@ -1610,7 +1610,7 @@ class OGPDatabaseMySQL extends OGPDatabase
 		{
 		{
 			$query = sprintf($template,
 			$query = sprintf($template,
 				$this->table_prefix,
 				$this->table_prefix,
-				mysql_real_escape_string($this->link,$assign_id) );
+				mysql_real_escape_string($assign_id,$this->link) );
 			return $this->listQuery($query);
 			return $this->listQuery($query);
 		}
 		}
 	}
 	}
@@ -1714,6 +1714,45 @@ class OGPDatabaseMySQL extends OGPDatabase
 		return $this->listQuery($query);
 		return $this->listQuery($query);
 	}
 	}
 	
 	
+	public function getIpPortsForUser_limit($user_id,$page_dashboardlist,$limit_dashboardlist) {
+		
+		$user_request_page = ($page_dashboardlist - 1) * $limit_dashboardlist;
+		
+		$query = sprintf('SELECT %1$sremote_server_ips.*,%1$shome_ip_ports.*,%1$sserver_homes.*,
+			%1$sremote_servers.*,
+			%1$sconfig_homes.*,
+			%1$sconfig_mods.*,
+			%1$sgame_mods.*
+			FROM `%1$shome_ip_ports`
+			NATURAL JOIN `%1$sremote_servers`
+			NATURAL JOIN `%1$sserver_homes`
+			NATURAL JOIN `%1$sconfig_homes`
+			NATURAL JOIN `%1$sremote_server_ips`
+			NATURAL JOIN `%1$sconfig_mods`
+			NATURAL JOIN `%1$sgame_mods`
+			WHERE `home_id` IN
+			(
+				SELECT `home_id`
+				FROM `%1$suser_homes`
+				WHERE `user_id` = %2$d
+				UNION
+				SELECT `home_id`
+				FROM `%1$suser_groups`
+				NATURAL JOIN `%1$suser_group_homes`
+				WHERE `user_id` = %2$d
+			) 
+			AND `force_mod_id` IN
+			(
+				SELECT `force_mod_id`
+				FROM `%1$shome_ip_ports`
+				WHERE `force_mod_id` = %1$sgame_mods.mod_id OR `force_mod_id` = "0"
+			) ORDER BY %1$shome_ip_ports.home_id ASC LIMIT '.$user_request_page.','.$limit_dashboardlist.';',
+			$this->table_prefix,
+			mysql_real_escape_string($user_id, $this->link) );
+							
+		return $this->listQuery($query);
+	}
+	
 	public function getIpPorts( $ip_id = 0 ) {
 	public function getIpPorts( $ip_id = 0 ) {
 		
 		
 		$ip_id_and = $ip_id == 0 ? "" : "`ip_id`='".$ip_id."' AND ";
 		$ip_id_and = $ip_id == 0 ? "" : "`ip_id`='".$ip_id."' AND ";
@@ -1739,6 +1778,48 @@ class OGPDatabaseMySQL extends OGPDatabase
 
 
 		return $this->listQuery($query);
 		return $this->listQuery($query);
 	}
 	}
+	
+	public function getIpPorts_limit($ip_id = 0,$page_dashboardlist,$limit_dashboardlist) {
+		
+		$user_request_page = ($page_dashboardlist - 1) * $limit_dashboardlist;
+
+		$ip_id_and = $ip_id == 0 ? "" : "`ip_id`='".$ip_id."' AND ";
+		$query = sprintf('SELECT %1$sremote_server_ips.*,%1$shome_ip_ports.*,%1$sserver_homes.*,
+			%1$sremote_servers.*,
+			%1$sconfig_homes.*,
+			%1$sconfig_mods.*,
+			%1$sgame_mods.*
+			FROM `%1$shome_ip_ports`
+			NATURAL JOIN `%1$sremote_servers`
+			NATURAL JOIN `%1$sserver_homes`
+			NATURAL JOIN `%1$sconfig_homes`
+			NATURAL JOIN `%1$sremote_server_ips`
+			NATURAL JOIN `%1$sconfig_mods`
+			NATURAL JOIN `%1$sgame_mods` 
+			WHERE `force_mod_id` IN
+			(
+				SELECT `force_mod_id`
+				FROM `%1$shome_ip_ports`
+				WHERE '.$ip_id_and.'(`force_mod_id` = %1$sgame_mods.mod_id OR `force_mod_id` = "0")
+			) ORDER BY %1$shome_ip_ports.home_id ASC LIMIT '.$user_request_page.','.$limit_dashboardlist.';',
+			$this->table_prefix );
+
+		return $this->listQuery($query);
+	}
+	
+
+	
+	public function getIpPorts_count($id_type,$assign_id){
+		if ( $id_type == "admin" ){
+ 		return $this->resultQuery("SELECT COUNT(home_id) AS total FROM `".$this->table_prefix."home_ip_ports`;");
+		}
+		else if ( $id_type == "user_and_group" ){
+		return $this->resultQuery("SELECT COUNT(home_id) AS total FROM `".$this->table_prefix."home_ip_ports` WHERE home_id IN (SELECT home_id FROM `".$this->table_prefix."user_homes` WHERE user_id = $assign_id);");
+		}
+		else if ( $id_type == "subuser" ){
+		return $this->resultQuery("SELECT COUNT(home_id) AS total FROM `".$this->table_prefix."home_ip_ports` WHERE home_id IN (SELECT group_id FROM `".$this->table_prefix."user_groups` WHERE user_id = $assign_id);");
+		}
+	}
 
 
 	// Module manager functions
 	// Module manager functions
 
 

+ 81 - 0
includes/database_mysqli.php

@@ -1712,6 +1712,45 @@ class OGPDatabaseMySQL extends OGPDatabase
 		return $this->listQuery($query);
 		return $this->listQuery($query);
 	}
 	}
 	
 	
+	public function getIpPortsForUser_limit($user_id,$page_dashboardlist,$limit_dashboardlist) {
+		
+		$user_request_page = ($page_dashboardlist - 1) * $limit_dashboardlist;
+		
+		$query = sprintf('SELECT %1$sremote_server_ips.*,%1$shome_ip_ports.*,%1$sserver_homes.*,
+			%1$sremote_servers.*,
+			%1$sconfig_homes.*,
+			%1$sconfig_mods.*,
+			%1$sgame_mods.*
+			FROM `%1$shome_ip_ports`
+			NATURAL JOIN `%1$sremote_servers`
+			NATURAL JOIN `%1$sserver_homes`
+			NATURAL JOIN `%1$sconfig_homes`
+			NATURAL JOIN `%1$sremote_server_ips`
+			NATURAL JOIN `%1$sconfig_mods`
+			NATURAL JOIN `%1$sgame_mods`
+			WHERE `home_id` IN
+			(
+				SELECT `home_id`
+				FROM `%1$suser_homes`
+				WHERE `user_id` = %2$d
+				UNION
+				SELECT `home_id`
+				FROM `%1$suser_groups`
+				NATURAL JOIN `%1$suser_group_homes`
+				WHERE `user_id` = %2$d
+			) 
+			AND `force_mod_id` IN
+			(
+				SELECT `force_mod_id`
+				FROM `%1$shome_ip_ports`
+				WHERE `force_mod_id` = %1$sgame_mods.mod_id OR `force_mod_id` = "0"
+			) ORDER BY %1$shome_ip_ports.home_id ASC LIMIT '.$user_request_page.','.$limit_dashboardlist.';',
+			$this->table_prefix,
+			mysqli_real_escape_string($this->link,$user_id) );
+							
+		return $this->listQuery($query);
+	}
+	
 	public function getIpPorts( $ip_id = 0 ) {
 	public function getIpPorts( $ip_id = 0 ) {
 		
 		
 		$ip_id_and = $ip_id == 0 ? "" : "`ip_id`='".$ip_id."' AND ";
 		$ip_id_and = $ip_id == 0 ? "" : "`ip_id`='".$ip_id."' AND ";
@@ -1737,6 +1776,48 @@ class OGPDatabaseMySQL extends OGPDatabase
 
 
 		return $this->listQuery($query);
 		return $this->listQuery($query);
 	}
 	}
+	
+	public function getIpPorts_limit($ip_id = 0,$page_dashboardlist,$limit_dashboardlist) {
+		
+		$user_request_page = ($page_dashboardlist - 1) * $limit_dashboardlist;
+
+		$ip_id_and = $ip_id == 0 ? "" : "`ip_id`='".$ip_id."' AND ";
+		$query = sprintf('SELECT %1$sremote_server_ips.*,%1$shome_ip_ports.*,%1$sserver_homes.*,
+			%1$sremote_servers.*,
+			%1$sconfig_homes.*,
+			%1$sconfig_mods.*,
+			%1$sgame_mods.*
+			FROM `%1$shome_ip_ports`
+			NATURAL JOIN `%1$sremote_servers`
+			NATURAL JOIN `%1$sserver_homes`
+			NATURAL JOIN `%1$sconfig_homes`
+			NATURAL JOIN `%1$sremote_server_ips`
+			NATURAL JOIN `%1$sconfig_mods`
+			NATURAL JOIN `%1$sgame_mods` 
+			WHERE `force_mod_id` IN
+			(
+				SELECT `force_mod_id`
+				FROM `%1$shome_ip_ports`
+				WHERE '.$ip_id_and.'(`force_mod_id` = %1$sgame_mods.mod_id OR `force_mod_id` = "0")
+			) ORDER BY %1$shome_ip_ports.home_id ASC LIMIT '.$user_request_page.','.$limit_dashboardlist.';',
+			$this->table_prefix );
+
+		return $this->listQuery($query);
+	}
+	
+
+	
+	public function getIpPorts_count($id_type,$assign_id){
+		if ( $id_type == "admin" ){
+ 		return $this->resultQuery("SELECT COUNT(home_id) AS total FROM `".$this->table_prefix."home_ip_ports`;");
+		}
+		else if ( $id_type == "user_and_group" ){
+		return $this->resultQuery("SELECT COUNT(home_id) AS total FROM `".$this->table_prefix."home_ip_ports` WHERE home_id IN (SELECT home_id FROM `".$this->table_prefix."user_homes` WHERE user_id = $assign_id);");
+		}
+		else if ( $id_type == "subuser" ){
+		return $this->resultQuery("SELECT COUNT(home_id) AS total FROM `".$this->table_prefix."home_ip_ports` WHERE home_id IN (SELECT group_id FROM `".$this->table_prefix."user_groups` WHERE user_id = $assign_id);");
+		}
+	}
 
 
 	// Module manager functions
 	// Module manager functions
 
 

+ 46 - 4
modules/dashboard/dashboard.php

@@ -28,9 +28,17 @@ require('includes/lib_remote.php');
 
 
 function exec_ogp_module() 
 function exec_ogp_module() 
 {
 {
-	global $db, $settings;
+	global $db, $settings, $loggedInUserInfo;
+	
 	$isAdmin = $db->isAdmin($_SESSION['user_id']);
 	$isAdmin = $db->isAdmin($_SESSION['user_id']);
 
 
+	$page_user = isset($_GET['page']) ? $_GET['page'] : 1;
+	$limit_user = isset($_GET['limit']) ? $_GET['limit'] : 10;
+	
+	if(hasValue($loggedInUserInfo) && is_array($loggedInUserInfo) && $loggedInUserInfo["users_page_limit"] && !hasValue($_GET['limit'])){
+ 		$limit_user = $loggedInUserInfo["users_page_limit"];
+ 	}	
+	
 	$OnlineServers = "";
 	$OnlineServers = "";
 	$OnlineServersTitle = "";
 	$OnlineServersTitle = "";
 	
 	
@@ -47,13 +55,13 @@ function exec_ogp_module()
 	
 	
 	if ( $isAdmin )
 	if ( $isAdmin )
 	{
 	{
-		$server_homes = $db->getIpPorts();
+		$server_homes = $db->getIpPorts_limit($ip_id,$page_user,$limit_user);
 	}
 	}
 	else
 	else
 	{
 	{
 		$OnlineServersTitle = "Open Game Panel";
 		$OnlineServersTitle = "Open Game Panel";
 		$OnlineServers .= "<p>" . get_lang("welcome_text") . "</p><br><b>".get_lang('online_servers').":</b><br><br>";
 		$OnlineServers .= "<p>" . get_lang("welcome_text") . "</p><br><b>".get_lang('online_servers').":</b><br><br>";
-		$server_homes = $db->getIpPortsForUser($_SESSION['user_id']);
+		$server_homes = $db->getIpPortsForUser_limit($_SESSION['user_id'],$page_user,$limit_user);
 	}
 	}
 
 
 	require_once("includes/refreshed.php");
 	require_once("includes/refreshed.php");
@@ -94,7 +102,41 @@ function exec_ogp_module()
 					$player_list .= $refresh->getdiv($refresh->add("home.php?m=dashboard&p=query_ref&show=players&type=cleared&ip=".$server_home['ip']."&port=".$server_home['port']));
 					$player_list .= $refresh->getdiv($refresh->add("home.php?m=dashboard&p=query_ref&show=players&type=cleared&ip=".$server_home['ip']."&port=".$server_home['port']));
 				}
 				}
 			}
 			}
-			$OnlineServers .= "</table>";
+			$OnlineServers .= "</table><br>";
+			
+if ($isAdmin){			
+	$count_homes = $db->getIpPorts_count('admin');
+	}
+	else{
+	$isSubUser = $db->isSubUser($_SESSION['user_id']);
+	if($isSubUser){
+	$count_homes = $db->getIpPorts_count('subuser',$_SESSION['user_id']);
+	}else{
+	$count_homes = $db->getIpPorts_count('user_and_group',$_SESSION['user_id']);
+		}
+	}
+	if($count_homes > $limit_user)
+ 	{
+ 		$total_pages = $count_homes[0]['total'] / $limit_user;
+ 		$pagination = "";
+ 		for($page=1; $page <= $total_pages+1; $page++)
+ 		{
+ 			if($page == $page_user){
+ 				$pagination .= " <b>$page</b>,";
+				if($total_pages <= 1){$pagination = "";}
+ 			}else{
+				if(isset($limit_user)){
+ 					$limits = $limit_user;
+					
+ 					$pagination .= "<a href='?m=dashboard&p=dashboard&page=$page&limit=$limits'>$page</a>,";
+ 				}else{
+ 					$pagination .= "<a href='?m=dashboard&p=dashboard&page=$page' >$page</a>,";
+ 				}
+ 			}
+ 		}
+ 		$OnlineServers .= rtrim($pagination, ",");
+ 	}
+	
 			$OnlineServers .= "<center>" . statistics . ":<br>$stats_servers_online/$stats_servers " . servers . "<br>" . 
 			$OnlineServers .= "<center>" . statistics . ":<br>$stats_servers_online/$stats_servers " . servers . "<br>" . 
 							  $refresh->getdiv($refresh->add("home.php?m=dashboard&p=query_ref&show=player_statistics&type=cleared&ip=" .
 							  $refresh->getdiv($refresh->add("home.php?m=dashboard&p=query_ref&show=player_statistics&type=cleared&ip=" .
 							  $server_home['ip']."&port=".$server_home['port'])) . "</center>";
 							  $server_home['ip']."&port=".$server_home['port'])) . "</center>";