Merge from the pandora_5.1 branch to feature/#1978-REESCRITURA_DEL_MOTOR_DE_INFORMES branch the new report items (availability and time overlaped in the simple graphs).

This commit is contained in:
mdtrooper 2015-04-10 00:58:24 +02:00
parent 62c7ac463d
commit f84863540f
20 changed files with 683 additions and 73 deletions

View File

@ -227,6 +227,7 @@ config_check();
}
$table->data[0][3] = $maintenance_img;
// Main help icon
$table->data[0][4] = ui_print_help_icon ("main_help", true, '', 'images/header_help.png');

View File

@ -918,7 +918,7 @@ if ($update_module || $create_module) {
$plugin_parameter = (string) get_parameter ('plugin_parameter');
}
$ip_target = (string) get_parameter ('ip_target');
$custom_id = (string) get_parameter ('custom_id');
$history_data = (int) get_parameter('history_data');

View File

@ -139,6 +139,7 @@ if (!$own_info['is_admin'] && !check_acl ($config['id_user'], 0, "PM"))
else
$return_all_group = true;
html_print_select_groups(false, "AR", $return_all_group, "ag_group", $ag_group, 'this.form.submit();', '', 0, false, false, true, '', false, 'width:100px;');
echo "<td>";
echo __('Show Agents') . '&nbsp;';
$fields = array(
@ -406,6 +407,7 @@ else {
}
}
$agents = db_get_all_rows_sql ($sql);
// Delete rnum row generated by oracle_recode_query() function

View File

@ -31,7 +31,7 @@ if (is_ajax ()) {
$component['throw_unknown_events'] =
!network_components_is_disable_type_event($id_component, EVENTS_GOING_UNKNOWN);
// Decrypt passwords in the component.
$component['plugin_pass'] = io_output_password($component['plugin_pass']);

View File

@ -140,7 +140,7 @@ if (is_ajax ()) {
$rfield = html_print_select($fields_value_select,
'field'.$i.'_recovery_value', '', '', '', 0, true, false, false, 'fields_recovery');
}
else{
else {
$ffield = html_print_textarea ('field' . $i . '_value',1, 1, $fv[0],
'style="min-height:40px" class="fields"', true);
$rfield = html_print_textarea ('field' . $i . '_recovery_value', 1, 1, $fv[0],

View File

@ -306,7 +306,7 @@ $(document).ready (function () {
$("[name=field" + i + "_value]").val(old_value);
$("[name=field" + i + "_recovery_value]").val(old_recovery_value);
}
else{
else {
$("[name=field" + i + "_value]").val($("[name=field" + i + "_value]").val());
$("[name=field" + i + "_recovery_value]").val($("[name=field" + i + "_recovery_value]").val());
}

View File

@ -471,7 +471,7 @@ print_alert_template_steps ($step, $id);
$table->id = 'template';
$table->width = '98%';
if(defined("METACONSOLE")){
if(defined("METACONSOLE")) {
$table->width = '100%';
$table->class = 'databox data';
$table->head[0] = __('Create Template');
@ -479,7 +479,7 @@ if(defined("METACONSOLE")){
$table->headstyle[0] = 'text-align: center';
}
$table->style = array ();
if(!defined("METACONSOLE")){
if(!defined("METACONSOLE")) {
$table->style[0] = 'font-weight: bold; vertical-align: top';
$table->style[2] = 'font-weight: bold; vertical-align: top';
}

View File

@ -43,7 +43,7 @@ if(defined('METACONSOLE')) {
'text' => '<a href="index.php?sec=advanced&sec2=godmode/category/category&tab=list&pure='.(int)$config['pure'].'">' .
html_print_image ("images/list.png", true, array ("title" => __('List categories'))) .'</a>'));
}
else{
else {
$buttons = array(
'list' => array(
'active' => false,
@ -132,6 +132,7 @@ if (!empty($result)) {
$iterator++;
$data = array ();
if(defined('METACONSOLE')){
$data[0] = "<a href='index.php?sec=advanced&sec2=godmode/category/edit_category&action=update&id_category=" . $category["id"] . "&pure=" . (int)$config['pure'] . "'>" . $category["name"] . "</a>";
$data[1] = "<a href='index.php?sec=advanced&sec2=godmode/category/edit_category&action=update&id_category=".$category["id"] . "&pure=" . (int)$config['pure'] . "'>" . html_print_image("images/config.png", true, array("title" => "Edit")) . "</a>&nbsp;&nbsp;";

View File

@ -28,6 +28,7 @@ if (! check_acl($config['id_user'], 0, "EW")) {
$update = get_parameter('upd_button', '');
$default = (int) get_parameter('default', 0);
if ($default != 0) {
$event_fields = io_safe_input('evento,id_agente,estado,timestamp');
$fields_selected = explode (',', $event_fields);

View File

@ -157,7 +157,8 @@ $table->class = "databox";
$table->style[0] = 'vertical-align: top;';
$table->valign[1] = 'top';
if (defined('METACONSOLE')){
if (defined('METACONSOLE')) {
$table->width = '100%';
$table->border = 0;
$table->cellspacing = 3;
@ -285,7 +286,7 @@ $add_without_tag_disabled = empty($tags_select_without);
$remove_without_tag_disabled = empty($tag_without_temp);
if (defined("METACONSOLE")){
if (defined("METACONSOLE")) {
$table->data[13][0] = '<b>' . __('Events with following tags') . '</b>';
$table->data[13][0] .= '<br>' . html_print_select ($tags_select_with, 'select_with',
@ -537,4 +538,4 @@ function replace_hidden_tags(what_button) {
$(id_hidden).val(Base64.encode(jQuery.toJSON(value_store)));
}
/* ]]> */
</script>
</script>

View File

@ -57,7 +57,7 @@ else {
$table->width = '90%';
if(defined('METACONSOLE')){
if(defined('METACONSOLE')) {
$table->width = '100%';
$table->class = 'databox data';
$table->head[0] = __('Edit event responses');

View File

@ -25,7 +25,7 @@ if (! check_acl($config['id_user'], 0, "PM")) {
return;
}
if(!defined('METACONSOLE')){
if(!defined('METACONSOLE')) {
echo '<br><br><div style="width:99%;text-align:right;">';
echo '<form method="post" action="index.php?sec=geventos&sec2=godmode/events/events&section=responses&mode=editor&amp;pure='.$config['pure'].'">';
html_print_submit_button(__('Create response'), 'create_response_button', false, array('class' => 'sub next'));
@ -78,7 +78,7 @@ foreach($event_responses as $response) {
html_print_table($table);
if(defined('METACONSOLE')){
if(defined('METACONSOLE')) {
echo '<br><br><div style="width:100%;text-align:right;">';
echo '<form method="post" action="index.php?sec=geventos&sec2=godmode/events/events&section=responses&mode=editor&amp;pure='.$config['pure'].'">';
html_print_submit_button(__('Create response'), 'create_response_button', false, array('class' => 'sub next'));

View File

@ -176,7 +176,7 @@ $agents_with_templates_json = json_encode($agents_with_templates_json);
echo "<input type='hidden' id='hidden-agents_with_templates' value='$agents_with_templates_json'>";
echo '<div class="action-buttons" style="width: '. $table->width . '" onsubmit="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
echo '<div class="action-buttons" style="width: ' . $table->width . '" onsubmit="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
html_print_input_hidden ('add', 1);
html_print_submit_button (__('Add'), 'go', false, 'class="sub add"');
echo '</div>';

View File

@ -58,6 +58,7 @@ $group = 0;
$group_by_agent = 0;
$order_uptodown = 0;
$show_resume = 0;
$show_address_agent = 0;
$top_n = 0;
$top_n_value = 10;
$exception_condition = REPORT_EXCEPTION_CONDITION_EVERYTHING;
@ -87,6 +88,7 @@ $inventory_modules = array();
$date = null;
// Only avg is selected by default for the simple graphs
$only_avg = true;
$time_compare_overlapped = false;
//Added for events items
$filter_event_validated = false;
@ -187,6 +189,9 @@ switch ($action) {
$projection_period = $item['top_n_value'];
$period_pg = $item['period'];
}
// HACK it is saved in show_graph field.
$time_compare_overlapped = $item['show_graph'];
break;
case 'prediction_date':
$description = $item['description'];
@ -419,7 +424,15 @@ switch ($action) {
$period = $item['period'];
$order_uptodown = $item['order_uptodown'];
$show_resume = $item['show_resume'];
$show_graph = $item['show_graph'];
break;
case 'availability':
$description = $item['description'];
$period = $item['period'];
$order_uptodown = $item['order_uptodown'];
$show_resume = $item['show_resume'];
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
$show_address_agent = $item['show_graph'];
break;
case 'group_report':
$description = $item['description'];
@ -498,7 +511,8 @@ switch ($action) {
break;
}
$urlForm = $config['homeurl'] . 'index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&tab=item_editor&action=' . $actionParameter . '&id_report=' . $idReport;
$urlForm = $config['homeurl'] .
'index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&tab=item_editor&action=' . $actionParameter . '&id_report=' . $idReport;
echo '<form action="' . $urlForm . '" method="post">';
html_print_input_hidden('id_item', $idItem);
@ -518,7 +532,7 @@ else
" . __('Item Editor') . "
</th>
</tr>
</thead>";
</thead>";
}
?>
<tbody>
@ -552,8 +566,8 @@ else
</tr>
<tr id="row_netflow_filter" style="" class="datos">
<td><?php echo __('Filter');?></td>
<td><?php
<td>
<?php
$own_info = get_user_info ($config['id_user']);
// Get group list that user has access
@ -1039,6 +1053,14 @@ else
?>
</td>
</tr>
<tr id="row_time_compare_overlapped" style="" class="datos">
<td><?php echo __('Time compare (Overlapped)');?></td>
<td>
<?php
html_print_checkbox('time_compare_overlapped', 1, $time_compare_overlapped);
?>
</td>
</tr>
<tr id="row_only_avg" style="" class="datos">
<td><?php echo __('Only average');?></td>
<td><?php html_print_checkbox('only_avg', 1, $only_avg);?></td>
@ -1080,9 +1102,28 @@ else
<td><?php html_print_select ($show_graph_options, 'combo_graph_options', $show_graph);?></td>
</tr>
<tr id="row_show_address_agent" style="" class="datos">
<td>
<?php
echo __('Show address instead module name.') .
ui_print_help_tip(__('Show the main address of agent.'), true);
?>
</td>
<td>
<?php
html_print_checkbox('checkbox_show_address_agent', 1,
$show_address_agent);
?>
</td>
</tr>
<tr id="row_show_resume" style="" class="datos">
<td><?php echo __('Show resume') . ui_print_help_tip(__('Show a resume table with max, min, average of total modules on the report bottom'), true);?></td>
<td><?php html_print_checkbox('checkbox_show_resume', 1, $show_resume);?></td>
<td>
<?php
html_print_checkbox('checkbox_show_resume', 1,
$show_resume);
?>
</td>
</tr>
<tr id="row_event_filter" style="" class="datos">
<td><?php echo __('Event filter'); ?></td>
@ -1144,7 +1185,7 @@ else
<br />
<?php
print_SLA_list('95%', $action, $idItem);
print_General_list('95%', $action, $idItem);
print_General_list('95%', $action, $idItem, $type);
echo '<div class="action-buttons" style="width: 100%">';
if ($action == 'new') {
html_print_submit_button(__('Create item'), 'create_item', false, 'class="sub wand"');
@ -1170,7 +1211,8 @@ function print_SLA_list($width, $action, $idItem = null) {
global $config;
global $meta;
$report_item_type = db_get_value ('type', 'treport_content', 'id_rc', $idItem);
$report_item_type = db_get_value('type', 'treport_content', 'id_rc',
$idItem);
?>
<table class="databox" id="sla_list" border="0" cellpadding="4" cellspacing="4" width="100%">
<thead>
@ -1222,17 +1264,17 @@ function print_SLA_list($width, $action, $idItem = null) {
$server_name_element = '';
if ($meta && $server_name != '')
$server_name_element .= ' (' . $server_name . ')';
echo '<tr id="sla_' . $item['id'] . '" style="" class="datos">';
echo '<td class="sla_list_agent_col">' . printSmallFont($nameAgent) . $server_name_element . '</td>';
echo '<td class="sla_list_module_col">' . printSmallFont($nameModule) . '</td>';
if (enterprise_installed() && $report_item_type == 'SLA_services') {
enterprise_include_once("include/functions_services.php");
$nameService = enterprise_hook('services_get_name', array($item['id_agent_module']));
echo '<td class="sla_list_service_col">' . printSmallFont($nameService) . '</th>';
}
echo '<td class="sla_list_sla_min_col">' . $item['sla_min'] . '</td>';
echo '<td class="sla_list_sla_max_col">' . $item['sla_max'] . '</td>';
echo '<td class="sla_list_sla_limit_col">' . $item['sla_limit'] . '</td>';
@ -1322,9 +1364,10 @@ function print_SLA_list($width, $action, $idItem = null) {
<?php
}
function print_General_list($width, $action, $idItem = null) {
function print_General_list($width, $action, $idItem = null, $type = 'general') {
global $config;
global $meta;
if (!isset($meta))
$meta = false;
@ -1339,11 +1382,24 @@ function print_General_list($width, $action, $idItem = null) {
<table class="databox" id="general_list" border="0" cellpadding="4" cellspacing="4" width="100%">
<thead>
<tr>
<th class="header" scope="col"><?php echo __('Agent');?></th>
<th class="header" scope="col"><?php echo __('Module');?></th>
<th class="header" scope="col"><?php echo __('Operation') .
ui_print_help_tip(__("Please be careful, when the module have diferent intervals in their life, the summatory maybe get bad result."), true);?></th>
<th class="header" scope="col"><?php echo __('Action');?></th>
<?php
if ($type == "availability") {
?>
<th class="header" scope="col"><?php echo __('Agent');?></th>
<th class="header" scope="col"><?php echo __('Module');?></th>
<th class="header" scope="col"><?php echo __('Action');?></th>
<?php
}
else {
?>
<th class="header" scope="col"><?php echo __('Agent');?></th>
<th class="header" scope="col"><?php echo __('Module');?></th>
<th class="header" scope="col"><?php echo __('Operation') .
ui_print_help_tip(__("Please be careful, when the module have diferent intervals in their life, the summatory maybe get bad result."), true);?></th>
<th class="header" scope="col"><?php echo __('Action');?></th>
<?php
}
?>
</tr>
</thead>
<?php
@ -1359,10 +1415,13 @@ function print_General_list($width, $action, $idItem = null) {
case 'update':
case 'edit':
echo '<tbody id="list_general">';
$itemsGeneral = db_get_all_rows_filter('treport_content_item', array('id_report_content' => $idItem));
$itemsGeneral = db_get_all_rows_filter(
'treport_content_item',
array('id_report_content' => $idItem));
if ($itemsGeneral === false) {
$itemsGeneral = array();
}
foreach ($itemsGeneral as $item) {
$server_name = $item ['server_name'];
// Metaconsole db connection
@ -1373,22 +1432,41 @@ function print_General_list($width, $action, $idItem = null) {
continue;
}
}
$idAgent = db_get_value_filter('id_agente', 'tagente_modulo', array('id_agente_modulo' => $item['id_agent_module']));
$idAgent = db_get_value_filter(
'id_agente', 'tagente_modulo',
array('id_agente_modulo' => $item['id_agent_module']));
$nameAgent = agents_get_name ($idAgent);
$nameModule = db_get_value_filter('nombre', 'tagente_modulo', array('id_agente_modulo' => $item['id_agent_module']));
$server_name_element = '';
if ($meta && $server_name != '')
$server_name_element .= ' (' . $server_name . ')';
$server_name_element .= ' (' . $server_name . ')';
echo '<tr id="general_' . $item['id'] . '" style="" class="datos">
if ($type == "availability") {
echo '<tr id="general_' . $item['id'] . '" style="" class="datos">
<td>' . printSmallFont($nameAgent) . $server_name_element . '</td>
<td>' . printSmallFont($nameModule) . '</td>
<td>' . printSmallFont($operation[$item['operation']]) . '</td>
<td style="text-align: center;">
<a href="javascript: deleteGeneralRow(' . $item['id'] . ');">' . html_print_image("images/cross.png", true) . '</a>
</td>
</tr>';
}
else {
echo '<tr id="general_' . $item['id'] . '" style="" class="datos">
<td>' . printSmallFont($nameAgent) . $server_name_element . '</td>
<td>' . printSmallFont($nameModule) . '</td>
<td>' .
printSmallFont($operation[$item['operation']]) .
'</td>
<td style="text-align: center;">
<a href="javascript: deleteGeneralRow(' . $item['id'] . ');">' . html_print_image("images/cross.png", true) . '</a>
</td>
</tr>';
}
if ($meta) {
//Restore db connection
metaconsole_restore_db();
@ -1400,7 +1478,13 @@ function print_General_list($width, $action, $idItem = null) {
<tr id="row" style="display: none;" class="datos">
<td class="agent_name"></td>
<td class="module_name"></td>
<td class="operation_name"></td>
<?php
if ($type != "availability") {
?>
<td class="operation_name"></td>
<?php
}
?>
<td style="text-align: center;"><a class="delete_button" href="javascript: deleteGeneralRow(0);"><?php html_print_image("images/cross.png", false); ?></a></td>
</tr>
</tbody>
@ -1427,8 +1511,25 @@ function print_General_list($width, $action, $idItem = null) {
ui_print_agent_autocomplete_input($params);
?>
</td>
<td><select id="id_agent_module_general" name="id_agente_modulo_general" disabled="disabled" style="max-width: 180px"><option value="0"><?php echo __('Select an Agent first'); ?></option></select></td>
<td><?php html_print_select ($operation, 'id_operation_module_general', 0, false, '', '', false, false, true, 'width: 200px', false); ?></td>
<td>
<select id="id_agent_module_general" name="id_agente_modulo_general" disabled="disabled" style="max-width: 180px">
<option value="0"><?php echo __('Select an Agent first'); ?></option>
</select>
</td>
<?php
if ($type !== "availability") {
?>
<td>
<?php
html_print_select($operation,
'id_operation_module_general', 0,
false, '', '', false, false, true,
'width: 200px', false);
?>
</td>
<?php
}
?>
<td style="text-align: center;"><a href="javascript: addGeneralRow();"><?php html_print_image("images/disk.png", false); ?></a></td>
</tr>
</tbody>
@ -1460,7 +1561,8 @@ $(document).ready (function () {
minuteText: '<?php echo __('Minute');?>',
secondText: '<?php echo __('Second');?>',
currentText: '<?php echo __('Now');?>',
closeText: '<?php echo __('Close');?>'});
closeText: '<?php echo __('Close');?>'
});
});
function create_custom_graph() {
@ -1699,13 +1801,13 @@ function addSLARow() {
var slaMin = $("input[name=sla_min]").val();
var slaMax = $("input[name=sla_max]").val();
var slaLimit = $("input[name=sla_limit]").val();
var serviceId = $("select#id_service>option:selected").val();
var serviceName = $("select#id_service>option:selected").text();
if (((idAgent != '') && (slaMin != '') && (slaMax != '')
&& (slaLimit != '')) || serviceId != '') {
if (nameAgent != '') {
//Truncate nameAgent
var params = [];
@ -1722,7 +1824,7 @@ function addSLARow() {
nameAgent = data;
}
});
//Truncate nameModule
var params = [];
params.push("truncate_text=1");
@ -1748,7 +1850,7 @@ function addSLARow() {
params.push("sla_max=" + slaMax);
params.push("sla_limit=" + slaLimit);
params.push("server_id=" + serverId);
if (serviceId != '') {
params.push("id_service=" + serviceId);
}
@ -1800,7 +1902,13 @@ function addGeneralRow() {
var idAgent = $("input[name=id_agent_general]").val();
var serverId = $("input[name=id_server]").val();
var idModule = $("#id_agent_module_general").val();
var operation = $("#id_operation_module_general").val();
var operation;
if ($("#id_operation_module_general").length) {
operation = $("#id_operation_module_general").val();
}
else {
operation = "";
}
var nameModule = $("#id_agent_module_general :selected").text();
var nameOperation = $("#id_operation_module_general :selected").text();
@ -1835,6 +1943,7 @@ function addGeneralRow() {
nameModule = data;
}
});
//Truncate nameOperation
var params = [];
params.push("truncate_text=1");
@ -1850,6 +1959,7 @@ function addGeneralRow() {
nameOperation = data;
}
});
var params = [];
params.push("add_general=1");
params.push("id=" + $("input[name=id_item]").val());
@ -1919,9 +2029,11 @@ function chooseType() {
$("#general_list").hide();
$("#row_order_uptodown").hide();
$("#row_show_resume").hide();
$("#row_show_address_agent").hide();
$("#row_show_graph").hide();
$("#row_max_min_avg").hide();
$("#row_only_avg").hide();
$("#row_time_compare_overlapped").hide();
$("#row_quantity").hide();
$("#row_exception_condition_value").hide();
$("#row_exception_condition").hide();
@ -1965,6 +2077,7 @@ function chooseType() {
$("#row_event_graphs").show();
break;
case 'simple_graph':
$("#row_time_compare_overlapped").show();
$("#row_only_avg").show();
// The break hasn't be forgotten, this element
// only should be shown on the simple graphs.
@ -1975,6 +2088,7 @@ function chooseType() {
$("#row_period").show();
$("#row_show_in_two_columns").show();
$("#row_show_in_landscape").show();
$("#row_time_compare_overlapped").show();
break;
case 'projection_graph':
$("#row_description").show();
@ -2024,7 +2138,7 @@ function chooseType() {
$("#row_only_display_wrong").show();
$("#row_working_time").show();
$("#row_sort").show();
$(".sla_list_agent_col").hide();
$(".sla_list_module_col").hide();
$(".sla_list_service_col").show();
@ -2178,7 +2292,7 @@ function chooseType() {
$("#row_event_filter").show();
$("#row_event_graphs").show();
$("#row_event_graph_by_agent").hide();
$('#agent_autocomplete').hide();
$('#agent_autocomplete_events').show();
break;
@ -2207,6 +2321,14 @@ function chooseType() {
$("input[name='last_value']").prop("checked", true);
}
break;
case 'availability':
$("#row_description").show();
$("#row_period").show();
$("#general_list").show();
$("#row_order_uptodown").show();
$("#row_show_address_agent").show();
$("#row_show_in_two_columns").show();
break;
case 'group_report':
$("#row_group").show();
$("#row_servers").show();

View File

@ -97,11 +97,11 @@ if ($idReport != 0) {
$edit = true;
break;
}
if (! $edit) {
// The user that created the report should can delete it. Despite its permissions.
$delete_report_bypass = false;
if ($action == 'delete_report') {
if ($config['id_user'] == $report['id_user'] || is_user_admin ($config["id_user"])) {
$delete_report_bypass = true;
@ -342,14 +342,14 @@ switch ($action) {
}
break;
}
if (! $delete) {
db_pandora_audit("ACL Violation",
"Trying to access report builder deletion");
require ("general/noaccess.php");
exit;
}
$result = reports_delete_report ($idReport);
if ($result !== false)
db_pandora_audit("Report management", "Delete report #$idReport");
@ -399,7 +399,7 @@ switch ($action) {
html_print_table($table_aux);
echo "</form>";
}
ui_require_jquery_file ('pandora.controls');
ui_require_jquery_file ('ajaxqueue');
@ -450,8 +450,14 @@ switch ($action) {
$filter['metaconsole'] = 0;
$reports = reports_get_reports ($filter,
array ('name', 'id_report', 'description', 'private',
'id_user', 'id_group', 'non_interactive'), $return_all_group, 'RR', $group, $strict_user);
array (
'name',
'id_report',
'description',
'private',
'id_user',
'id_group',
'non_interactive'), $return_all_group, 'RR', $group, $strict_user);
$table->width = '0px';
if (sizeof ($reports)) {
@ -541,7 +547,8 @@ switch ($action) {
if (enterprise_hook ('load_custom_reporting_2') !== ENTERPRISE_NOT_HOOK) {
$next = 7;
}
//Admin options only for RM flag
if (check_acl ($config['id_user'], 0, "RM")) {
@ -673,7 +680,7 @@ switch ($action) {
}
break;
case 'update':
case 'save':
case 'save':
switch ($activeTab) {
case 'main':
$reportName = get_parameter('name');
@ -753,12 +760,13 @@ switch ($action) {
$first_page = $config['custom_report_front_firstpage'];
$footer = $config['custom_report_front_footer'];
} else {
}
else {
$start_url = ui_get_full_url(false, false, false, false);
$first_page = "&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;img&#x20;src=&quot;" . $start_url . "/images/pandora_report_logo.png&quot;&#x20;alt=&quot;&quot;&#x20;width=&quot;800&quot;&#x20;/&gt;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;span&#x20;style=&quot;font-size:&#x20;xx-large;&quot;&gt;&#40;_REPORT_NAME_&#41;&lt;/span&gt;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;span&#x20;style=&quot;font-size:&#x20;large;&quot;&gt;&#40;_DATETIME_&#41;&lt;/span&gt;&lt;/p&gt;";
$logo = $header = $footer = null;
}
$idOrResult = db_process_sql_insert('treport',
@ -798,7 +806,8 @@ switch ($action) {
break;
case 'item_editor':
$resultOperationDB = null;
$report = db_get_row_filter('treport', array('id_report' => $idReport));
$report = db_get_row_filter('treport',
array('id_report' => $idReport));
$reportName = $report['name'];
$idGroupReport = $report['id_group'];
@ -871,11 +880,27 @@ switch ($action) {
$values['top_n_value'] = get_parameter('max_values');
$good_format = true;
break;
case 'availability':
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
$values['show_graph'] =
get_parameter('checkbox_show_address_agent');
$good_format = true;
break;
case 'simple_graph':
case 'simple_baseline_graph':
// HACK it is saved in show_graph field.
$values['show_graph'] =
(int)get_parameter('time_compare_overlapped');
$values['period'] = get_parameter('period');
$good_format = true;
break;
default:
$values['period'] = get_parameter('period');
$values['top_n'] = get_parameter('radiobutton_max_min_avg',0);
$values['top_n_value'] = get_parameter('quantity');
$values['text'] = get_parameter('text');
$values['show_graph'] = get_parameter('combo_graph_options');
$good_format = true;
}
@ -907,7 +932,6 @@ switch ($action) {
$values['order_uptodown'] = get_parameter ('radiobutton_order_uptodown');
$values['exception_condition'] = (int)get_parameter('exception_condition', 0);
$values['exception_condition_value'] = get_parameter('exception_condition_value');
$values['show_graph'] = get_parameter('combo_graph_options');
$values['id_module_group'] = get_parameter('combo_modulegroup');
$values['id_group'] = get_parameter ('combo_group');
$values['server_name'] = get_parameter ('server_name');
@ -1087,11 +1111,27 @@ switch ($action) {
$values['top_n_value'] = get_parameter('max_values');
$good_format = true;
break;
case 'availability':
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
$values['show_graph'] =
get_parameter('checkbox_show_address_agent');
$good_format = true;
break;
case 'simple_graph':
case 'simple_baseline_graph':
// HACK it is saved in show_graph field.
$values['show_graph'] =
(int)get_parameter('time_compare_overlapped');
$values['period'] = get_parameter('period');
$good_format = true;
break;
default:
$values['period'] = get_parameter('period');
$values['top_n'] = get_parameter('radiobutton_max_min_avg',0);
$values['top_n_value'] = get_parameter('quantity');
$values['text'] = get_parameter('text');
$values['show_graph'] = get_parameter('combo_graph_options');
$good_format = true;
}
@ -1139,7 +1179,6 @@ switch ($action) {
$values['order_uptodown'] = get_parameter ('radiobutton_order_uptodown',0);
$values['exception_condition'] = (int)get_parameter('radiobutton_exception_condition', 0);
$values['exception_condition_value'] = get_parameter('exception_condition_value');
$values['show_graph'] = get_parameter('combo_graph_options');
$values['id_module_group'] = get_parameter('combo_modulegroup');
$values['id_group'] = get_parameter ('combo_group');
$values['server_name'] = get_parameter ('server_name');
@ -1577,7 +1616,7 @@ switch ($action) {
switch ($activeTab) {
case 'main':
$buttons['list_reports']['active'] = true;
$subsection = ' &raquo; '.__('Custom reporting');
$subsection = ' &raquo; ' . __('Custom reporting');
break;
default:
$subsection = reporting_enterprise_add_subsection_main($activeTab, $buttons);

View File

@ -2031,7 +2031,7 @@ function modules_relation_exists ($id_module, $id_module_other = false) {
*/
function modules_add_relation ($id_module_a, $id_module_b) {
$result = false;
if (!modules_relation_exists($id_module_a, $id_module_b) && $id_module_a > 0 && $id_module_b > 0) {
$values = array(
'module_a' => $id_module_a,
@ -2039,7 +2039,7 @@ function modules_add_relation ($id_module_a, $id_module_b) {
);
$result = db_process_sql_insert('tmodule_relationship', $values);
}
return $result;
}
@ -2052,7 +2052,7 @@ function modules_add_relation ($id_module_a, $id_module_b) {
*/
function modules_delete_relation ($id_relation) {
$result = db_process_sql_delete('tmodule_relationship', array('id' => $id_relation));
return $result;
}
@ -2067,11 +2067,125 @@ function modules_change_relation_lock ($id_relation) {
$old_value = (int) db_get_value('disable_update', 'tmodule_relationship', 'id', $id_relation);
$new_value = $old_value === 1 ? 0 : 1;
$result = db_process_sql_update('tmodule_relationship',
array('disable_update' => $new_value),
array('id' => $id_relation));
$result = db_process_sql_update(
'tmodule_relationship',
array('disable_update' => $new_value),
array('id' => $id_relation));
return ($result !== false ? $new_value : $old_value);
}
function modules_get_count_datas($id_agent_module, $date_init, $date_end) {
$interval = modules_get_interval ($id_agent_module);
// TODO REMOVE THE TIME IN PLANNED DOWNTIME
if (!is_numeric($date_init)) {
$date_init = strtotime($date_init);
}
if (!is_numeric($date_end)) {
$date_end = strtotime($date_end);
}
$first_date = modules_get_first_contact_date($id_agent_module);
if ($date_init < $first_date) {
$date_init = $first_date;
}
$diff = $date_end - $date_init;
return ($diff / $interval);
}
function modules_get_data_with_value($id_agent_module, $date_init,
$date_end, $value, $split_interval = false) {
global $config;
// TODO REMOVE THE TIME IN PLANNED DOWNTIME
// TODO FOR OTHER KIND OF DATA
if (!is_numeric($date_init)) {
$date_init = strtotime($date_init);
}
if (!is_numeric($date_end)) {
$date_end = strtotime($date_end);
}
$sql = "
SELECT *
FROM tagente_datos
WHERE
datos = " . (int)$value . "
AND id_agente_modulo = " . (int)$id_agent_module . "
AND (utimestamp >= " . $date_init . " AND utimestamp <= " . $date_end . ")";
$data = db_get_all_rows_sql($sql,
$config['history_db_enabled']);
if (empty($data)) {
$data = array();
}
if ($split_interval) {
$temp = array();
$previous_utimestamp = false;
foreach ($data as $row) {
if ($previous_utimestamp === false) {
$previous_utimestamp = $row['utimestamp'];
$temp[] = $row;
}
else {
$diff = $row['utimestamp'] - $previous_utimestamp;
$interval = modules_get_interval($id_agent_module);
if ($diff > $interval) {
$fake_count = (int)($diff / $interval);
$fake = $row;
for ($iterator = 1; $iterator <= $fake_count; $iterator++) {
$fake['utimestamp'] = $previous_utimestamp + ($iterator * $interval);
$temp[] = $fake;
}
}
else {
$temp[] = $row;
}
$previous_utimestamp = $row['utimestamp'];
$data = $temp;
}
}
}
return $data;
}
function modules_get_first_contact_date($id_agent_module) {
global $config;
// TODO REMOVE THE TIME IN PLANNED DOWNTIME
// TODO FOR OTHER KIND OF DATA
$sql = "
SELECT utimestamp
FROM tagente_datos
WHERE id_agente_modulo = " . (int)($id_agent_module) . "
ORDER BY utimestamp ASC
LIMIT 1";
$first_date = db_get_sql($sql, 0, $config['history_db_enabled']);
return $first_date;
}
?>

View File

@ -155,6 +155,12 @@ function reporting_make_reporting_data($id_report, $date, $time,
$report,
$content);
break;
case 'availability':
$report['contents'][] =
reporting_availability(
$report,
$content);
break;
case 'sql':
$report['contents'][] = reporting_sql(
$report,
@ -608,6 +614,232 @@ function reporting_sql($report, $content) {
return reporting_check_structure_content($return);
}
function reporting_availability($report, $content) {
global $config;
$return = array();
$return['type'] = 'availability';
$return['subtype'] = $content['group_by_agent'];
$return['resume'] = $content['show_resume'];
if (empty($content['name'])) {
$content['name'] = __('Availability');
}
$return['title'] = $content['name'];
$return["description"] = $content["description"];
$return["date"] = reporting_get_date_text(
$report,
$content);
if ($content['show_graph']) {
$return['kind_availability'] = "address";
}
else {
$return['kind_availability'] = "module";
}
$sql = sprintf("
SELECT id_agent_module,
server_name, operation
FROM treport_content_item
WHERE id_report_content = %d",
$content['id_rc']);
$items = db_process_sql ($sql);
$data = array();
$avg = 0;
$min = null;
$min_text = "";
$max = null;
$max_text = "";
$count = 0;
foreach ($items as $item) {
//aaMetaconsole connection
$server_name = $item ['server_name'];
if (($config ['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) {
$connection = metaconsole_get_connection($server_name);
if (metaconsole_load_external_db($connection) != NOERR) {
//ui_print_error_message ("Error connecting to ".$server_name);
continue;
}
}
if (modules_is_disable_agent($item['id_agent_module'])) {
continue;
}
$row = array();
$text = "";
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
if ($content['show_graph']) {
$text = $row['availability_item'] = agents_get_address(
modules_get_agentmodule_agent($item['id_agent_module']));
if (empty($text)) {
$text = $row['availability_item'] = __('No Address');
}
}
else {
$text = $row['availability_item'] = modules_get_agentmodule_name(
$item['id_agent_module']);
}
$row['agent'] = modules_get_agentmodule_agent_name(
$item['id_agent_module']);
$text = $row['agent'] . " (" . $text . ")";
$count_checks = modules_get_count_datas(
$item['id_agent_module'],
$report["datetime"] - $content['period'],
$report["datetime"]);
if (empty($count_checks)) {
$row['checks'] = __('Unknown');
$row['failed'] = __('Unknown');
$row['fail'] = __('Unknown');
$row['poling_time'] = __('Unknown');
$row['time_unavaliable'] = __('Unknown');
$row['ok'] = __('Unknown');
$percent_ok = 0;
}
else {
$count_fails = count(
modules_get_data_with_value(
$item['id_agent_module'],
$report["datetime"] - $content['period'],
$report["datetime"],
0, true));
$percent_ok = (($count_checks - $count_fails) * 100) / $count_checks;
$percent_fail = 100 - $percent_ok;
$row['ok'] = format_numeric($percent_ok, 2) . " %";
$row['fail'] = format_numeric($percent_fail, 2) . " %";
$row['checks'] = format_numeric($count_checks, 2);
$row['failed'] = format_numeric($count_fails ,2);
$row['poling_time'] = human_time_description_raw(
($count_checks - $count_fails) * modules_get_interval($item['id_agent_module']),
true);
$row['time_unavaliable'] = "-";
if ($count_fails > 0) {
$row['time_unavaliable'] = human_time_description_raw(
$count_fails * modules_get_interval($item['id_agent_module']),
true);
}
}
$data[] = $row;
$avg = (($avg * $count) + $percent_ok) / ($count + 1);
if (is_null($min)) {
$min = $percent_ok;
$min_text = $text;
}
else {
if ($min > $percent_ok) {
$min = $percent_ok;
$min_text = $text;
}
}
if (is_null($max)) {
$max = $percent_ok;
$max_text = $text;
}
else {
if ($max < $percent_ok) {
$max = $percent_ok;
$max_text = $text;
}
}
//Restore dbconnection
if (($config ['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) {
metaconsole_restore_db();
}
$count++;
}
switch ($content['order_uptodown']) {
case REPORT_ITEM_ORDER_BY_AGENT_NAME:
$temp = array();
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if (strcmp($row['agent'], $t_row['agent']) < 0) {
break;
}
$i++;
}
array_splice($temp, $i, 0, array($row));
}
$data = $temp;
break;
case REPORT_ITEM_ORDER_BY_ASCENDING:
$temp = array();
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if (strcmp($row['availability_item'], $t_row['availability_item']) < 0) {
break;
}
$i++;
}
array_splice($temp, $i, 0, array($row));
}
$data = $temp;
break;
case REPORT_ITEM_ORDER_BY_DESCENDING:
$temp = array();
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if (strcmp($row['availability_item'], $t_row['availability_item']) > 0) {
break;
}
$i++;
}
array_splice($temp, $i, 0, array($row));
}
$data = $temp;
break;
}
$return["data"] = $data;
$return["resume"] = array();
$return["resume"]['min_text'] = $min_text;
$return["resume"]['min'] = $min;
$return["resume"]['avg'] = $avg;
$return["resume"]['max_text'] = $max_text;
$return["resume"]['max'] = $max;
return reporting_check_structure_content($return);
}
function reporting_general($report, $content) {
global $config;
@ -992,6 +1224,12 @@ function reporting_simple_graph($report, $content, $type = 'dinamic',
}
else {
// HACK it is saved in show_graph field.
$time_compare_overlapped = false;
if ($content['show_graph']) {
$time_compare_overlapped = 'overlapped';
}
$return['chart'] = grafico_modulo_sparse(
$content['id_agent_module'],
$content['period'],
@ -1013,7 +1251,7 @@ function reporting_simple_graph($report, $content, $type = 'dinamic',
1,
false,
'',
false,
$time_compare_overlapped,
true);
}
break;

View File

@ -125,6 +125,9 @@ function reporting_html_print_report($report, $mini = false) {
}
switch ($item['type']) {
case 'availability':
reporting_html_availability($table, $item);
break;
case 'general':
reporting_html_general($table, $item);
break;
@ -343,6 +346,93 @@ function reporting_html_text(&$table, $item) {
$table->data['data']['cell'] = $item['data'];
}
function reporting_html_availability(&$table, $item) {
if (!empty($item["data"])) {
$table1->width = '99%';
$table1->data = array ();
$table1->head = array ();
$table1->head[0] = __('Agent');
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
if ($item['kind_availability'] == 'address') {
$table1->head[1] = __('IP Address');
}
else {
$table1->head[1] = __('Module');
}
$table1->head[2] = __('# Checks');
$table1->head[3] = __('# Failed');
$table1->head[4] = __('% Fail');
$table1->head[5] = __('Poling time');
$table1->head[6] = __('Time unavailable');
$table1->head[7] = __('% Ok');
$table1->style[0] = 'text-align: left';
$table1->style[1] = 'text-align: left';
$table1->style[2] = 'text-align: right';
$table1->style[3] = 'text-align: right';
$table1->style[4] = 'text-align: right';
$table1->style[5] = 'text-align: right';
$table1->style[6] = 'text-align: right';
$table1->style[7] = 'text-align: right';
foreach ($item['data'] as $row) {
$table_row = array();
$table_row[] = $row['agent'];
$table_row[] = $row['availability_item'];
$table_row[] = $row['checks'];
$table_row[] = $row['failed'];
$table_row[] = $row['fail'];
$table_row[] = $row['poling_time'];
$table_row[] = $row['time_unavaliable'];
$table_row[] = $row['ok'];
$table1->data[] = $table_row;
}
}
else {
$table->colspan['error']['cell'] = 3;
$table->data['error']['cell'] =
__('There are no Agent/Modules defined');
}
$table->colspan[1][0] = 3;
$data = array();
$data[0] = html_print_table($table1, true);
array_push ($table->data, $data);
if ($item['resume'] && !empty($item["data"])) {
$table1->width = '99%';
$table1->data = array ();
$table1->head = array ();
$table1->style = array();
$table1->head['min_text'] = '';
$table1->head['min'] = __('Min Value');
$table1->head['avg'] = __('Average Value');
$table1->head['max_text'] = '';
$table1->head['max'] = __('Max Value');
$table1->style['min_text'] = 'text-align: left';
$table1->style['min'] = 'text-align: right';
$table1->style['avg'] = 'text-align: right';
$table1->style['max_text'] = 'text-align: left';
$table1->style['max'] = 'text-align: right';
$table1->data[] = array(
'min_text' => $item['resume']['min_text'],
'min' => format_numeric($item['resume']['min'], 2) . "%",
'avg' => format_numeric($item['resume']['avg'], 2) . "%",
'max_text' => $item['resume']['max_text'],
'max' => format_numeric($item['resume']['max'], 2) . "%"
);
$table->colspan[2][0] = 3;
$data = array();
$data[0] = html_print_table($table1, true);
array_push ($table->data, $data);
}
}
function reporting_html_general(&$table, $item) {
if (!empty($item["data"])) {

View File

@ -578,7 +578,8 @@ function reports_get_report_types ($template = false, $not_editor = false) {
'name' => __('Top n'));
$types['network_interfaces_report'] = array('optgroup' => __('Grouped'),
'name' => __('Network interfaces'));
$types['availability'] = array('optgroup' => __('Grouped'),
'name' => __('Availability'));
$types['text'] = array('optgroup' => __('Text/HTML '),

View File

@ -231,7 +231,7 @@ else {
}
echo '<form method="post" action="'.$url.'&pure='.$config["pure"].'" style="margin-right: 0px;">';
echo '<form method="post" action="' . $url . '&pure=' . $config["pure"] . '" style="margin-right: 0px;">';
html_print_table ($table);
html_print_input_hidden ('id_report', $id_report);
echo '</form>';