diff --git a/pandora_console/include/lib/Dashboard/Widgets/inventory.php b/pandora_console/include/lib/Dashboard/Widgets/inventory.php index 3fcec2dc5c..bfe14b52fb 100644 --- a/pandora_console/include/lib/Dashboard/Widgets/inventory.php +++ b/pandora_console/include/lib/Dashboard/Widgets/inventory.php @@ -175,8 +175,6 @@ class InventoryWidget extends Widget // Must be configured before using. $this->configurationRequired = false; - - $this->overflow_scrollbars = false; } @@ -221,6 +219,10 @@ class InventoryWidget extends Widget $values['idGroup'] = $decoder['idGroup']; } + if (isset($decoder['utimestamp']) === true) { + $values['utimestamp'] = $decoder['utimestamp']; + } + return $values; } @@ -239,111 +241,6 @@ class InventoryWidget extends Widget // Retrieve global - common inputs. $inputs = parent::getFormInputs(); - // Agent. - /*$inputs[] = [ - 'label' => __('Agent'), - 'arguments' => [ - 'type' => 'autocomplete_agent', - 'name' => 'agentAlias', - 'id_agent_hidden' => $values['agentId'], - 'name_agent_hidden' => 'agentId', - 'server_id_hidden' => $values['metaconsoleId'], - 'name_server_hidden' => 'metaconsoleId', - 'return' => true, - 'module_input' => true, - 'module_name' => 'moduleId', - 'module_none' => false, - 'size' => 0, - ], - ]; - - // Module. - $inputs[] = [ - 'label' => __('Module'), - 'arguments' => [ - 'type' => 'autocomplete_module', - 'name' => 'moduleId', - 'selected' => $values['moduleId'], - 'return' => true, - 'sort' => false, - 'agent_id' => $values['agentId'], - 'metaconsole_id' => $values['metaconsoleId'], - 'style' => 'width: inherit;', - 'nothing' => __('None'), - 'nothing_value' => 0, - ], - ]; - - // Agent/module/description free search. - $inputs[] = [ - 'label' => __('Free search'), - 'arguments' => [ - 'name' => 'label', - 'type' => 'text', - 'value' => '', - 'return' => true, - 'size' => 0, - ], - ]; - - // Enable/disable order by agent. - $inputs[] = [ - 'label' => __('Recursion'), - 'arguments' => [ - 'wrapper' => 'div', - 'name' => 'group_recursion', - 'type' => 'switch', - 'value' => $values['group_recursion'], - 'return' => true, - ], - ]; - - if ($is_metaconsole === true) { - // Node select. - $nodes = []; - foreach ($nodes_connection as $row) { - $nodes[$row['id']] = $row['server_name']; - } - - $inputs[] = html_print_label_input_block( - __('Server'), - html_print_select( - $nodes, - 'id_server', - $id_server, - $filteringFunction, - __('All'), - 0, - true, - false, - true, - '', - false, - 'width:100%;' - ) - ); - } - - // Group select. - $inputs[] = html_print_label_input_block( - __('Group'), - html_print_select_groups( - $config['id_user'], - $access, - true, - 'id_group', - $inventory_id_group, - $filteringFunction, - '', - '1', - true, - false, - true, - '', - false - ) - );*/ - // Format Data. $inputs[] = [ 'label' => __('Order by agent'), @@ -399,6 +296,7 @@ class InventoryWidget extends Widget $fields = []; array_unshift($fields, __('All')); + $inputs[] = [ 'label' => __('Module'), 'arguments' => [ @@ -406,7 +304,7 @@ class InventoryWidget extends Widget 'id' => 'module_inventory', 'input_class' => 'flex-row', 'type' => 'select', - 'selected' => $values['inventoryModuleId'], + 'selected' => io_safe_output($values['inventoryModuleId']), 'nothing' => __('Basic info'), 'nothing_value' => 'basic', 'fields' => $fields, @@ -441,6 +339,23 @@ class InventoryWidget extends Widget } } + // Date filter. + if (is_metaconsole() === false) { + $inputs[] = [ + 'label' => \__('Date'), + 'arguments' => [ + 'type' => 'select', + 'fields' => [], + 'name' => 'utimestamp', + 'selected' => $values['utimestamp'], + 'return' => true, + 'nothing' => \__('Last'), + 'nothing_value' => 0, + 'class' => 'fullwidth', + ], + ]; + } + return $inputs; } @@ -457,11 +372,12 @@ class InventoryWidget extends Widget $values['agentId'] = (int) \get_parameter('agentId', 0); $values['metaconsoleId'] = (int) \get_parameter('metaconsoleId', 0); - $values['inventoryModuleId'] = \get_parameter('module_inventory', 'basic'); + $values['inventoryModuleId'] = io_safe_output(\get_parameter('module_inventory', 'basic')); $values['agentAlias'] = \get_parameter('agentAlias', ''); $values['freeSearch'] = (string) \get_parameter('free_search', ''); $values['orderByAgent'] = \get_parameter('order_by_agent', 0); $values['idGroup'] = \get_parameter('id_group', 0); + $values['utimestamp'] = (int) get_parameter('utimestamp'); return $values; } @@ -491,6 +407,7 @@ class InventoryWidget extends Widget $inventory_id_group = (int) $this->values['idGroup']; $inventory_search_string = (string) $this->values['freeSearch']; $order_by_agent = (bool) $this->values['orderByAgent']; + $utimestamp = (int) $this->values['utimestamp']; $pagination_url_parameters = [ 'inventory_id_agent' => $inventory_id_agent, @@ -502,7 +419,6 @@ class InventoryWidget extends Widget // Get variables. if (is_metaconsole() === true) { - $nodes_connection = metaconsole_get_connections(); $id_server = (int) $this->values['metaconsoleId']; @@ -537,6 +453,7 @@ class InventoryWidget extends Widget $sql = 'SELECT DISTINCT name as indexname, name FROM tmodule_inventory, tagent_module_inventory WHERE tmodule_inventory.id_module_inventory = tagent_module_inventory.id_module_inventory'; + if ($inventory_id_agent > 0) { $sql .= ' AND id_agente = '.$inventory_id_agent; $agents_node = [$inventory_id_agent => $inventory_id_agent]; @@ -547,7 +464,7 @@ class InventoryWidget extends Widget $rows_meta = inventory_get_datatable( array_keys($agents_node), $inventory_module, - 0, + $utimestamp, $inventory_search_string, false, false, @@ -593,7 +510,7 @@ class InventoryWidget extends Widget $rows_meta = inventory_get_datatable( array_keys($agents_node), $inventory_module, - 0, + $utimestamp, $inventory_search_string, false, false, @@ -827,7 +744,6 @@ class InventoryWidget extends Widget 'zeroRecords' => __('No inventory found'), 'emptyTable' => __('No inventory found'), 'return' => true, - //'default_pagination' => 10, 'no_sortable_columns' => [-1], 'csv' => 0, 'mini_pagination' => true, @@ -858,7 +774,6 @@ class InventoryWidget extends Widget $id_table ); - $agents .= ui_toggle( $agent, $module_key, @@ -898,7 +813,7 @@ class InventoryWidget extends Widget $rows = inventory_get_datatable( $agents_ids, $inventory_module, - 0, + $utimestamp, $inventory_search_string, false, false, @@ -913,6 +828,7 @@ class InventoryWidget extends Widget 'message' => __('No data found.'), ] ); + return; } @@ -994,7 +910,6 @@ class InventoryWidget extends Widget 'zeroRecords' => __('No inventory found'), 'emptyTable' => __('No inventory found'), 'return' => true, - //'default_pagination' => 10, 'no_sortable_columns' => [-1], 'csv' => 0, 'mini_pagination' => true, @@ -1064,7 +979,6 @@ class InventoryWidget extends Widget array_push($data, $data_tmp); } - $id_table = 'id_'.$row['id_module_inventory']; } @@ -1107,24 +1021,24 @@ class InventoryWidget extends Widget } else { $table = ui_print_datatable( [ - 'id' => $id_table, - 'class' => 'info_table w100p', - 'style' => 'width: 100%', - 'columns' => $columns, - 'column_names' => $columns, - 'no_sortable_columns' => [], - 'data_element' => $data, - 'searching' => true, - 'dom_elements' => 'frtilp', - 'order' => [ + 'id' => $id_table, + 'class' => 'info_table w100p', + 'style' => 'width: 100%', + 'columns' => $columns, + 'column_names' => $columns, + 'no_sortable_columns' => [], + 'data_element' => $data, + 'searching' => true, + 'dom_elements' => 'frtilp', + 'order' => [ 'field' => $columns[0], 'direction' => 'asc', ], - 'zeroRecords' => __('No inventory found'), - 'emptyTable' => __('No inventory found'), - 'csv' => 0, - 'mini_pagination' => true, - 'mini_search' => true, + 'zeroRecords' => __('No inventory found'), + 'emptyTable' => __('No inventory found'), + 'csv' => 0, + 'mini_pagination' => true, + 'mini_search' => true, ] ); } @@ -1181,8 +1095,8 @@ class InventoryWidget extends Widget 'dom_elements' => 'frtilp', 'searching' => $searching, 'order' => [ - 'field' => $columns[0], - 'direction' => 'asc', + 'field' => $columns[0], + 'direction' => 'asc', ], 'ajax_url' => 'operation/inventory/inventory', 'ajax_data' => [ @@ -1240,9 +1154,9 @@ class InventoryWidget extends Widget }); $("#text-agentAlias").focus(function() { - $("#hidden-agentId").val("0"); + $("#hidden-agentId").val("0"); + }); }); - }); function getInventoryModules() { const clickedId = $(this).attr(\'id\'); @@ -1284,6 +1198,33 @@ class InventoryWidget extends Widget return false; } + + $("#module_inventory").change(function() { + var inputs = []; + + $("#utimestamp").empty(); + $("#utimestamp").append($("")); + + inputs.push("module=" + $(this).val()); + inputs.push("id_agent=" + $("#hidden-agentId").val()); + inputs.push("id_group=" + $("#id_group").val()); + inputs.push("get_agent_inventory_dates=1"); + inputs.push("page=operation/agentes/ver_agente"); + + jQuery.ajax({ + data: inputs.join("&"), + type: "POST", + url: action="'.$javascript_ajax_page.'", + dataType: "json", + success: function (data) { + if (data) { + jQuery.each (data, function(id, value) { + $("#utimestamp").append($("")); + }); + } + } + }); + }); '; } diff --git a/pandora_console/operation/agentes/ver_agente.php b/pandora_console/operation/agentes/ver_agente.php index a6d2dcccd8..ef79a71350 100644 --- a/pandora_console/operation/agentes/ver_agente.php +++ b/pandora_console/operation/agentes/ver_agente.php @@ -69,6 +69,7 @@ if (is_ajax()) { $pendingdelete = (bool) get_parameter('pendingdelete'); $get_node_agent = (bool) get_parameter('get_node_agent', false); $get_agent_inventory_modules = (bool) get_parameter('get_agent_inventory_modules', false); + $get_agent_inventory_dates = (bool) get_parameter('get_agent_inventory_dates', false); $refresh_contact = get_parameter('refresh_contact', 0); @@ -1408,6 +1409,22 @@ if (is_ajax()) { return; } + if ($get_agent_inventory_dates) { + $inventory_module = get_parameter('module', 0); + $inventory_id_agent = (int) get_parameter('id_agent', 0); + $inventory_id_group = (int) get_parameter('id_group', 0); + + $dates = inventory_get_dates( + $inventory_module, + $inventory_id_agent, + $inventory_id_group + ); + + echo json_encode($dates); + + return; + } + return; }