Merge branch 'ent-5785-Nuevo-informe-inventario-de-agentes' into 'develop'
Added new item type in reports See merge request artica/pandorafms!4133
This commit is contained in:
commit
90a5a1c1a3
|
@ -62,6 +62,20 @@ $show_sort_options = [];
|
|||
$show_sort_options[1] = __('Ascending');
|
||||
$show_sort_options[2] = __('Descending');
|
||||
|
||||
// Agents inventory display options.
|
||||
$agents_inventory_display_options = [];
|
||||
$agents_inventory_display_options['alias'] = __('Alias');
|
||||
$agents_inventory_display_options['direccion'] = __('IP');
|
||||
$agents_inventory_display_options['id_os'] = __('OS');
|
||||
$agents_inventory_display_options['id_grupo'] = __('Group');
|
||||
$agents_inventory_display_options['secondary_groups'] = __('Secondary groups');
|
||||
$agents_inventory_display_options['comentarios'] = __('Description');
|
||||
$agents_inventory_display_options['url_address'] = __('URL');
|
||||
$agents_inventory_display_options['custom_fields'] = __('Custom fields');
|
||||
$agents_inventory_display_options['estado'] = __('Status');
|
||||
$agents_inventory_display_options['agent_version'] = __('Version');
|
||||
$agents_inventory_display_options['remote'] = __('Remote configuration');
|
||||
|
||||
enterprise_include('/godmode/reporting/reporting_builder.item_editor.php');
|
||||
require_once $config['homedir'].'/include/functions_agents.php';
|
||||
if (enterprise_include_once('include/functions_metaconsole.php')) {
|
||||
|
@ -725,6 +739,25 @@ switch ($action) {
|
|||
$idAgentModule = $module;
|
||||
break;
|
||||
|
||||
case 'agents_inventory':
|
||||
$description = $item['description'];
|
||||
$es = json_decode($item['external_source'], true);
|
||||
|
||||
$date = $es['date'];
|
||||
$selected_agent_server_filter = $es['agent_server_filter'];
|
||||
$selected_agent_group_filter = $es['agent_group_filter'];
|
||||
$selected_agents_inventory_display_options = $es['agents_inventory_display_options'];
|
||||
$selected_agent_os_filter = $es['agent_os_filter'];
|
||||
$selected_agent_custom_field_filter = $es['agent_custom_field_filter'];
|
||||
$selected_agent_status_filter = $es['agent_status_filter'];
|
||||
$selected_agent_module_search_filter = $es['agent_module_search_filter'];
|
||||
$selected_agent_version_filter = $es['agent_version_filter'];
|
||||
$selected_agent_remote = $es['agent_remote_conf'];
|
||||
|
||||
$idAgent = $es['id_agents'];
|
||||
$idAgentModule = $inventory_modules;
|
||||
break;
|
||||
|
||||
case 'inventory':
|
||||
$description = $item['description'];
|
||||
$es = json_decode($item['external_source'], true);
|
||||
|
@ -3020,6 +3053,232 @@ $class = 'databox filters';
|
|||
<td><?php html_print_checkbox_switch('pagebreak', 1, $pagebreak); ?></td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_agents_inventory_display_options" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Display options');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
html_print_select(
|
||||
$agents_inventory_display_options,
|
||||
'agents_inventory_display_options[]',
|
||||
$selected_agents_inventory_display_options,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'width:200px'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
$server_fields = [];
|
||||
$server_fields[0] = __('All');
|
||||
|
||||
$servers = metaconsole_get_servers();
|
||||
|
||||
foreach ($servers as $key => $server) {
|
||||
$server_fields[$key] = $server['server_name'];
|
||||
}
|
||||
|
||||
$server_filter_markup = '
|
||||
<tr id="row_agent_server_filter" class="datos">
|
||||
<td class="bolder">'.__('Server').'</td><td>'.html_print_select(
|
||||
$server_fields,
|
||||
'agent_server_filter',
|
||||
$selected_agent_server_filter,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'min-width: 180px'
|
||||
).'</td></tr>';
|
||||
|
||||
if (is_metaconsole()) {
|
||||
echo $server_filter_markup;
|
||||
}
|
||||
?>
|
||||
|
||||
<tr id="row_agent_group_filter" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent group filter');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'RW',
|
||||
true,
|
||||
'agent_group_filter',
|
||||
$selected_agent_group_filter,
|
||||
''
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_os" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent OS filter');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
if ($selected_agent_os_filter === null) {
|
||||
$selected_agent_os_filter = 0;
|
||||
}
|
||||
|
||||
html_print_select_from_sql(
|
||||
'SELECT id_os, name FROM tconfig_os',
|
||||
'agent_os_filter[]',
|
||||
$selected_agent_os_filter,
|
||||
'',
|
||||
__('All'),
|
||||
'0',
|
||||
false,
|
||||
true
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_custom_field" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent custom field filter');
|
||||
?>
|
||||
</td>
|
||||
<td >
|
||||
<?php
|
||||
echo html_print_input_text(
|
||||
'agent_custom_field_filter',
|
||||
$selected_agent_custom_field_filter,
|
||||
'',
|
||||
50,
|
||||
255,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
'fullwidth'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_agent_status" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent status filter');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
$fields = [];
|
||||
$fields[AGENT_STATUS_NORMAL] = __('Normal');
|
||||
$fields[AGENT_STATUS_WARNING] = __('Warning');
|
||||
$fields[AGENT_STATUS_CRITICAL] = __('Critical');
|
||||
$fields[AGENT_STATUS_UNKNOWN] = __('Unknown');
|
||||
$fields[AGENT_STATUS_NOT_NORMAL] = __('Not normal');
|
||||
$fields[AGENT_STATUS_NOT_INIT] = __('Not init');
|
||||
|
||||
if ($selected_agent_status_filter === null) {
|
||||
$selected_agent_status_filter = -1;
|
||||
}
|
||||
|
||||
html_print_select(
|
||||
$fields,
|
||||
'agent_status_filter[]',
|
||||
$selected_agent_status_filter,
|
||||
'',
|
||||
__('All'),
|
||||
'-1',
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'min-width: 180px'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_agent_version" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent version filter');
|
||||
?>
|
||||
</td>
|
||||
<td >
|
||||
<?php
|
||||
echo html_print_input_text(
|
||||
'agent_version_filter',
|
||||
$selected_agent_version_filter,
|
||||
'',
|
||||
50,
|
||||
255,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
'fullwidth'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_agent_remote_conf" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent has remote configuration').ui_print_help_tip(
|
||||
__('Filter agents by remote configuration enabled.'),
|
||||
true
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
<td><?php html_print_checkbox_switch('agent_remote_conf', 1, $selected_agent_remote); ?></td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_module_free_search" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Agent module filter');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo html_print_input_text(
|
||||
'agent_module_search_filter',
|
||||
$selected_agent_module_search_filter,
|
||||
'',
|
||||
50,
|
||||
255,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
'fullwidth'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@ -5223,6 +5482,15 @@ function chooseType() {
|
|||
$("#row_users").hide();
|
||||
$("#row_profiles_group").hide();
|
||||
$("#row_select_by_group").hide();
|
||||
$("#row_agents_inventory_display_options").hide();
|
||||
$("#row_agent_server_filter").hide();
|
||||
$("#row_agent_group_filter").hide();
|
||||
$("#row_os").hide();
|
||||
$("#row_custom_field").hide();
|
||||
$("#row_agent_status").hide();
|
||||
$("#row_agent_version").hide();
|
||||
$("#row_agent_remote_conf").hide();
|
||||
$("#row_module_free_search").hide();
|
||||
|
||||
|
||||
// SLA list default state.
|
||||
|
@ -5764,6 +6032,20 @@ function chooseType() {
|
|||
|
||||
break;
|
||||
|
||||
case 'agents_inventory':
|
||||
$("#row_agents_inventory_display_options").show();
|
||||
$("#row_agent_server_filter").show();
|
||||
$("#row_agent_group_filter").show();
|
||||
$("#row_group").show();
|
||||
$("#row_os").show();
|
||||
$("#row_custom_field").show();
|
||||
$("#row_agent_status").show();
|
||||
$("#row_agent_version").show();
|
||||
$("#row_agent_remote_conf").show();
|
||||
$("#row_module_free_search").show();
|
||||
|
||||
break;
|
||||
|
||||
case 'inventory':
|
||||
$("#row_description").show();
|
||||
$("#row_group").show();
|
||||
|
|
|
@ -2107,6 +2107,20 @@ switch ($action) {
|
|||
$values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
case 'agents_inventory':
|
||||
$es['agent_server_filter'] = get_parameter('agent_server_filter');
|
||||
$es['agents_inventory_display_options'] = get_parameter('agents_inventory_display_options');
|
||||
$es['agent_custom_field_filter'] = get_parameter('agent_custom_field_filter');
|
||||
$es['agent_os_filter'] = get_parameter('agent_os_filter');
|
||||
$es['agent_status_filter'] = get_parameter('agent_status_filter');
|
||||
$es['agent_version_filter'] = get_parameter('agent_version_filter');
|
||||
$es['agent_module_search_filter'] = get_parameter('agent_module_search_filter');
|
||||
$es['agent_group_filter'] = get_parameter('agent_group_filter');
|
||||
$es['agent_remote_conf'] = get_parameter('agent_remote_conf');
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Default.
|
||||
break;
|
||||
|
@ -2732,6 +2746,20 @@ switch ($action) {
|
|||
$values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
case 'agents_inventory':
|
||||
$es['agent_server_filter'] = get_parameter('agent_server_filter');
|
||||
$es['agents_inventory_display_options'] = get_parameter('agents_inventory_display_options');
|
||||
$es['agent_custom_field_filter'] = get_parameter('agent_custom_field_filter');
|
||||
$es['agent_os_filter'] = get_parameter('agent_os_filter');
|
||||
$es['agent_status_filter'] = get_parameter('agent_status_filter');
|
||||
$es['agent_version_filter'] = get_parameter('agent_version_filter');
|
||||
$es['agent_module_search_filter'] = get_parameter('agent_module_search_filter');
|
||||
$es['agent_group_filter'] = get_parameter('agent_group_filter');
|
||||
$es['agent_remote_conf'] = get_parameter('agent_remote_conf');
|
||||
|
||||
$values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Default.
|
||||
break;
|
||||
|
|
|
@ -734,6 +734,13 @@ function reporting_make_reporting_data(
|
|||
);
|
||||
break;
|
||||
|
||||
case 'agents_inventory':
|
||||
$report['contents'][] = reporting_agents_inventory(
|
||||
$report,
|
||||
$content
|
||||
);
|
||||
break;
|
||||
|
||||
case 'inventory':
|
||||
$report['contents'][] = reporting_inventory(
|
||||
$report,
|
||||
|
@ -2253,6 +2260,184 @@ function reporting_event_report_module(
|
|||
}
|
||||
|
||||
|
||||
function reporting_agents_inventory($report, $content)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$return['name'] = $content['name'];
|
||||
$return['type'] = 'agents_inventory';
|
||||
$return['title'] = $content['name'];
|
||||
$return['landscape'] = $content['landscape'];
|
||||
$return['pagebreak'] = $content['pagebreak'];
|
||||
$return['description'] = $content['description'];
|
||||
$return['date'] = reporting_get_date_text($report, $content);
|
||||
|
||||
$external_source = io_safe_input(json_decode($content['external_source'], true));
|
||||
$es_agents_inventory_display_options = $external_source['agents_inventory_display_options'];
|
||||
$es_custom_fields = $external_source['agent_custom_field_filter'];
|
||||
$es_os_filter = $external_source['agent_os_filter'];
|
||||
$es_agent_status_filter = $external_source['agent_status_filter'];
|
||||
$es_agent_version_filter = $external_source['agent_version_filter'];
|
||||
$es_agent_module_search_filter = $external_source['agent_module_search_filter'];
|
||||
$es_agent_group_filter = $external_source['agent_group_filter'];
|
||||
$es_agent_server_filter = $external_source['agent_server_filter'];
|
||||
$es_users_groups = $external_source['users_groups'];
|
||||
$es_agent_remote_conf = $external_source['agent_remote_conf'];
|
||||
|
||||
if ($es_agents_inventory_display_options === '') {
|
||||
$es_agents_inventory_display_options = [];
|
||||
}
|
||||
|
||||
$search_sql = '';
|
||||
|
||||
if ($es_custom_fields != '') {
|
||||
$search_sql .= ' AND id_os = '.$es_custom_fields;
|
||||
}
|
||||
|
||||
if (in_array('0', $es_os_filter) === false) {
|
||||
$search_sql .= ' AND id_os IN ('.implode(',', $es_os_filter).')';
|
||||
}
|
||||
|
||||
if ($es_agent_version_filter != '') {
|
||||
$search_sql .= ' AND tagente.agent_version LIKE "%'.$es_agent_version_filter.'%"';
|
||||
}
|
||||
|
||||
if ($es_agent_module_search_filter != '') {
|
||||
$search_sql .= ' AND tam.nombre LIKE "%'.$es_agent_module_search_filter.'%"';
|
||||
}
|
||||
|
||||
if ($es_agent_group_filter != 0) {
|
||||
$search_sql .= ' AND (tagente.id_grupo = '.$es_agent_group_filter.' OR tasg.id_group = '.$es_agent_group_filter.')';
|
||||
}
|
||||
|
||||
if ($es_agent_remote_conf != 0) {
|
||||
$search_sql .= ' AND tagente.remote = '.$es_agent_remote_conf;
|
||||
}
|
||||
|
||||
$user_groups_to_sql = implode(',', array_keys(users_get_groups()));
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT DISTINCT(tagente.id_agente) AS id_agente,
|
||||
tagente.id_os,
|
||||
tagente.direccion,
|
||||
tagente.agent_version,
|
||||
tagente.alias,
|
||||
tagente.id_grupo,
|
||||
tagente.comentarios,
|
||||
tagente.url_address,
|
||||
tagente.remote
|
||||
FROM tagente LEFT JOIN tagent_secondary_group tasg
|
||||
ON tagente.id_agente = tasg.id_agent
|
||||
LEFT JOIN tagente_modulo tam
|
||||
ON tam.id_agente = tagente.id_agente
|
||||
WHERE (tagente.id_grupo IN (%s) OR tasg.id_group IN (%s))
|
||||
%s',
|
||||
$user_groups_to_sql,
|
||||
$user_groups_to_sql,
|
||||
$search_sql
|
||||
);
|
||||
|
||||
if (is_metaconsole()) {
|
||||
$servers_ids = array_column(metaconsole_get_servers(), 'id');
|
||||
} else {
|
||||
$servers_ids = [0];
|
||||
}
|
||||
|
||||
$return_data = [];
|
||||
|
||||
foreach ($servers_ids as $server_id) {
|
||||
if (is_metaconsole()) {
|
||||
$server = metaconsole_get_connection_by_id($server_id);
|
||||
|
||||
if ((int) $es_agent_server_filter !== 0
|
||||
&& (int) $es_agent_server_filter !== (int) $server_id
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
metaconsole_connect($server);
|
||||
}
|
||||
|
||||
$agents = db_get_all_rows_sql($sql);
|
||||
|
||||
foreach ($agents as $key => $value) {
|
||||
if (array_search('secondary_groups', $es_agents_inventory_display_options) !== false) {
|
||||
$sql_agent_sec_group = sprintf(
|
||||
'SELECT id_group
|
||||
FROM tagent_secondary_group
|
||||
WHERE id_agent = %d',
|
||||
$value['id_agente']
|
||||
);
|
||||
|
||||
$agent_secondary_groups = [];
|
||||
$agent_secondary_groups = db_get_all_rows_sql($sql_agent_sec_group);
|
||||
|
||||
$agents[$key]['secondary_groups'] = $agent_secondary_groups;
|
||||
}
|
||||
|
||||
if (array_search('custom_fields', $es_agents_inventory_display_options) !== false) {
|
||||
$sql_agent_custom_fields = sprintf(
|
||||
'SELECT tacd.description, tacf.name
|
||||
FROM tagent_custom_data tacd INNER JOIN tagent_custom_fields tacf
|
||||
ON tacd.id_field = tacf.id_field
|
||||
WHERE tacd.description != "" AND tacd.id_agent = %d',
|
||||
$value['id_agente']
|
||||
);
|
||||
|
||||
$agent_custom_fields = [];
|
||||
$agent_custom_fields = db_get_all_rows_sql($sql_agent_custom_fields);
|
||||
|
||||
$agents[$key]['custom_fields'] = $agent_custom_fields;
|
||||
}
|
||||
|
||||
if (array_search('estado', $es_agents_inventory_display_options) !== false) {
|
||||
if (in_array(6, $es_agent_status_filter)) {
|
||||
if (agents_get_status($value['id_agente']) === 0) {
|
||||
unset($agents[$key]);
|
||||
} else {
|
||||
$agents[$key]['estado'] = agents_get_status($value['id_agente']);
|
||||
}
|
||||
} else {
|
||||
if (in_array('-1', $es_agent_status_filter) === true || in_array(agents_get_status($value['id_agente']), $es_agent_status_filter)) {
|
||||
$agents[$key]['estado'] = agents_get_status($value['id_agente']);
|
||||
} else {
|
||||
// Agent does not match status filter.
|
||||
unset($agents[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($agents as $key => $value) {
|
||||
foreach ($value as $agent_val_key => $agent_val) {
|
||||
// Exclude from data to be displayed in report those fields that were not selected to be displayed by user.
|
||||
if (array_search($agent_val_key, $es_agents_inventory_display_options) === false) {
|
||||
unset($agents[$key][$agent_val_key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$return_data[$server_id] = $agents;
|
||||
|
||||
if (is_metaconsole()) {
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
$all_data = [];
|
||||
|
||||
foreach ($return_data as $server_agents) {
|
||||
foreach ($server_agents as $agent) {
|
||||
$all_data[] = $agent;
|
||||
}
|
||||
}
|
||||
|
||||
$return['data'] = $all_data;
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
|
||||
function reporting_inventory_changes($report, $content, $type)
|
||||
{
|
||||
global $config;
|
||||
|
@ -2270,7 +2455,7 @@ function reporting_inventory_changes($report, $content, $type)
|
|||
metaconsole_connect($server);
|
||||
}
|
||||
|
||||
$es = json_decode($content['external_source'], true);
|
||||
$es = json_decode($content['external_source'], true);
|
||||
|
||||
$id_agent = $es['id_agents'];
|
||||
$module_name = $es['inventory_modules'];
|
||||
|
|
|
@ -377,6 +377,10 @@ function reporting_html_print_report($report, $mini=false, $report_info=1)
|
|||
reporting_html_agent_module($table, $item);
|
||||
break;
|
||||
|
||||
case 'agents_inventory':
|
||||
reporting_html_agents_inventory($table, $item);
|
||||
break;
|
||||
|
||||
case 'inventory':
|
||||
reporting_html_inventory($table, $item);
|
||||
break;
|
||||
|
@ -1425,6 +1429,173 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Print in html agents inventory
|
||||
*
|
||||
* @param object $table Head table or false if it comes from pdf.
|
||||
* @param array $item Items data.
|
||||
* @param boolean $pdf Print pdf true or false.
|
||||
*
|
||||
* @return html
|
||||
*/
|
||||
function reporting_html_agents_inventory($table, $item, $pdf=0)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$table1 = new stdClass();
|
||||
$table1->width = '100%';
|
||||
|
||||
$table1->style[0] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->class = 'databox data';
|
||||
$table1->cellpadding = 1;
|
||||
$table1->cellspacing = 1;
|
||||
$table1->styleTable = 'overflow: wrap; table-layout: fixed;';
|
||||
|
||||
$table1->style[0] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[1] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[2] = 'text-align: left;vertical-align: top; min-width: 100px';
|
||||
$table1->style[3] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[4] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[5] = 'text-align: left;vertical-align: top; min-width: 100px';
|
||||
$table1->style[6] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[7] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[8] = 'text-align: left;vertical-align: top; min-width: 100px';
|
||||
$table1->style[9] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[10] = 'text-align: left;vertical-align: top;min-width: 100px;';
|
||||
$table1->style[11] = 'text-align: left;vertical-align: top; min-width: 100px';
|
||||
|
||||
$table1->head = [];
|
||||
|
||||
foreach ($item['data'][0] as $field_key => $field_value) {
|
||||
switch ($field_key) {
|
||||
case 'alias':
|
||||
$table1->head[] = __('Alias');
|
||||
break;
|
||||
|
||||
case 'direccion':
|
||||
$table1->head[] = __('IP Address');
|
||||
break;
|
||||
|
||||
case 'id_os':
|
||||
$table1->head[] = __('OS');
|
||||
break;
|
||||
|
||||
case 'id_grupo':
|
||||
$table1->head[] = __('Group');
|
||||
break;
|
||||
|
||||
case 'comentarios':
|
||||
$table1->head[] = __('Description');
|
||||
break;
|
||||
|
||||
case 'secondary_groups':
|
||||
$table1->head[] = __('Sec. groups');
|
||||
break;
|
||||
|
||||
case 'url_address':
|
||||
$table1->head[] = __('URL');
|
||||
break;
|
||||
|
||||
case 'custom_fields':
|
||||
$table1->head[] = __('Custom fields');
|
||||
break;
|
||||
|
||||
case 'estado':
|
||||
$table1->head[] = __('Status');
|
||||
break;
|
||||
|
||||
case 'agent_version':
|
||||
$table1->head[] = __('Version');
|
||||
break;
|
||||
|
||||
case 'remote':
|
||||
$table1->head[] = __('Remote conf.');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$table1->headstyle[0] = 'text-align: left';
|
||||
$table1->headstyle[1] = 'text-align: left';
|
||||
$table1->headstyle[2] = 'text-align: left';
|
||||
$table1->headstyle[3] = 'text-align: left';
|
||||
$table1->headstyle[4] = 'text-align: left';
|
||||
$table1->headstyle[5] = 'text-align: left';
|
||||
$table1->headstyle[6] = 'text-align: left';
|
||||
$table1->headstyle[7] = 'text-align: left';
|
||||
$table1->headstyle[8] = 'text-align: left';
|
||||
$table1->headstyle[9] = 'text-align: left';
|
||||
$table1->headstyle[10] = 'text-align: left';
|
||||
$table1->headstyle[11] = 'text-align: left';
|
||||
|
||||
$table1->data = [];
|
||||
|
||||
foreach ($item['data'] as $data) {
|
||||
$row = [];
|
||||
|
||||
foreach ($data as $data_field_key => $data_field_value) {
|
||||
$column_value = $data_field_value;
|
||||
|
||||
$show_link = $pdf === 0 ? true : false;
|
||||
|
||||
// Necessary transformations of data prior to represent it.
|
||||
if ($data_field_key === 'id_os') {
|
||||
$column_value = get_os_name((int) $data_field_value);
|
||||
} else if ($data_field_key === 'remote' && $pdf === 0) {
|
||||
$column_value = ((int) $data_field_value === 1) ? __('Yes') : __('No');
|
||||
} else if ($data_field_key === 'url_address' && $pdf === 0) {
|
||||
$column_value = ui_print_truncate_text($data_field_value, 10);
|
||||
} else if ($data_field_key === 'estado') {
|
||||
$column_value = ($pdf === 0) ? ui_print_module_status((int) $data_field_value, true) : modules_get_modules_status((int) $data_field_value);
|
||||
} else if ($data_field_key === 'id_grupo') {
|
||||
$column_value = ui_print_group_icon((int) $data_field_value, true, 'groups_small', '', $show_link);
|
||||
} else if ($data_field_key === 'custom_fields') {
|
||||
$custom_fields_value = [];
|
||||
|
||||
if (is_array($data_field_value)) {
|
||||
foreach ($data_field_value as $value) {
|
||||
$custom_fields_value[] = $value['name'].': '.$value['description'];
|
||||
}
|
||||
}
|
||||
|
||||
$column_value = implode(' / ', $custom_fields_value);
|
||||
} else if ($data_field_key === 'secondary_groups') {
|
||||
$custom_fields_value = [];
|
||||
|
||||
if (is_array($data_field_value)) {
|
||||
foreach ($data_field_value as $value) {
|
||||
$custom_fields_value[] = ui_print_group_icon((int) $value['id_group'], true, 'groups_small', '', $show_link);
|
||||
}
|
||||
}
|
||||
|
||||
$column_value = implode(' / ', $custom_fields_value);
|
||||
}
|
||||
|
||||
$row[] = $column_value;
|
||||
}
|
||||
|
||||
$table1->data[] = $row;
|
||||
|
||||
if ($pdf !== 0) {
|
||||
$table1->data[] = '<br />';
|
||||
}
|
||||
}
|
||||
|
||||
if ($pdf === 0) {
|
||||
$table->colspan['permissions']['cell'] = 3;
|
||||
$table->cellstyle['permissions']['cell'] = 'text-align: center;';
|
||||
$table->data['permissions']['cell'] = html_print_table(
|
||||
$table1,
|
||||
true
|
||||
);
|
||||
} else {
|
||||
return html_print_table(
|
||||
$table1,
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Print in html inventory changes reports
|
||||
*
|
||||
|
|
|
@ -848,6 +848,13 @@ function reports_get_report_types($template=false, $not_editor=false)
|
|||
'name' => __('Group event report'),
|
||||
];
|
||||
|
||||
if (!$template) {
|
||||
$types['agents_inventory'] = [
|
||||
'optgroup' => __('Inventory'),
|
||||
'name' => __('Agents inventory'),
|
||||
];
|
||||
}
|
||||
|
||||
if ($config['enterprise_installed']) {
|
||||
$types['inventory'] = [
|
||||
'optgroup' => __('Inventory'),
|
||||
|
|
Loading…
Reference in New Issue