1043 lines
36 KiB
PHP
1043 lines
36 KiB
PHP
<?php
|
|
/**
|
|
* Extension to manage a list of gateways and the node address where they should
|
|
* point to.
|
|
*
|
|
* @category Custom fields View
|
|
* @package Pandora FMS
|
|
* @subpackage Community
|
|
* @version 1.0.0
|
|
* @license See below
|
|
*
|
|
* ______ ___ _______ _______ ________
|
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
|
*
|
|
* ============================================================================
|
|
* Copyright (c) 2005-2023 Pandora FMS
|
|
* Please see https://pandorafms.com/community/ for full contribution list
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation for version 2.
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
* ============================================================================
|
|
*/
|
|
|
|
if (check_login()) {
|
|
global $config;
|
|
|
|
include_once $config['homedir'].'/include/functions_agents.php';
|
|
include_once $config['homedir'].'/include/functions_modules.php';
|
|
include_once $config['homedir'].'/include/functions_ui.php';
|
|
include_once $config['homedir'].'/include/functions_custom_fields.php';
|
|
enterprise_include_once('include/functions_metaconsole.php');
|
|
|
|
$get_custom_fields_data = (bool) get_parameter('get_custom_fields_data', 0);
|
|
$build_table_custom_fields = (bool) get_parameter(
|
|
'build_table_custom_fields',
|
|
0
|
|
);
|
|
$build_table_child_custom_fields = (bool) get_parameter(
|
|
'build_table_child_custom_fields',
|
|
0
|
|
);
|
|
$build_table_save_filter = (bool) get_parameter(
|
|
'build_table_save_filter',
|
|
0
|
|
);
|
|
$append_tab_filter = (bool) get_parameter('append_tab_filter', 0);
|
|
$create_filter_cf = (bool) get_parameter('create_filter_cf', 0);
|
|
$update_filter_cf = (bool) get_parameter('update_filter_cf', 0);
|
|
$delete_filter_cf = (bool) get_parameter('delete_filter_cf', 0);
|
|
$change_name_filter = (bool) get_parameter('change_name_filter', 0);
|
|
$check_csv_button = (bool) get_parameter('check_csv_button', 0);
|
|
|
|
if ($check_csv_button) {
|
|
if (check_acl($config['id_user'], 0, 'PM')) {
|
|
echo json_encode($permission);
|
|
return;
|
|
} else {
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
if ($get_custom_fields_data) {
|
|
$name_custom_fields = get_parameter('name_custom_fields', 0);
|
|
$array_custom_fields_data = get_custom_fields_data($name_custom_fields);
|
|
echo json_encode($array_custom_fields_data);
|
|
return;
|
|
}
|
|
|
|
if ($build_table_custom_fields) {
|
|
$order = get_parameter('order', '');
|
|
$length = get_parameter('length', 20);
|
|
$start = get_parameter('start', 0);
|
|
$draw = get_parameter('draw', 0);
|
|
$search = get_parameter('search', '');
|
|
$indexed_descriptions = json_decode(
|
|
io_safe_output(
|
|
get_parameter('indexed_descriptions', '')
|
|
),
|
|
true
|
|
);
|
|
$module_status = get_parameter('module_status');
|
|
$id_status = get_parameter('id_status');
|
|
|
|
// Order query.
|
|
$order_column = $order[0]['column'];
|
|
$type_order = $order[0]['dir'];
|
|
switch ($order_column) {
|
|
default:
|
|
case '1':
|
|
$order_by = 'ORDER BY temp.name_custom_fields '.$type_order;
|
|
break;
|
|
case '4':
|
|
$order_by = 'ORDER BY tma.server_name '.$type_order;
|
|
break;
|
|
|
|
case '2':
|
|
$order_by = 'ORDER BY tma.alias '.$type_order;
|
|
break;
|
|
|
|
case '3':
|
|
$order_by = 'ORDER BY tma.direccion '.$type_order;
|
|
break;
|
|
}
|
|
|
|
// Table temporary for save array in table
|
|
// by order and search custom_field data.
|
|
if (is_metaconsole() === true) {
|
|
$table_temporary = 'CREATE TEMPORARY TABLE temp_custom_fields (
|
|
id_server int(10),
|
|
id_agent int(10),
|
|
name_custom_fields varchar(2048),
|
|
critical_count int,
|
|
warning_count int,
|
|
unknown_count int,
|
|
notinit_count int,
|
|
normal_count int,
|
|
total_count int,
|
|
`status` int(2),
|
|
KEY `data_index_temp_1` (`id_server`, `id_agent`)
|
|
)';
|
|
} else {
|
|
$table_temporary = 'CREATE TEMPORARY TABLE temp_custom_fields (
|
|
id_agent int(10),
|
|
name_custom_fields varchar(2048),
|
|
critical_count int,
|
|
warning_count int,
|
|
unknown_count int,
|
|
notinit_count int,
|
|
normal_count int,
|
|
total_count int,
|
|
`status` int(2),
|
|
KEY `data_index_temp_1` ( `id_agent`)
|
|
)';
|
|
}
|
|
|
|
$resul_tab_temp = db_process_sql($table_temporary);
|
|
|
|
// Insert values array in table temporary.
|
|
$values_insert = [];
|
|
foreach ($indexed_descriptions as $key => $value) {
|
|
if (is_metaconsole() === true) {
|
|
$values_insert[] = '('.$value['id_server'].', '.$value['id_agente'].", '".$value['description']."', '".$value['critical_count']."', '".$value['warning_count']."', '".$value['unknown_count']."', '".$value['notinit_count']."', '".$value['normal_count']."', '".$value['total_count']."', ".$value['status'].')';
|
|
} else {
|
|
$values_insert[] = '('.$value['id_agente'].", '".$value['description']."', '".$value['critical_count']."', '".$value['warning_count']."', '".$value['unknown_count']."', '".$value['notinit_count']."', '".$value['normal_count']."', '".$value['total_count']."', ".$value['status'].')';
|
|
}
|
|
}
|
|
|
|
$values_insert_implode = implode(',', $values_insert);
|
|
$query_insert = 'INSERT INTO temp_custom_fields VALUES '.$values_insert_implode;
|
|
|
|
$result_temp = db_process_sql($query_insert);
|
|
|
|
// Search table for alias, custom field data, server_name, direction.
|
|
$search_query = '';
|
|
if ($search['value'] != '') {
|
|
$search_query = ' AND (tma.alias LIKE "%'.$search['value'].'%"';
|
|
$search_query .= ' OR tma.server_name LIKE "%'.$search['value'].'%"';
|
|
$search_query .= ' OR tma.direccion LIKE "%'.$search['value'].'%"';
|
|
$search_query .= ' OR temp.name_custom_fields LIKE "%'.$search['value'].'%" ) ';
|
|
}
|
|
|
|
// Search for status module.
|
|
$status_agent_search = '';
|
|
if (isset($id_status) === true && is_array($id_status) === true) {
|
|
if (in_array(-1, $id_status) === false) {
|
|
if (in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $id_status) === false) {
|
|
$status_agent_search = ' AND temp.status IN ('.implode(',', $id_status).')';
|
|
} else {
|
|
// Not normal statuses.
|
|
$status_agent_search = ' AND temp.status IN (1,2,3,4,5)';
|
|
}
|
|
}
|
|
}
|
|
|
|
// Search for status module.
|
|
$status_module_search = '';
|
|
if (isset($module_status) === true && is_array($module_status) === true) {
|
|
if (in_array(-1, $module_status) === false) {
|
|
if (in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $module_status) === false) {
|
|
if (count($module_status) > 0) {
|
|
$status_module_search = ' AND ( ';
|
|
foreach ($module_status as $key => $value) {
|
|
$status_module_search .= ($key != 0) ? ' OR (' : ' (';
|
|
switch ($value) {
|
|
default:
|
|
case AGENT_STATUS_NORMAL:
|
|
$status_module_search .= ' temp.normal_count > 0) ';
|
|
break;
|
|
case AGENT_STATUS_CRITICAL:
|
|
$status_module_search .= ' temp.critical_count > 0) ';
|
|
break;
|
|
|
|
case AGENT_STATUS_WARNING:
|
|
$status_module_search .= ' temp.warning_count > 0) ';
|
|
break;
|
|
|
|
case AGENT_STATUS_UNKNOWN:
|
|
$status_module_search .= ' temp.unknown_count > 0) ';
|
|
break;
|
|
|
|
case AGENT_STATUS_NOT_INIT:
|
|
$status_module_search .= ' temp.notinit_count > 0) ';
|
|
break;
|
|
}
|
|
}
|
|
|
|
$status_module_search .= ' ) ';
|
|
}
|
|
} else {
|
|
// Not normal.
|
|
$status_module_search = ' AND ( temp.critical_count > 0 OR temp.warning_count > 0 OR temp.unknown_count > 0 AND temp.notinit_count > 0 )';
|
|
}
|
|
}
|
|
}
|
|
|
|
// Query all fields result.
|
|
if (is_metaconsole() === true) {
|
|
$query = sprintf(
|
|
'SELECT
|
|
tma.id_agente,
|
|
tma.id_tagente,
|
|
tma.id_tmetaconsole_setup,
|
|
tma.alias,
|
|
tma.direccion,
|
|
tma.server_name,
|
|
temp.name_custom_fields,
|
|
temp.status
|
|
FROM tmetaconsole_agent tma
|
|
INNER JOIN temp_custom_fields temp
|
|
ON temp.id_agent = tma.id_tagente
|
|
AND temp.id_server = tma.id_tmetaconsole_setup
|
|
WHERE tma.disabled = 0
|
|
%s
|
|
%s
|
|
%s
|
|
%s
|
|
LIMIT %d OFFSET %d
|
|
',
|
|
$search_query,
|
|
$status_agent_search,
|
|
$status_module_search,
|
|
$order_by,
|
|
$length,
|
|
$start
|
|
);
|
|
} else {
|
|
$query = sprintf(
|
|
'SELECT
|
|
tma.id_agente,
|
|
tma.alias,
|
|
tma.direccion,
|
|
tma.server_name,
|
|
temp.name_custom_fields,
|
|
temp.status
|
|
FROM tagente as tma
|
|
INNER JOIN temp_custom_fields temp
|
|
ON temp.id_agent = tma.id_agente
|
|
WHERE tma.disabled = 0
|
|
%s
|
|
%s
|
|
%s
|
|
%s
|
|
LIMIT %d OFFSET %d
|
|
',
|
|
$search_query,
|
|
$status_agent_search,
|
|
$status_module_search,
|
|
$order_by,
|
|
$length,
|
|
$start
|
|
);
|
|
}
|
|
|
|
$result = db_get_all_rows_sql($query);
|
|
// Query count.
|
|
if (is_metaconsole() === true) {
|
|
$query_count = sprintf(
|
|
'SELECT
|
|
COUNT(tma.id_agente) AS `count`
|
|
FROM tmetaconsole_agent tma
|
|
INNER JOIN temp_custom_fields temp
|
|
ON temp.id_agent = tma.id_tagente
|
|
AND temp.id_server = tma.id_tmetaconsole_setup
|
|
WHERE tma.disabled = 0
|
|
%s
|
|
%s
|
|
%s
|
|
',
|
|
$search_query,
|
|
$status_agent_search,
|
|
$status_module_search
|
|
);
|
|
} else {
|
|
$query_count = sprintf(
|
|
'SELECT
|
|
COUNT(tma.id_agente) AS `count`
|
|
FROM tagente tma
|
|
INNER JOIN temp_custom_fields temp
|
|
ON temp.id_agent = tma.id_agente
|
|
WHERE tma.disabled = 0
|
|
%s
|
|
%s
|
|
%s
|
|
',
|
|
$search_query,
|
|
$status_agent_search,
|
|
$status_module_search
|
|
);
|
|
}
|
|
|
|
$count = db_get_sql($query_count);
|
|
// For link nodes.
|
|
if (is_metaconsole() === true) {
|
|
$array_nodes = metaconsole_get_connections();
|
|
}
|
|
|
|
if (isset($array_nodes) && is_array($array_nodes)) {
|
|
$hash_array_nodes = [];
|
|
foreach ($array_nodes as $key => $server) {
|
|
$pwd = $server['auth_token'];
|
|
$auth_serialized = json_decode($pwd, true);
|
|
|
|
if (is_array($auth_serialized)) {
|
|
$pwd = $auth_serialized['auth_token'];
|
|
$api_password = $auth_serialized['api_password'];
|
|
$console_user = $auth_serialized['console_user'];
|
|
$console_password = $auth_serialized['console_password'];
|
|
}
|
|
|
|
$user = $config['id_user'];
|
|
$user_rot13 = str_rot13($config['id_user']);
|
|
$hashdata = $user.$pwd;
|
|
$hashdata = md5($hashdata);
|
|
$url_hash = '&loginhash=auto&loginhash_data='.$hashdata.'&loginhash_user='.$user_rot13;
|
|
|
|
$hash_array_nodes[$server['id']]['hashurl'] = $url_hash;
|
|
$hash_array_nodes[$server['id']]['server_url'] = $server['server_url'];
|
|
}
|
|
}
|
|
|
|
// Prepare rows for table dinamic.
|
|
$data = [];
|
|
foreach ($result as $values) {
|
|
$image_status = agents_get_image_status($values['status']);
|
|
// Link nodes.
|
|
if (is_metaconsole() === true) {
|
|
$agent_link = '<a href="'.$hash_array_nodes[$values['id_tmetaconsole_setup']]['server_url'].'/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$values['id_tagente'].$hash_array_nodes[$values['id_tmetaconsole_setup']]['hashurl'].'">';
|
|
$agent_alias = ui_print_truncate_text(
|
|
$values['alias'],
|
|
'agent_small',
|
|
false,
|
|
true,
|
|
true,
|
|
'[…]',
|
|
'font-size:7.5pt;'
|
|
);
|
|
} else {
|
|
$agent_link = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$values['id_agente'].'"/>';
|
|
$agent_alias = $values['alias'];
|
|
}
|
|
|
|
|
|
|
|
if (can_user_access_node()) {
|
|
$agent = $agent_link.'<b>'.$agent_alias.'</b></a>';
|
|
} else {
|
|
$agent = $agent_alias;
|
|
}
|
|
|
|
if (is_metaconsole() === false) {
|
|
$values['id_tagente'] = $values['id_agente'];
|
|
$values['id_tmetaconsole_setup'] = 1;
|
|
}
|
|
|
|
$data[] = [
|
|
'ref' => $referencia,
|
|
'data_custom_field' => ui_bbcode_to_html($values['name_custom_fields']),
|
|
'server' => $values['server_name'],
|
|
'agent' => $agent,
|
|
'IP' => $values['direccion'],
|
|
'status' => "<div id='reload_status_agent_".$values['id_tmetaconsole_setup'].'_'.$values['id_tagente']."'>".$image_status.'</div>',
|
|
'id_agent' => $values['id_tagente'],
|
|
'id_server' => $values['id_tmetaconsole_setup'],
|
|
'status_value' => $values['status'],
|
|
];
|
|
}
|
|
|
|
$result = [
|
|
'draw' => $draw,
|
|
'recordsTotal' => count($data),
|
|
'recordsFiltered' => $count,
|
|
'data' => $data,
|
|
];
|
|
echo json_encode($result);
|
|
return;
|
|
}
|
|
|
|
if ($build_table_child_custom_fields) {
|
|
$id_agent = get_parameter('id_agent', 0);
|
|
$id_server = get_parameter('id_server', 0);
|
|
$module_search = str_replace('amp;', '', get_parameter('module_search', ''));
|
|
$module_status = get_parameter('module_status', 0);
|
|
|
|
if (!$id_server || !$id_agent) {
|
|
return false;
|
|
}
|
|
|
|
if ($module_search != '') {
|
|
$name_where = " AND tam.nombre LIKE '%".$module_search."%'";
|
|
}
|
|
|
|
// Filter by status module.
|
|
$and_module_status = '';
|
|
if (is_array($module_status)) {
|
|
if (!in_array(-1, $module_status)) {
|
|
if (!in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $module_status)) {
|
|
if (count($module_status) > 0) {
|
|
$and_module_status = ' AND ( ';
|
|
foreach ($module_status as $key => $value) {
|
|
$and_module_status .= ($key != 0) ? ' OR (' : ' (';
|
|
switch ($value) {
|
|
default:
|
|
case AGENT_STATUS_NORMAL:
|
|
$and_module_status .= ' tae.estado = 0 OR tae.estado = 300 ) ';
|
|
break;
|
|
case AGENT_STATUS_CRITICAL:
|
|
$and_module_status .= ' tae.estado = 1 OR tae.estado = 100 ) ';
|
|
break;
|
|
|
|
case AGENT_STATUS_WARNING:
|
|
$and_module_status .= ' tae.estado = 2 OR tae.estado = 200 ) ';
|
|
break;
|
|
|
|
case AGENT_STATUS_UNKNOWN:
|
|
$and_module_status .= ' tae.estado = 3 ) ';
|
|
break;
|
|
|
|
case AGENT_STATUS_NOT_INIT:
|
|
$and_module_status .= ' tae.estado = 4 OR tae.estado = 5 ) ';
|
|
break;
|
|
}
|
|
}
|
|
|
|
$and_module_status .= ' ) ';
|
|
}
|
|
} else {
|
|
// Not normal.
|
|
$and_module_status = 'AND tae.estado <> 0 AND tae.estado <> 300 ';
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_metaconsole()) {
|
|
$server = metaconsole_get_connection_by_id($id_server);
|
|
metaconsole_connect($server);
|
|
}
|
|
|
|
$query = sprintf(
|
|
'SELECT tam.nombre,
|
|
tam.min_warning, tam.max_warning,
|
|
tam.min_critical, tam.max_critical,
|
|
tam.str_warning, tam.str_critical,
|
|
tam.id_tipo_modulo,
|
|
tae.estado, tae.current_interval,
|
|
tae.utimestamp, tae.datos
|
|
FROM tagente_modulo tam
|
|
INNER JOIN tagente_estado tae
|
|
ON tam.id_agente_modulo = tae.id_agente_modulo
|
|
WHERE tam.id_agente = %d
|
|
%s %s',
|
|
$id_agent,
|
|
$name_where,
|
|
$and_module_status
|
|
);
|
|
|
|
$modules = db_get_all_rows_sql($query);
|
|
|
|
$table_modules = new stdClass();
|
|
$table_modules->width = '100%';
|
|
$table_modules->class = 'databox data custom_field_data';
|
|
|
|
$table_modules->head = [];
|
|
$table_modules->head[0] = __('Module name');
|
|
$table_modules->head[1] = __('Data');
|
|
$table_modules->head[2] = __('Threshold');
|
|
$table_modules->head[3] = __('Current interval');
|
|
$table_modules->head[4] = __('Timestamp');
|
|
$table_modules->head[5] = __('Status');
|
|
|
|
$table_modules->data = [];
|
|
|
|
if (isset($modules) && is_array($modules)) {
|
|
foreach ($modules as $key => $value) {
|
|
$table_modules->data[$key][0] = $value['nombre'];
|
|
if ($value['id_tipo_modulo'] != 3
|
|
&& $value['id_tipo_modulo'] != 10
|
|
&& $value['id_tipo_modulo'] != 17
|
|
&& $value['id_tipo_modulo'] != 23
|
|
&& $value['id_tipo_modulo'] != 33
|
|
) {
|
|
$table_modules->data[$key][1] = remove_right_zeros(
|
|
number_format(
|
|
$value['datos'],
|
|
$config['graph_precision'],
|
|
$config['decimal_separator'],
|
|
$config['thousand_separator']
|
|
)
|
|
);
|
|
} else {
|
|
$table_modules->data[$key][1] = $value['datos'];
|
|
}
|
|
|
|
$table_modules->data[$key][2] = ui_print_module_warn_value(
|
|
$value['max_warning'],
|
|
$value['min_warning'],
|
|
$value['str_warning'],
|
|
$value['max_critical'],
|
|
$value['min_critical'],
|
|
$value['str_critical']
|
|
);
|
|
|
|
$table_modules->data[$key][3] = $value['current_interval'];
|
|
$table_modules->data[$key][4] = ui_print_timestamp(
|
|
$value['utimestamp'],
|
|
true
|
|
);
|
|
switch ($value['estado']) {
|
|
case 0:
|
|
case 300:
|
|
$table_modules->data[$key][5] = html_print_image(
|
|
'images/status_sets/default/severity_normal.png',
|
|
true,
|
|
[
|
|
'title' => __('Modules normal'),
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 1:
|
|
case 100:
|
|
$table_modules->data[$key][5] = html_print_image(
|
|
'images/status_sets/default/severity_critical.png',
|
|
true,
|
|
[
|
|
'title' => __('Modules critical'),
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 2:
|
|
case 200:
|
|
$table_modules->data[$key][5] = html_print_image(
|
|
'images/status_sets/default/severity_warning.png',
|
|
true,
|
|
[
|
|
'title' => __('Modules warning'),
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 3:
|
|
$table_modules->data[$key][5] = html_print_image(
|
|
'images/status_sets/default/severity_maintenance.png',
|
|
true,
|
|
[
|
|
'title' => __('Modules unknown'),
|
|
]
|
|
);
|
|
break;
|
|
|
|
case 4:
|
|
case 5:
|
|
$table_modules->data[$key][5] = html_print_image(
|
|
'images/status_sets/default/severity_informational.png',
|
|
true,
|
|
[
|
|
'title' => __('Modules no init'),
|
|
]
|
|
);
|
|
break;
|
|
|
|
default:
|
|
$table_modules->data[$key][5] = html_print_image(
|
|
'images/status_sets/default/severity_normal.png',
|
|
true,
|
|
[
|
|
'title' => __('Modules normal'),
|
|
]
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Status agents from tagente.
|
|
$sql_info_agents = 'SELECT * fROM tagente WHERE id_agente ='.$id_agent;
|
|
$info_agents = db_get_row_sql($sql_info_agents);
|
|
$status_agent = agents_get_status_from_counts($info_agents);
|
|
|
|
if (is_metaconsole()) {
|
|
metaconsole_restore_db();
|
|
}
|
|
|
|
$data['modules_table'] = html_print_table($table_modules, true);
|
|
$data['img_status_agent'] = agents_get_image_status($status_agent);
|
|
echo json_encode($data);
|
|
return;
|
|
}
|
|
|
|
if ($build_table_save_filter) {
|
|
$type_form = get_parameter('type_form', '');
|
|
|
|
if ($type_form == 'save') {
|
|
$tabs = '<div id="tabs" class="height_95p">';
|
|
$tabs .= "<ul class='tab_save_filter'>";
|
|
$tabs .= '<li>';
|
|
$tabs .= "<a href='#extended_create_filter' id='link_create'>";
|
|
$tabs .= html_print_image('images/lightning_go.png', true);
|
|
$tabs .= '<span>'.__('New Filter').'</span>';
|
|
$tabs .= '</a>';
|
|
$tabs .= '</li>';
|
|
|
|
$tabs .= '<li>';
|
|
$tabs .= "<a href='#extended_update_filter' id='link_update'>";
|
|
$tabs .= html_print_image('images/zoom.png', true);
|
|
$tabs .= '<span>'.__('Existing Filter').'</span>';
|
|
$tabs .= '</a>';
|
|
$tabs .= '</li>';
|
|
$tabs .= '</ul>';
|
|
|
|
$tabs .= '<div id="extended_create_filter">';
|
|
$tabs .= '</div>';
|
|
$tabs .= '<div id="extended_update_filter">';
|
|
$tabs .= '</div>';
|
|
$tabs .= '</div>';
|
|
echo $tabs;
|
|
} else {
|
|
$table = new StdClass;
|
|
$table->id = 'save_filter_form';
|
|
$table->width = '100%';
|
|
$table->class = 'databox';
|
|
|
|
$array_filters = get_filters_custom_fields_view(0, true);
|
|
|
|
$table->data[0][0] = __('Filter name');
|
|
$table->data[0][1] = html_print_select(
|
|
$array_filters,
|
|
'id_name',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
true,
|
|
false,
|
|
true,
|
|
'',
|
|
false
|
|
);
|
|
|
|
$table->data[0][3] = html_print_submit_button(
|
|
__('Load filter'),
|
|
'load_filter',
|
|
false,
|
|
[
|
|
'icon' => 'search',
|
|
'class' => 'sub upd',
|
|
'onclick' => 'load_filter()',
|
|
],
|
|
true
|
|
);
|
|
|
|
echo "<form action='' method='post'>";
|
|
html_print_table($table);
|
|
echo '</form>';
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if ($append_tab_filter) {
|
|
$filters = json_decode(
|
|
io_safe_output(
|
|
get_parameter('filters', '')
|
|
),
|
|
true
|
|
);
|
|
$table = new StdClass;
|
|
$table->id = 'save_filter_form';
|
|
$table->width = '100%';
|
|
$table->class = 'databox';
|
|
$table->rowspan = [];
|
|
$table->style = [];
|
|
$table->cellstyle[0][0] = 'display: grid';
|
|
$table->cellstyle[0][1] = 'display: grid';
|
|
|
|
if ($filters['id'] == 'extended_create_filter') {
|
|
echo "<div id='msg_error_create'></div>";
|
|
$table->data[0][0] = __('Filter name');
|
|
$table->data[0][1] = html_print_input_text(
|
|
'id_name',
|
|
'',
|
|
'',
|
|
15,
|
|
255,
|
|
true,
|
|
);
|
|
|
|
$table->data[1][0] = __('Group');
|
|
$table->data[1][1] = html_print_select_groups(
|
|
$config['id_user'],
|
|
'AR',
|
|
true,
|
|
'group_search_cr',
|
|
0,
|
|
'',
|
|
'',
|
|
'0',
|
|
true,
|
|
false,
|
|
false,
|
|
'',
|
|
false,
|
|
'width:180px;',
|
|
false,
|
|
false,
|
|
'id_grupo',
|
|
false
|
|
);
|
|
|
|
$table->rowspan[0][2] = 2;
|
|
|
|
$table->data[0][2] = html_print_submit_button(
|
|
__('Create filter'),
|
|
'create_filter',
|
|
false,
|
|
[
|
|
'icon' => 'search',
|
|
'class' => 'sub upd',
|
|
'onclick' => 'create_filter()',
|
|
],
|
|
true
|
|
);
|
|
} else {
|
|
echo "<div id='msg_error_update'></div>";
|
|
echo "<div id='msg_error_delete'></div>";
|
|
$array_filters = get_filters_custom_fields_view(0, true);
|
|
$table->data[0][0] = __('Filter name');
|
|
$table->data[0][1] = html_print_select(
|
|
$array_filters,
|
|
'id_name',
|
|
'',
|
|
'filter_name_change_group(this.value)',
|
|
__('None'),
|
|
-1,
|
|
true,
|
|
false,
|
|
true,
|
|
'',
|
|
false
|
|
);
|
|
|
|
$table->data[1][0] = __('Group');
|
|
$table->data[1][1] = html_print_select_groups(
|
|
$config['id_user'],
|
|
'AR',
|
|
true,
|
|
'group_search_up',
|
|
$group,
|
|
'',
|
|
'',
|
|
'0',
|
|
true,
|
|
false,
|
|
false,
|
|
'',
|
|
false,
|
|
'width:180px;',
|
|
false,
|
|
false,
|
|
'id_grupo',
|
|
false
|
|
);
|
|
|
|
$table->data[0][2] = html_print_submit_button(
|
|
__('Delete filter'),
|
|
'delete_filter',
|
|
false,
|
|
[
|
|
'icon' => 'delete',
|
|
'class' => 'sub upd',
|
|
'onclick' => 'delete_filter()',
|
|
],
|
|
true
|
|
);
|
|
|
|
$table->data[1][2] = html_print_submit_button(
|
|
__('Update filter'),
|
|
'update_filter',
|
|
false,
|
|
[
|
|
'icon' => 'update',
|
|
'class' => 'sub upd',
|
|
'onclick' => 'update_filter()',
|
|
],
|
|
true
|
|
);
|
|
}
|
|
|
|
html_print_table($table);
|
|
return;
|
|
}
|
|
|
|
if ($create_filter_cf) {
|
|
// Initialize result.
|
|
$result_array = [];
|
|
$result_array['error'] = 0;
|
|
$result_array['msg'] = '';
|
|
|
|
// Initialize vars.
|
|
$filters = json_decode(
|
|
io_safe_output(get_parameter('filters', '')),
|
|
true
|
|
);
|
|
$name_filter = get_parameter('name_filter', '');
|
|
$group_search = get_parameter('group_search', 0);
|
|
|
|
// Check that the name is not empty.
|
|
if ($name_filter == '') {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('The name must not be empty'),
|
|
'',
|
|
true
|
|
);
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
$name_exists = get_filters_custom_fields_view(0, false, $name_filter);
|
|
|
|
if ($name_exists) {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('Filter name already exists in the bbdd'),
|
|
'',
|
|
true
|
|
);
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
// Check custom field is not empty.
|
|
if ($filters['id_custom_fields'] == '') {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('Please, select a custom field'),
|
|
'',
|
|
true
|
|
);
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
// Insert.
|
|
$values = [];
|
|
$values['name'] = $name_filter;
|
|
$values['group_search'] = $group_search;
|
|
$values['id_group'] = $filters['group'];
|
|
$values['id_custom_field'] = $filters['id_custom_fields'];
|
|
$values['id_custom_fields_data'] = json_encode(
|
|
$filters['id_custom_fields_data']
|
|
);
|
|
$values['id_status'] = json_encode($filters['id_status']);
|
|
$values['module_search'] = $filters['module_search'];
|
|
$values['module_status'] = json_encode($filters['module_status']);
|
|
$values['recursion'] = $filters['recursion'];
|
|
|
|
$insert = db_process_sql_insert('tagent_custom_fields_filter', $values);
|
|
|
|
// Check error insert.
|
|
if ($insert) {
|
|
$result_array['error'] = 0;
|
|
$result_array['msg'] = ui_print_success_message(
|
|
__('Success create filter.'),
|
|
'',
|
|
true
|
|
);
|
|
} else {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('Error create filter.'),
|
|
'',
|
|
true
|
|
);
|
|
}
|
|
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
if ($update_filter_cf) {
|
|
// Initialize result.
|
|
$result_array = [];
|
|
$result_array['error'] = 0;
|
|
$result_array['msg'] = '';
|
|
|
|
// Initialize vars.
|
|
$filters = json_decode(io_safe_output(get_parameter('filters', '')), true);
|
|
$id_filter = get_parameter('id_filter', '');
|
|
$group_search = get_parameter('group_search', 0);
|
|
|
|
// Check selected filter.
|
|
if ($id_filter == -1) {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('please, select a filter'),
|
|
'',
|
|
true
|
|
);
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
// Array condition update.
|
|
$condition = [];
|
|
$condition['id'] = $id_filter;
|
|
|
|
// Check selected custom fields.
|
|
if ($filters['id_custom_fields'] == '') {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('please, select a custom field'),
|
|
'',
|
|
true
|
|
);
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
// Array values update.
|
|
$values = [];
|
|
$values['id_group'] = $filters['group'];
|
|
$values['group_search'] = $group_search;
|
|
$values['id_custom_field'] = $filters['id_custom_fields'];
|
|
$values['id_custom_fields_data'] = json_encode($filters['id_custom_fields_data']);
|
|
$values['id_status'] = json_encode($filters['id_status']);
|
|
$values['module_search'] = $filters['module_search'];
|
|
$values['module_status'] = json_encode($filters['module_status']);
|
|
$values['recursion'] = $filters['recursion'];
|
|
|
|
// Update.
|
|
$update = db_process_sql_update('tagent_custom_fields_filter', $values, $condition);
|
|
|
|
// Check error insert.
|
|
if ($update) {
|
|
$result_array['error'] = 0;
|
|
$result_array['msg'] = ui_print_success_message(
|
|
__('Success update filter.'),
|
|
'',
|
|
true
|
|
);
|
|
} else {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('Error update filter.'),
|
|
'',
|
|
true
|
|
);
|
|
}
|
|
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
if ($delete_filter_cf) {
|
|
// Initialize result.
|
|
$result_array = [];
|
|
$result_array['error'] = 0;
|
|
$result_array['msg'] = '';
|
|
|
|
// Initialize vars.
|
|
$filters = json_decode(io_safe_output(get_parameter('filters', '')), true);
|
|
$id_filter = get_parameter('id_filter', '');
|
|
|
|
// Check selected filter.
|
|
if ($id_filter == -1) {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('please, select a filter'),
|
|
'',
|
|
true
|
|
);
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
// Array condition update.
|
|
$condition = [];
|
|
$condition['id'] = $id_filter;
|
|
|
|
// Delete.
|
|
$delete = db_process_sql_delete('tagent_custom_fields_filter', $condition);
|
|
|
|
// Check error insert.
|
|
if ($delete) {
|
|
$result_array['error'] = 0;
|
|
$result_array['msg'] = ui_print_success_message(
|
|
__('Success delete filter.'),
|
|
'',
|
|
true
|
|
);
|
|
} else {
|
|
$result_array['error'] = 1;
|
|
$result_array['msg'] = ui_print_error_message(
|
|
__('Error delete filter.'),
|
|
'',
|
|
true
|
|
);
|
|
}
|
|
|
|
echo json_encode($result_array);
|
|
return;
|
|
}
|
|
|
|
if ($change_name_filter) {
|
|
$id_filter = get_parameter('id_filter', 0);
|
|
if (isset($id_filter)) {
|
|
$res = get_group_filter_custom_field_view($id_filter);
|
|
echo json_encode($res);
|
|
return;
|
|
}
|
|
|
|
return json_encode(false);
|
|
}
|
|
}
|