diff --git a/pandora_console/operation/search_agents.getdata.php b/pandora_console/operation/search_agents.getdata.php
index 1ed2e1875e..02f8d75a97 100644
--- a/pandora_console/operation/search_agents.getdata.php
+++ b/pandora_console/operation/search_agents.getdata.php
@@ -70,18 +70,19 @@ if ($searchAgents) {
$has_secondary = enterprise_hook('agents_is_using_secondary_groups');
+ $stringSearchSQL = str_replace('&', '&', $stringSearchSQL);
$sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress
INNER JOIN taddress_agent ON
taddress.id_a = taddress_agent.id_a
- WHERE taddress.ip LIKE '%$stringSearchSQL%'";
+ WHERE taddress.ip LIKE '$stringSearchSQL'";
$id = db_get_all_rows_sql($sql);
if ($id != '') {
$aux = $id[0]['id_agent'];
- $search_sql = " t1.nombre LIKE '%%".$stringSearchSQL."%%' OR
- t2.nombre LIKE '%%".$stringSearchSQL."%%' OR
- t1.alias LIKE '%%".$stringSearchSQL."%%' OR
- t1.comentarios LIKE '%%".$stringSearchSQL."%%' OR
+ $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR
+ t2.nombre LIKE '".$stringSearchSQL."' OR
+ t1.alias LIKE '".$stringSearchSQL."' OR
+ t1.comentarios LIKE '".$stringSearchSQL."' OR
t1.id_agente =".$aux;
$idCount = count($id);
@@ -93,16 +94,16 @@ if ($searchAgents) {
}
}
} else {
- $search_sql = " t1.nombre LIKE '%%".$stringSearchSQL."%%' OR
- t2.nombre LIKE '%%".$stringSearchSQL."%%' OR
- t1.direccion LIKE '%%".$stringSearchSQL."%%' OR
- t1.comentarios LIKE '%%".$stringSearchSQL."%%' OR
- t1.alias LIKE '%%".$stringSearchSQL."%%'";
+ $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR
+ t2.nombre LIKE '".$stringSearchSQL."' OR
+ t1.direccion LIKE '".$stringSearchSQL."' OR
+ t1.comentarios LIKE '".$stringSearchSQL."' OR
+ t1.alias LIKE '".$stringSearchSQL."'";
}
if ($has_secondary === true) {
$search_sql .= " OR (tasg.id_group IS NOT NULL AND
- tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre LIKE '%%".$stringSearchSQL."%%'))";
+ tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre LIKE '".$stringSearchSQL."'))";
}
$sql = "
@@ -164,7 +165,6 @@ if ($searchAgents) {
$totalAgents = db_get_value_sql(
'SELECT COUNT(DISTINCT id_agente) AS agent_count '.$sql
);
- $_SESSION['totalAgents'] = $totalAgents;
}
foreach ($agents as $key => $agent) {
diff --git a/pandora_console/operation/search_agents.php b/pandora_console/operation/search_agents.php
index 5624a34c2c..06af5c822d 100755
--- a/pandora_console/operation/search_agents.php
+++ b/pandora_console/operation/search_agents.php
@@ -44,7 +44,9 @@ try {
];
$tableId = 'agents_search';
+ $stringSearchSQL = $_SESSION['stringSearchSQL'];
+ unset($_SESSION['stringSearchSQL']);
// Load datatables user interface.
ui_print_datatable(
[
diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php
index cd56b3bfbe..0f0285e454 100644
--- a/pandora_console/operation/search_main.php
+++ b/pandora_console/operation/search_main.php
@@ -48,12 +48,83 @@ $table->style[13] = 'font-weight: bold; text-align: left;';
$table->style[14] = 'font-weight: bold; text-align: left;';
$table->style[15] = 'font-weight: bold; text-align: left;';
+// Get total agents.
+$userGroups = users_get_groups($config['id_user'], 'AR', false);
+$id_userGroups = array_keys($userGroups);
+$has_secondary = enterprise_hook('agents_is_using_secondary_groups');
+$stringSearchSQL = str_replace('&', '&', $stringSearchSQL);
+$sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress
+ INNER JOIN taddress_agent ON
+ taddress.id_a = taddress_agent.id_a
+ WHERE taddress.ip LIKE '$stringSearchSQL'";
+
+ $id = db_get_all_rows_sql($sql);
+if ($id != '') {
+ $aux = $id[0]['id_agent'];
+ $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR
+ t2.nombre LIKE '".$stringSearchSQL."' OR
+ t1.alias LIKE '".$stringSearchSQL."' OR
+ t1.comentarios LIKE '".$stringSearchSQL."' OR
+ t1.id_agente =".$aux;
+
+ $idCount = count($id);
+
+ if ($idCount >= 2) {
+ for ($i = 1; $i < $idCount; $i++) {
+ $aux = $id[$i]['id_agent'];
+ $search_sql .= " OR t1.id_agente = $aux";
+ }
+ }
+} else {
+ $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR
+ t2.nombre LIKE '".$stringSearchSQL."' OR
+ t1.direccion LIKE '".$stringSearchSQL."' OR
+ t1.comentarios LIKE '".$stringSearchSQL."' OR
+ t1.alias LIKE '".$stringSearchSQL."'";
+}
+
+if ($has_secondary === true) {
+ $search_sql .= " OR (tasg.id_group IS NOT NULL AND
+ tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre LIKE '".$stringSearchSQL."'))";
+}
+
+$sql = "
+ FROM tagente t1 LEFT JOIN tagent_secondary_group tasg
+ ON t1.id_agente = tasg.id_agent
+ INNER JOIN tgrupo t2
+ ON t2.id_grupo = t1.id_grupo
+ WHERE (
+ 1 = (
+ SELECT is_admin
+ FROM tusuario
+ WHERE id_user = '".$config['id_user']."'
+ )
+ OR (
+ t1.id_grupo IN (".implode(',', $id_userGroups).')
+ OR tasg.id_group IN ('.implode(',', $id_userGroups).")
+ )
+ OR 0 IN (
+ SELECT id_grupo
+ FROM tusuario_perfil
+ WHERE id_usuario = '".$config['id_user']."'
+ AND id_perfil IN (
+ SELECT id_perfil
+ FROM tperfil WHERE agent_view = 1
+ )
+ )
+ )
+ AND (
+ ".$search_sql.'
+ )
+';
+$totalAgents = db_get_value_sql(
+ 'SELECT COUNT(DISTINCT id_agente) AS agent_count '.$sql
+);
$table->data[0][0] = html_print_image('images/agent.png', true, ['title' => __('Agents found'), 'class' => 'invert_filter']);
-$table->data[0][1] = "".sprintf(__('%s Found'), $_SESSION['totalAgents']).'';
-unset($_SESSION['totalAgents']);
+$table->data[0][1] = "".sprintf(__('%s Found'), $totalAgents).'';
$table->data[0][2] = html_print_image('images/module.png', true, ['title' => __('Modules found'), 'class' => 'invert_filter']);
$table->data[0][3] = "".sprintf(__('%s Found'), $totalModules).'';
diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php
index 6ef3a55d15..fa5472ebd9 100644
--- a/pandora_console/operation/search_results.php
+++ b/pandora_console/operation/search_results.php
@@ -36,6 +36,7 @@ foreach ($arrayKeywords as $keyword) {
$stringSearchSQL = implode(' ', $temp);
$stringSearchSQL = str_replace('_', '\_', $stringSearchSQL);
+$_SESSION['stringSearchSQL'] = $stringSearchSQL;
if ($config['search_category'] == 'all') {
$searchTab = 'main';
} else {