removed collation from filtering

This commit is contained in:
fbsanchez 2022-02-04 13:26:03 +01:00
parent a298b25a38
commit e1776d7994
3 changed files with 93 additions and 103 deletions

View File

@ -374,23 +374,6 @@ echo '</form>';
echo '<td>'; echo '<td>';
echo '</tr></table>'; echo '</tr></table>';
$order_collation = '';
switch ($config['dbtype']) {
case 'mysql':
$order_collation = '';
$order_collation = 'COLLATE utf8_general_ci';
break;
case 'postgresql':
case 'oracle':
$order_collation = '';
break;
default:
// Default.
break;
}
$selected = true; $selected = true;
$selectNameUp = false; $selectNameUp = false;
$selectNameDown = false; $selectNameDown = false;
@ -405,7 +388,7 @@ switch ($sortField) {
$selectRemoteUp = $selected; $selectRemoteUp = $selected;
$order = [ $order = [
'field' => 'remote ', 'field' => 'remote ',
'field2' => 'nombre '.$order_collation, 'field2' => 'nombre ',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -414,7 +397,7 @@ switch ($sortField) {
$selectRemoteDown = $selected; $selectRemoteDown = $selected;
$order = [ $order = [
'field' => 'remote ', 'field' => 'remote ',
'field2' => 'nombre '.$order_collation, 'field2' => 'nombre ',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -430,8 +413,8 @@ switch ($sortField) {
case 'up': case 'up':
$selectNameUp = $selected; $selectNameUp = $selected;
$order = [ $order = [
'field' => 'alias '.$order_collation, 'field' => 'alias ',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -439,8 +422,8 @@ switch ($sortField) {
case 'down': case 'down':
$selectNameDown = $selected; $selectNameDown = $selected;
$order = [ $order = [
'field' => 'alias '.$order_collation, 'field' => 'alias ',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -457,7 +440,7 @@ switch ($sortField) {
$selectOsUp = $selected; $selectOsUp = $selected;
$order = [ $order = [
'field' => 'id_os', 'field' => 'id_os',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -466,7 +449,7 @@ switch ($sortField) {
$selectOsDown = $selected; $selectOsDown = $selected;
$order = [ $order = [
'field' => 'id_os', 'field' => 'id_os',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -483,7 +466,7 @@ switch ($sortField) {
$selectGroupUp = $selected; $selectGroupUp = $selected;
$order = [ $order = [
'field' => 'id_grupo', 'field' => 'id_grupo',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -492,7 +475,7 @@ switch ($sortField) {
$selectGroupDown = $selected; $selectGroupDown = $selected;
$order = [ $order = [
'field' => 'id_grupo', 'field' => 'id_grupo',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -511,8 +494,8 @@ switch ($sortField) {
$selectGroupUp = ''; $selectGroupUp = '';
$selectGroupDown = ''; $selectGroupDown = '';
$order = [ $order = [
'field' => 'alias '.$order_collation, 'field' => 'alias ',
'field2' => 'alias '.$order_collation, 'field2' => 'alias ',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -520,30 +503,45 @@ switch ($sortField) {
$search_sql = ''; $search_sql = '';
if ($search != '') { if ($search != '') {
$sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress $sql = sprintf(
'SELECT DISTINCT taddress_agent.id_agent FROM taddress
INNER JOIN taddress_agent ON INNER JOIN taddress_agent ON
taddress.id_a = taddress_agent.id_a taddress.id_a = taddress_agent.id_a
WHERE taddress.ip LIKE '%$search%'"; WHERE taddress.ip LIKE "%%%s%%"',
$search
);
$id = db_get_all_rows_sql($sql); $id = db_get_all_rows_sql($sql);
if ($id != '') { if ($id != '') {
$aux = $id[0]['id_agent']; $aux = $id[0]['id_agent'];
$search_sql = ' AND ( LOWER(nombre) '.$order_collation." $search_sql = sprintf(
LIKE LOWER('%$search%') OR tagente.id_agente = $aux"; ' AND ( `nombre` LIKE "%%%s%%" OR tagente.id_agente = %d',
if (count($id) >= 2) { $search,
for ($i = 1; $i < count($id); $i++) { $aux
);
$nagent_count = count($id);
if ($nagent_count >= 2) {
for ($i = 1; $i < $nagent_count; $i++) {
$aux = $id[$i]['id_agent']; $aux = $id[$i]['id_agent'];
$search_sql .= " OR tagente.id_agente = $aux"; $search_sql .= sprintf(
' OR tagente.id_agente = %d',
$aux
);
} }
} }
$search_sql .= ')'; $search_sql .= ')';
} else { } else {
$search_sql = ' AND ( nombre '.$order_collation." $search_sql = sprintf(
LIKE LOWER('%$search%') OR alias ".$order_collation." ' AND ( nombre
LIKE LOWER('%$search%') OR comentarios ".$order_collation." LIKE LOWER('%$search%') LIKE "%%%s%%" OR alias
OR EXISTS (SELECT * FROM tagent_custom_data LIKE "%%%s%%" OR comentarios LIKE "%%%s%%"
WHERE id_agent = id_agente AND description LIKE '%$search%'))"; OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND description LIKE "%%%s%%")',
$search,
$search,
$search,
$search
);
} }
} }

View File

@ -296,8 +296,8 @@ class Agents
$total = isset($total[0]['total']) ? $total[0]['total'] : 0; $total = isset($total[0]['total']) ? $total[0]['total'] : 0;
$order = [ $order = [
'field' => 'alias COLLATE utf8_general_ci', 'field' => 'alias',
'field2' => 'nombre COLLATE utf8_general_ci', 'field2' => 'nombre',
'order' => 'ASC', 'order' => 'ASC',
]; ];
if (!$system->getConfig('metaconsole')) { if (!$system->getConfig('metaconsole')) {

View File

@ -319,29 +319,14 @@ $selectLastContactUp = false;
$selectLastContactDown = false; $selectLastContactDown = false;
$order = null; $order = null;
$order_collation = '';
switch ($config['dbtype']) {
case 'mysql':
// $order_collation = " COLLATE utf8_general_ci";.
$order_collation = '';
break;
case 'postgresql':
case 'oracle':
$order_collation = '';
break;
}
switch ($sortField) { switch ($sortField) {
case 'remote': case 'remote':
switch ($sort) { switch ($sort) {
case 'up': case 'up':
$selectRemoteUp = $selected; $selectRemoteUp = $selected;
$order = [ $order = [
'field' => 'remote'.$order_collation, 'field' => 'remote',
'field2' => 'nombre'.$order_collation, 'field2' => 'nombre',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -349,8 +334,8 @@ switch ($sortField) {
case 'down': case 'down':
$selectRemoteDown = $selected; $selectRemoteDown = $selected;
$order = [ $order = [
'field' => 'remote'.$order_collation, 'field' => 'remote',
'field2' => 'nombre'.$order_collation, 'field2' => 'nombre',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -366,8 +351,8 @@ switch ($sortField) {
case 'up': case 'up':
$selectNameUp = $selected; $selectNameUp = $selected;
$order = [ $order = [
'field' => 'alias'.$order_collation, 'field' => 'alias',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -375,8 +360,8 @@ switch ($sortField) {
case 'down': case 'down':
$selectNameDown = $selected; $selectNameDown = $selected;
$order = [ $order = [
'field' => 'alias'.$order_collation, 'field' => 'alias',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -393,7 +378,7 @@ switch ($sortField) {
$selectOsUp = $selected; $selectOsUp = $selected;
$order = [ $order = [
'field' => 'id_os', 'field' => 'id_os',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -402,7 +387,7 @@ switch ($sortField) {
$selectOsDown = $selected; $selectOsDown = $selected;
$order = [ $order = [
'field' => 'id_os', 'field' => 'id_os',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -419,7 +404,7 @@ switch ($sortField) {
$selectIntervalUp = $selected; $selectIntervalUp = $selected;
$order = [ $order = [
'field' => 'intervalo', 'field' => 'intervalo',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -428,7 +413,7 @@ switch ($sortField) {
$selectIntervalDown = $selected; $selectIntervalDown = $selected;
$order = [ $order = [
'field' => 'intervalo', 'field' => 'intervalo',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -445,7 +430,7 @@ switch ($sortField) {
$selectGroupUp = $selected; $selectGroupUp = $selected;
$order = [ $order = [
'field' => 'id_grupo', 'field' => 'id_grupo',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -454,7 +439,7 @@ switch ($sortField) {
$selectGroupDown = $selected; $selectGroupDown = $selected;
$order = [ $order = [
'field' => 'id_grupo', 'field' => 'id_grupo',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -471,7 +456,7 @@ switch ($sortField) {
$selectLastContactUp = $selected; $selectLastContactUp = $selected;
$order = [ $order = [
'field' => 'ultimo_contacto', 'field' => 'ultimo_contacto',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -480,7 +465,7 @@ switch ($sortField) {
$selectLastContactDown = $selected; $selectLastContactDown = $selected;
$order = [ $order = [
'field' => 'ultimo_contacto', 'field' => 'ultimo_contacto',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -497,7 +482,7 @@ switch ($sortField) {
$selectDescriptionUp = $selected; $selectDescriptionUp = $selected;
$order = [ $order = [
'field' => 'comentarios', 'field' => 'comentarios',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'DESC', 'order' => 'DESC',
]; ];
break; break;
@ -506,7 +491,7 @@ switch ($sortField) {
$selectDescriptionDown = $selected; $selectDescriptionDown = $selected;
$order = [ $order = [
'field' => 'comentarios', 'field' => 'comentarios',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -531,8 +516,8 @@ switch ($sortField) {
$selectLastContactUp = false; $selectLastContactUp = false;
$selectLastContactDown = false; $selectLastContactDown = false;
$order = [ $order = [
'field' => 'alias'.$order_collation, 'field' => 'alias',
'field2' => 'alias'.$order_collation, 'field2' => 'alias',
'order' => 'ASC', 'order' => 'ASC',
]; ];
break; break;
@ -540,41 +525,48 @@ switch ($sortField) {
$search_sql = ''; $search_sql = '';
if ($search != '') { if ($search != '') {
$sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress $sql = sprintf(
'SELECT DISTINCT taddress_agent.id_agent FROM taddress
INNER JOIN taddress_agent ON INNER JOIN taddress_agent ON
taddress.id_a = taddress_agent.id_a taddress.id_a = taddress_agent.id_a
WHERE taddress.ip LIKE '%$search%'"; WHERE taddress.ip LIKE "%%%s%%"',
$search
);
$id = db_get_all_rows_sql($sql); $id = db_get_all_rows_sql($sql);
if ($id != '') { if ($id != '') {
$aux = $id[0]['id_agent']; $aux = $id[0]['id_agent'];
$search_sql = ' AND ( nombre '.$order_collation." $search_sql = sprintf(
LIKE '%$search%' OR alias ".$order_collation." LIKE '%$search%' ' AND ( `nombre` LIKE "%%%s%%" OR tagente.id_agente = %d',
OR tagente.id_agente = $aux"; $search,
if (count($id) >= 2) { $aux
for ($i = 1; $i < count($id); $i++) { );
$nagent_count = count($id);
if ($nagent_count >= 2) {
for ($i = 1; $i < $nagent_count; $i++) {
$aux = $id[$i]['id_agent']; $aux = $id[$i]['id_agent'];
$search_sql .= " OR tagente.id_agente = $aux"; $search_sql .= sprintf(
' OR tagente.id_agente = %d',
$aux
);
} }
} }
$search_sql .= ')'; $search_sql .= ')';
} else { } else {
$search_sql = ' AND ( nombre '.$order_collation." $search_sql = sprintf(
LIKE '%$search%' ' AND ( nombre
OR comentarios ".$order_collation." LIKE '%$search%' LIKE "%%%s%%" OR alias
OR alias ".$order_collation." LIKE '%$search%') "; LIKE "%%%s%%" OR comentarios LIKE "%%%s%%"
OR EXISTS (SELECT * FROM tagent_custom_data WHERE id_agent = id_agente AND description LIKE "%%%s%%")',
$search,
$search,
$search,
$search
);
} }
} }
if (!empty($search_custom)) {
$search_sql_custom = " AND EXISTS (SELECT * FROM tagent_custom_data
WHERE id_agent = id_agente AND description LIKE '%$search_custom%')";
} else {
$search_sql_custom = '';
}
// Show only selected groups. // Show only selected groups.
if ($group_id > 0) { if ($group_id > 0) {
$groups = [$group_id]; $groups = [$group_id];
@ -655,7 +647,7 @@ if ($strict_user) {
$agents = agents_get_agents( $agents = agents_get_agents(
[ [
'order' => 'nombre '.$order_collation.' ASC', 'order' => 'nombre '.' ASC',
'id_grupo' => $groups, 'id_grupo' => $groups,
'disabled' => 0, 'disabled' => 0,
'status' => $status, 'status' => $status,