From aa19640497a8ee531603212e4deb4fc316d5637e Mon Sep 17 00:00:00 2001
From: "tatiana.llorente@artica.es" <tatiana.llorente@artica.es>
Date: Wed, 7 Nov 2018 10:34:14 +0100
Subject: [PATCH] Changed ORDER BY in SQL query - #3044

---
 pandora_console/include/ajax/module.php | 34 +++++++++++++++++--------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php
index 5c5908460f..91c73bff51 100755
--- a/pandora_console/include/ajax/module.php
+++ b/pandora_console/include/ajax/module.php
@@ -474,16 +474,17 @@ if ($list_modules) {
 	$sort = get_parameter('sort', 'none');
 	$selected = 'border: 1px solid black;';
 
+	$order[] = array('field' => 'tmodule_group.name', 'order' => 'ASC');
 	switch ($sortField) {
 		case 'type':
 			switch ($sort) {
 				case 'up':
 					$selectTypeUp = $selected;
-					$order = array('field' => 'tagente_modulo.id_modulo', 'order' => 'ASC');
+					$order[] = array('field' => 'tagente_modulo.id_modulo', 'order' => 'ASC');
 					break;
 				case 'down':
 					$selectTypeDown = $selected;
-					$order = array('field' => 'tagente_modulo.id_modulo', 'order' => 'DESC');
+					$order[] = array('field' => 'tagente_modulo.id_modulo', 'order' => 'DESC');
 					break;
 			}
 			break;
@@ -491,11 +492,11 @@ if ($list_modules) {
 			switch ($sort) {
 				case 'up':
 					$selectNameUp = $selected;
-					$order = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
+					$order[] = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
 					break;
 				case 'down':
 					$selectNameDown = $selected;
-					$order = array('field' => 'tagente_modulo.nombre', 'order' => 'DESC');
+					$order[] = array('field' => 'tagente_modulo.nombre', 'order' => 'DESC');
 					break;
 			}
 			break;
@@ -503,11 +504,11 @@ if ($list_modules) {
 			switch ($sort) {
 				case 'up':
 					$selectStatusUp = $selected;
-					$order = array('field' => 'tagente_estado.estado=0 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=1 DESC', 'order' => '');
+					$order[] = array('field' => 'tagente_estado.estado=0 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=1 DESC', 'order' => '');
 					break;
 				case 'down':
 					$selectStatusDown = $selected;
-					$order = array('field' => 'tagente_estado.estado=1 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=0 DESC', 'order' => '');
+					$order[] = array('field' => 'tagente_estado.estado=1 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=0 DESC', 'order' => '');
 					break;
 			}
 			break;
@@ -515,11 +516,11 @@ if ($list_modules) {
 			switch ($sort) {
 				case 'up':
 					$selectLastContactUp = $selected;
-					$order = array('field' => 'tagente_estado.utimestamp', 'order' => 'ASC');
+					$order[] = array('field' => 'tagente_estado.utimestamp', 'order' => 'ASC');
 					break;
 				case 'down':
 					$selectLastContactDown = $selected;
-					$order = array('field' => 'tagente_estado.utimestamp', 'order' => 'DESC');
+					$order[] = array('field' => 'tagente_estado.utimestamp', 'order' => 'DESC');
 					break;
 			}
 			break;
@@ -535,7 +536,7 @@ if ($list_modules) {
 			$selectLastContactUp = '';
 			$selectLastContactDown = '';
 
-			$order = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
+			$order[] = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
 			break;
 	}
 
@@ -590,7 +591,20 @@ if ($list_modules) {
 	}
 
 	//Count monitors/modules
-	$order_sql = $order['field'] . " " . $order['order'];
+
+	// Build the order sql
+	$first = true;
+	foreach ($order as $ord) {
+		if ($first) {
+			$first = false;
+		}
+		else {
+			$order_sql .= ',';
+		}
+		
+		$order_sql .= $ord['field'].' '.$ord['order'];
+	}
+
 	$sql_condition = "FROM tagente_modulo
 		$tags_join
 		INNER JOIN tagente_estado