- \n";
echo ''.io_safe_output($item['type'])."\n";
diff --git a/pandora_console/extensions/resource_registration.php b/pandora_console/extensions/resource_registration.php
index dae61e3a78..80fed2cf6c 100755
--- a/pandora_console/extensions/resource_registration.php
+++ b/pandora_console/extensions/resource_registration.php
@@ -37,8 +37,16 @@ function insert_item_report($report_id, $values)
ui_print_result_message(
$result,
- sprintf(__("Success add '%s' item in report '%s'."), $values['type'], $name),
- sprintf(__("Error create '%s' item in report '%s'."), $values['type'], $name)
+ sprintf(
+ __("Success add '%s' item in report '%s'."),
+ $values['type'],
+ $name
+ ),
+ sprintf(
+ __("Error create '%s' item in report '%s'."),
+ $values['type'],
+ $name
+ )
);
}
}
@@ -55,9 +63,12 @@ function process_upload_xml_report($xml, $group_filter=0)
$posible_name = $values['name'];
$exist = true;
$loops = 30;
- // Loops to exit or tries
+ // Loops to exit or tries.
while ($exist && $loops > 0) {
- $exist = (bool) db_get_row_filter('treport', ['name' => io_safe_input($posible_name)]);
+ $exist = (bool) db_get_row_filter(
+ 'treport',
+ ['name' => io_safe_input($posible_name)]
+ );
if ($exist) {
$loops--;
@@ -74,7 +85,7 @@ function process_upload_xml_report($xml, $group_filter=0)
);
break;
} else if ($loops != 30) {
- ui_print_error_message(
+ ui_print_warning_message(
sprintf(
__("Warning create '%s' report, the name exist, the report have a name %s."),
$reportElement->name,
@@ -89,13 +100,22 @@ function process_upload_xml_report($xml, $group_filter=0)
break;
}
- $id_group = db_get_value('id_grupo', 'tgrupo', 'nombre', $reportElement->group);
- if ($id_group === false) {
- ui_print_error_message(__("Error the report haven't group."));
- break;
+ if (isset($reportElement->group) === true
+ && empty($reportElement->group) === false
+ ) {
+ $id_group = db_get_value(
+ 'id_grupo',
+ 'tgrupo',
+ 'nombre',
+ $reportElement->group
+ );
+ if ($id_group === false) {
+ ui_print_error_message(__("Error the report haven't group."));
+ break;
+ }
}
- if (isset($reportElement->description)) {
+ if (isset($reportElement->description) === true) {
$values['description'] = $reportElement->description;
}
@@ -108,9 +128,19 @@ function process_upload_xml_report($xml, $group_filter=0)
);
if ($id_report) {
- db_pandora_audit('Report management', 'Create report '.$id_report, false, false);
+ db_pandora_audit(
+ 'Report management',
+ 'Create report '.$id_report,
+ false,
+ false
+ );
} else {
- db_pandora_audit('Report management', 'Fail to create report', false, false);
+ db_pandora_audit(
+ 'Report management',
+ 'Fail to create report',
+ false,
+ false
+ );
break;
}
@@ -119,45 +149,52 @@ function process_upload_xml_report($xml, $group_filter=0)
$values = [];
$values['id_report'] = $id_report;
- if (isset($item['description'])) {
+ if (isset($item['description']) === true) {
$values['description'] = io_safe_input($item['description']);
}
- if (isset($item['period'])) {
+ if (isset($item['period']) === true) {
$values['period'] = io_safe_input($item['period']);
}
- if (isset($item['type'])) {
+ if (isset($item['type']) === true) {
$values['type'] = io_safe_input($item['type']);
}
$agents_item = [];
- if (isset($item['agent'])) {
+ if (isset($item['agent']) === true) {
$agents = agents_get_agents(
['id_grupo' => $group_filter],
[
'id_agente',
- 'nombre',
+ 'alias',
]
);
- $agent_clean = str_replace(['[', ']'], '', $item['agent']);
+ $agent_clean = str_replace(
+ [
+ '[',
+ ']',
+ ],
+ '',
+ io_safe_output($item['agent'])
+ );
$regular_expresion = ($agent_clean != $item['agent']);
foreach ($agents as $agent) {
if ($regular_expresion) {
- if ((bool) preg_match('/'.$agent_clean.'/', io_safe_output($agent['nombre']))) {
- $agents_item[$agent['id_agente']]['name'] = $agent['nombre'];
+ if ((bool) preg_match('/'.$agent_clean.'/', io_safe_output($agent['alias']))) {
+ $agents_item[$agent['id_agente']]['name'] = $agent['alias'];
}
} else {
- if ($agent_clean == io_safe_output($agent['nombre'])) {
- $agents_item[$agent['id_agente']]['name'] = $agent['nombre'];
+ if ($agent_clean == io_safe_output($agent['alias'])) {
+ $agents_item[$agent['id_agente']]['name'] = $agent['alias'];
}
}
}
}
- if (isset($item['module'])) {
+ if (isset($item['module']) === true) {
$module_clean = str_replace(['[', ']'], '', $item['module']);
$regular_expresion = ($module_clean != $item['module']);
diff --git a/pandora_console/extras/mr/42.sql b/pandora_console/extras/mr/42.sql
index 26f20e0f0a..f4bed54d16 100644
--- a/pandora_console/extras/mr/42.sql
+++ b/pandora_console/extras/mr/42.sql
@@ -31,4 +31,6 @@ ALTER TABLE `treport` ADD COLUMN `index_render` tinyint(1) NOT NULL DEFAULT 1;
ALTER TABLE `treport_template` ADD COLUMN `cover_page_render` tinyint(1) NOT NULL DEFAULT 1;
ALTER TABLE `treport_template` ADD COLUMN `index_render` tinyint(1) NOT NULL DEFAULT 1;
+UPDATE `tconfig` SET value = '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}' WHERE token = 'post_process_custom_values';
+
COMMIT;
\ No newline at end of file
diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql
index 664a7749e1..b1e8f60aad 100644
--- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql
+++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql
@@ -1405,6 +1405,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_type', '');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_status', '');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_title', '');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_content', '');
+INSERT INTO `tconfig` (`token`, `value`) VALUES ('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}');
-- ---------------------------------------------------------------------
-- Table `tconfig_os`
diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index 230b55a476..d6a760413b 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -114,7 +114,9 @@ if ($get_comments) {
sprintf(
' HAVING max_id_evento = %d',
$event['id_evento']
- )
+ ),
+ // True for show comments of validated events.
+ true
);
if ($events !== false) {
$event = $events[0];
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index e490b8d671..7b8578f503 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
/**
* Pandora build version and version
*/
-$build_version = 'PC201029';
+$build_version = 'PC201030';
$pandora_version = 'v7.0NG.750';
// Do not overwrite default timezone set if defined.
diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index 7b598f7ab2..56df5325cd 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -673,15 +673,16 @@ function events_update_status($id_evento, $status, $filter=null, $history=false)
/**
* Retrieve all events filtered.
*
- * @param array $fields Fields to retrieve.
- * @param array $filter Filters to be applied.
- * @param integer $offset Offset (pagination).
- * @param integer $limit Limit (pagination).
- * @param string $order Sort order.
- * @param string $sort_field Sort field.
- * @param boolean $history Apply on historical table.
- * @param boolean $return_sql Return SQL (true) or execute it (false).
- * @param string $having Having filter.
+ * @param array $fields Fields to retrieve.
+ * @param array $filter Filters to be applied.
+ * @param integer $offset Offset (pagination).
+ * @param integer $limit Limit (pagination).
+ * @param string $order Sort order.
+ * @param string $sort_field Sort field.
+ * @param boolean $history Apply on historical table.
+ * @param boolean $return_sql Return SQL (true) or execute it (false).
+ * @param string $having Having filter.
+ * @param boolean $validatedEvents If true, evaluate validated events.
*
* @return array Events.
* @throws Exception On error.
@@ -695,7 +696,8 @@ function events_get_all(
$sort_field=null,
$history=false,
$return_sql=false,
- $having=''
+ $having='',
+ $validatedEvents=false
) {
global $config;
@@ -912,10 +914,20 @@ function events_get_all(
break;
case EVENT_NO_VALIDATED:
+ // Show comments in validated events.
+ $validatedState = '';
+ if ($validatedEvents === true) {
+ $validatedState = sprintf(
+ 'OR estado = %d',
+ EVENT_VALIDATE
+ );
+ }
+
$sql_filters[] = sprintf(
- ' AND (estado = %d OR estado = %d)',
+ ' AND (estado = %d OR estado = %d %s)',
EVENT_NEW,
- EVENT_PROCESS
+ EVENT_PROCESS,
+ $validatedState
);
break;
}
@@ -1540,26 +1552,18 @@ function events_get_event($id, $fields=false, $meta=false, $history=false)
/**
* Retrieve all events ungrouped.
*
- * @param string $sql_post Sql_post.
- * @param integer $offset Offset.
- * @param integer $pagination Pagination.
- * @param boolean $meta Meta.
- * @param boolean $history History.
- * @param boolean $total Total.
- * @param boolean $history_db History_db.
- * @param string $order Order.
+ * @param string $sql_post Sql_post.
+ * @param boolean $meta Meta.
+ * @param boolean $history History.
+ * @param boolean $returnSql Only Query.
*
* @return mixed Array of events or false.
*/
function events_get_events_no_grouped(
$sql_post,
- $offset=0,
- $pagination=1,
$meta=false,
$history=false,
- $total=false,
- $history_db=false,
- $order='ASC'
+ $returnSql=false
) {
global $config;
@@ -1569,7 +1573,11 @@ function events_get_events_no_grouped(
$sql .= events_get_secondary_groups_left_join($table);
$sql .= $sql_post;
- $events = db_get_all_rows_sql($sql, $history_db);
+ if ($returnSql === true) {
+ return $sql;
+ }
+
+ $events = db_get_all_rows_sql($sql, $history);
return $events;
}
@@ -1622,29 +1630,59 @@ function events_get_events_grouped(
$event_lj = events_get_secondary_groups_left_join($table);
if ($total) {
$sql = "SELECT COUNT(*) FROM (SELECT id_evento
- FROM $table te $event_lj
- WHERE 1=1 ".$sql_post.'
+ FROM $table te $event_lj ".$sql_post.'
GROUP BY estado, evento, id_agente, id_agentmodule'.$groupby_extra.') AS t';
} else {
- $sql = "SELECT *, MAX(id_evento) AS id_evento,
- GROUP_CONCAT(DISTINCT user_comment SEPARATOR '
') AS user_comment,
- GROUP_CONCAT(DISTINCT id_evento SEPARATOR ',') AS similar_ids,
- COUNT(id_evento) AS event_rep, MAX(utimestamp) AS timestamp_rep,
- MIN(utimestamp) AS timestamp_rep_min,
- (SELECT owner_user FROM $table WHERE id_evento = MAX(te.id_evento)) owner_user,
- (SELECT id_usuario FROM $table WHERE id_evento = MAX(te.id_evento)) id_usuario,
- (SELECT id_agente FROM $table WHERE id_evento = MAX(te.id_evento)) id_agente,
- (SELECT criticity FROM $table WHERE id_evento = MAX(te.id_evento)) AS criticity,
- (SELECT ack_utimestamp FROM $table WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp,
- (SELECT nombre FROM tagente_modulo WHERE id_agente_modulo = te.id_agentmodule) AS module_name
- FROM $table te $event_lj
- WHERE 1=1 ".$sql_post.'
- GROUP BY estado, evento, id_agente, id_agentmodule'.$groupby_extra;
- $sql .= ' '.events_get_sql_order($sort_field, $order, 2);
- $sql .= ' LIMIT '.$offset.','.$pagination;
+ $sql = sprintf(
+ 'SELECT *,
+ MAX(id_evento) AS id_evento,
+ GROUP_CONCAT(
+ DISTINCT user_comment SEPARATOR "
"
+ ) AS user_comment,
+ GROUP_CONCAT(
+ DISTINCT id_evento SEPARATOR ","
+ ) AS similar_ids,
+ COUNT(id_evento) AS event_rep, MAX(utimestamp) AS timestamp_rep,
+ MIN(utimestamp) AS timestamp_rep_min,
+ (SELECT owner_user
+ FROM %s
+ WHERE id_evento = MAX(te.id_evento)) AS owner_user,
+ (SELECT id_usuario
+ FROM %s
+ WHERE id_evento = MAX(te.id_evento)) AS id_usuario,
+ (SELECT id_agente
+ FROM %s
+ WHERE id_evento = MAX(te.id_evento)) AS id_agente,
+ (SELECT criticity
+ FROM %s
+ WHERE id_evento = MAX(te.id_evento)) AS criticity,
+ (SELECT ack_utimestamp
+ FROM %s
+ WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp,
+ (SELECT nombre
+ FROM tagente_modulo
+ WHERE id_agente_modulo = te.id_agentmodule) AS module_name
+ FROM %s te %s
+ %s
+ GROUP BY estado, evento, id_agente, id_agentmodule %s
+ %s
+ LIMIT %d, %d',
+ $table,
+ $table,
+ $table,
+ $table,
+ $table,
+ $table,
+ $event_lj,
+ $sql_post,
+ $groupby_extra,
+ events_get_sql_order($sort_field, $order, 2),
+ $offset,
+ $pagination
+ );
}
- // Extract the events by filter (or not) from db
+ // Extract the events by filter (or not) from db.
$events = db_get_all_rows_sql($sql, $history_db);
if ($total) {
@@ -2959,7 +2997,8 @@ function events_get_agent(
$type = [];
foreach ($filter_event_type as $event_type) {
if ($event_type != '') {
- // If normal, warning, could be several (going_up_warning, going_down_warning... too complex.
+ // If normal, warning, could be several
+ // (going_up_warning, going_down_warning... too complex.
// Shown to user only "warning, critical and normal".
if ($event_type == 'warning' || $event_type == 'critical' || $event_type == 'normal') {
$type[] = " event_type LIKE '%".$event_type."%' ";
@@ -2979,10 +3018,10 @@ function events_get_agent(
}
if ($events_group) {
- $sql_where .= sprintf(
+ $secondary_groups = sprintf(
' INNER JOIN tgrupo tg
- ON (te.id_grupo = tg.id_grupo AND tg.id_grupo = %s)
- OR (tg.id_grupo = tasg.id_group AND tasg.id_group = %s)
+ ON (te.id_grupo = tg.id_grupo AND tg.id_grupo IN (%s))
+ OR (tg.id_grupo = tasg.id_group AND tasg.id_group IN (%s))
WHERE utimestamp > %d
AND utimestamp <= %d ',
join(',', $id_group),
@@ -2990,22 +3029,27 @@ function events_get_agent(
$datelimit,
$date
);
- } else if ($events_module) {
- $sql_where .= sprintf(
- ' AND id_agentmodule = %d AND utimestamp > %d
- AND utimestamp <= %d ',
- $id_agent_module,
- $datelimit,
- $date
- );
+ $sql_where = $secondary_groups.' '.$sql_where;
} else {
- $sql_where .= sprintf(
- ' AND id_agente = %d AND utimestamp > %d
- AND utimestamp <= %d ',
- $id_agent,
- $datelimit,
- $date
- );
+ $sql_where = ' WHERE 1=1 '.$sql_where;
+
+ if ($events_module) {
+ $sql_where .= sprintf(
+ ' AND id_agentmodule = %d AND utimestamp > %d
+ AND utimestamp <= %d ',
+ $id_agent_module,
+ $datelimit,
+ $date
+ );
+ } else {
+ $sql_where .= sprintf(
+ ' AND id_agente = %d AND utimestamp > %d
+ AND utimestamp <= %d ',
+ $id_agent,
+ $datelimit,
+ $date
+ );
+ }
}
if (is_metaconsole() && $id_server) {
@@ -3025,11 +3069,7 @@ function events_get_agent(
} else {
return events_get_events_no_grouped(
$sql_where,
- 0,
- 1000,
(is_metaconsole() && $id_server) ? true : false,
- false,
- false,
$history
);
}
@@ -3682,6 +3722,38 @@ function events_get_response_target(
$event_response = db_get_row('tevent_response', 'id', $response_id);
$target = io_safe_output($event_response['target']);
+ if (strpos($target, '_agent_alias_') !== false) {
+ if ($meta) {
+ $agente_table_name = 'tmetaconsole_agent';
+ $filter = [
+ 'id_tagente' => $event['id_agente'],
+ 'id_tmetaconsole_setup' => $server_id,
+ ];
+ } else {
+ $agente_table_name = 'tagente';
+ $filter = ['id_agente' => $event['id_agente']];
+ }
+
+ $alias = db_get_value_filter('alias', $agente_table_name, $filter);
+ $target = str_replace('_agent_alias_', io_safe_output($alias), $target);
+ }
+
+ if (strpos($target, '_agent_name_') !== false) {
+ if ($meta) {
+ $agente_table_name = 'tmetaconsole_agent';
+ $filter = [
+ 'id_tagente' => $event['id_agente'],
+ 'id_tmetaconsole_setup' => $server_id,
+ ];
+ } else {
+ $agente_table_name = 'tagente';
+ $filter = ['id_agente' => $event['id_agente']];
+ }
+
+ $name = db_get_value_filter('nombre', $agente_table_name, $filter);
+ $target = str_replace('_agent_name_', io_safe_output($name), $target);
+ }
+
// Substitute each macro.
if (strpos($target, '_agent_address_') !== false) {
if ($meta) {
@@ -3761,7 +3833,7 @@ function events_get_response_target(
if (strpos($target, '_group_name_') !== false) {
$target = str_replace(
'_group_name_',
- groups_get_name($event['id_grupo'], true),
+ io_safe_output(groups_get_name($event['id_grupo'], true)),
$target
);
}
@@ -3777,7 +3849,7 @@ function events_get_response_target(
if (strpos($target, '_event_date_') !== false) {
$target = str_replace(
'_event_date_',
- date($config['date_format'], $event['utimestamp']),
+ io_safe_output(date($config['date_format'], $event['utimestamp'])),
$target
);
}
@@ -3801,7 +3873,7 @@ function events_get_response_target(
if (strpos($target, '_alert_id_') !== false) {
$target = str_replace(
'_alert_id_',
- empty($event['is_alert_am']) ? __('N/A') : $event['is_alert_am'],
+ empty($event['id_alert_am']) ? __('N/A') : $event['id_alert_am'],
$target
);
}
@@ -3883,6 +3955,15 @@ function events_get_response_target(
$target = str_replace('_current_user_', $config['id_user'], $target);
}
+ // This will replace the macro with the command timeout value.
+ if (strpos($target, '_command_timeout_') !== false) {
+ $target = str_replace(
+ '_command_timeout_',
+ $event_response['command_timeout'],
+ $target
+ );
+ }
+
return $target;
}
@@ -6963,7 +7044,7 @@ function events_get_field_value_by_event_id(
if (strpos($value, '_group_name_') !== false) {
$value = str_replace(
'_group_name_',
- groups_get_name($event['id_grupo'], true),
+ io_safe_output(groups_get_name($event['id_grupo'], true)),
$value
);
}
@@ -6979,7 +7060,9 @@ function events_get_field_value_by_event_id(
if (strpos($value, '_event_date_') !== false) {
$value = str_replace(
'_event_date_',
- date($config['date_format'], $event['utimestamp']),
+ io_safe_output(
+ date($config['date_format'], $event['utimestamp'])
+ ),
$value
);
}
diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php
index 4fd1439f8f..f40b75e3b2 100644
--- a/pandora_console/include/functions_graph.php
+++ b/pandora_console/include/functions_graph.php
@@ -2541,13 +2541,9 @@ function graphic_agentaccess(
} else {
$options['generals']['pdf']['width'] = 350;
$options['generals']['pdf']['height'] = 125;
- if (!empty($data_array)) {
- $imgbase64 = '
';
- } else {
- $imgbase64 .= vbar_graph($data_array, $options, 2);
- }
+ $imgbase64 = '
';
return $imgbase64;
}
diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php
index 539bc46dc6..479adc67c8 100755
--- a/pandora_console/include/functions_reporting.php
+++ b/pandora_console/include/functions_reporting.php
@@ -2957,7 +2957,7 @@ function reporting_group_report($report, $content)
if (empty($id_group)) {
$events = [];
} else {
- $sql_where = sprintf(' AND id_grupo IN (%s) AND estado<>1 ', implode(',', $id_group));
+ $sql_where = sprintf(' WHERE id_grupo IN (%s) AND estado<>1 ', implode(',', $id_group));
$events = events_get_events_grouped(
$sql_where,
0,
diff --git a/pandora_console/include/functions_treeview.php b/pandora_console/include/functions_treeview.php
index 25e0f67020..67bed22be3 100755
--- a/pandora_console/include/functions_treeview.php
+++ b/pandora_console/include/functions_treeview.php
@@ -802,7 +802,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
$events_graph = '';
$events_graph .= graph_graphic_agentevents(
$id_agente,
- '385px;',
+ '340px;margin:0',
45,
SECONDS_1DAY,
'',
diff --git a/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js b/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js
index 6466a72835..47b8879ace 100644
--- a/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js
+++ b/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js
@@ -1,425 +1,424 @@
-(function ($) {
- var options = {
- export: {
- export_data: false, // or true
- labels_long: null,
- homeurl: "",
- },
- };
+(function($) {
+ var options = {
+ export: {
+ export_data: false, // or true
+ labels_long: null,
+ homeurl: ""
+ }
+ };
- function init(plot) {
- plot.exportDataCSV = function (args) {
- //amount = plot.getOptions().export.type,
- //options = options || {};
+ function init(plot) {
+ plot.exportDataCSV = function(args) {
+ //amount = plot.getOptions().export.type,
+ //options = options || {};
- // Options
- var type = "csv";
- type = type.toLowerCase().trim();
+ // Options
+ var type = "csv";
+ type = type.toLowerCase().trim();
- var graphData,
- dataObject,
- dataObjects = plot.getData(),
- result = [];
+ var graphData,
+ dataObject,
+ dataObjects = plot.getData(),
+ result = [];
- // Throw errors
- var retrieveDataOject = function (dataObjects) {
- var result;
+ // Throw errors
+ var retrieveDataOject = function(dataObjects) {
+ var result;
- if (typeof dataObjects === "undefined")
- throw new Error("Empty parameter");
+ if (typeof dataObjects === "undefined")
+ throw new Error("Empty parameter");
- // Try to retrieve the avg set (not 100% reliable, I know)
- if (dataObjects.length == 1) {
- result = dataObjects.shift();
- }
- if (dataObjects.length > 1) {
- dataObjects.forEach(function (element) {
- if (/^Avg.:/i.test(element.label)) result = element;
- });
+ // Try to retrieve the avg set (not 100% reliable, I know)
+ if (dataObjects.length == 1) {
+ result = dataObjects.shift();
+ }
+ if (dataObjects.length > 1) {
+ dataObjects.forEach(function(element) {
+ if (/^Avg.:/i.test(element.label)) result = element;
+ });
- // If the avg set is missing, retrieve the first set
- if (typeof result === "undefined") result = dataObjects.shift();
- }
+ // If the avg set is missing, retrieve the first set
+ if (typeof result === "undefined") result = dataObjects.shift();
+ }
- if (typeof result === "undefined") throw new Error("Empty result");
+ if (typeof result === "undefined") throw new Error("Empty result");
- return result;
- };
+ return result;
+ };
- // Throw errors
- var processDataObject = function (dataObject) {
- var result;
+ // Throw errors
+ var processDataObject = function(dataObject) {
+ var result;
- if (typeof dataObject === "undefined")
- throw new Error("Empty parameter");
+ if (typeof dataObject === "undefined")
+ throw new Error("Empty parameter");
- if (
- typeof dataObject.data === "undefined" ||
- !(dataObject.data instanceof Array)
- )
- throw new Error("Object malformed");
+ if (
+ typeof dataObject.data === "undefined" ||
+ !(dataObject.data instanceof Array)
+ )
+ throw new Error("Object malformed");
- /* {
- * head: [,,...,],
- * data: [
- * [,,...,],
- * [,,...,],
- * ...,
- * [,,...,],
- * ]
- * }
- */
- if (type === "csv") {
- result = {
- head: ["timestap", "date", "value", "label"],
- data: [],
- };
+ /* {
+ * head: [,,...,],
+ * data: [
+ * [,,...,],
+ * [,,...,],
+ * ...,
+ * [,,...,],
+ * ]
+ * }
+ */
+ if (type === "csv") {
+ result = {
+ head: ["timestamp", "date", "value", "label"],
+ data: []
+ };
- dataObject.data.forEach(function (item, index) {
- var timestap = item[0];
+ dataObject.data.forEach(function(item, index) {
+ var timestamp = item[0];
- var d = new Date(item[0]);
- var monthNames = [
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec",
- ];
+ var d = new Date(item[0]);
+ var monthNames = [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ];
- date_format =
- (d.getDate() < 10 ? "0" : "") +
- d.getDate() +
- " " +
- monthNames[d.getMonth()] +
- " " +
- d.getFullYear() +
- " " +
- (d.getHours() < 10 ? "0" : "") +
- d.getHours() +
- ":" +
- (d.getMinutes() < 10 ? "0" : "") +
- d.getMinutes() +
- ":" +
- (d.getSeconds() < 10 ? "0" : "") +
- d.getSeconds();
+ date_format =
+ (d.getDate() < 10 ? "0" : "") +
+ d.getDate() +
+ " " +
+ monthNames[d.getMonth()] +
+ " " +
+ d.getFullYear() +
+ " " +
+ (d.getHours() < 10 ? "0" : "") +
+ d.getHours() +
+ ":" +
+ (d.getMinutes() < 10 ? "0" : "") +
+ d.getMinutes() +
+ ":" +
+ (d.getSeconds() < 10 ? "0" : "") +
+ d.getSeconds();
- var date = date_format;
+ var date = date_format;
- var value = item[1];
+ var value = item[1];
- var clean_label = plot.getOptions().export.labels_long[
- dataObject.label
- ];
- clean_label = clean_label.replace(new RegExp(" ", "g"), " ");
- result.data.push([timestap, date, value, clean_label]);
- });
- } else if (type === "json") {
- /* [
- * {
- * 'date': ,
- * 'value':
- * }
- * ],
- * [
- * {
- * 'date': ,
- * 'value':
- * }
- * ],
- * ...,
- * [
- * {
- * 'date': ,
- * 'value':
- * }
- * ]
- */
- result = [];
+ var clean_label = plot.getOptions().export.labels_long[
+ dataObject.label
+ ];
+ clean_label = clean_label.replace(new RegExp(" ", "g"), " ");
+ result.data.push([timestamp, date, value, clean_label]);
+ });
+ } else if (type === "json") {
+ /* [
+ * {
+ * 'date': ,
+ * 'value':
+ * }
+ * ],
+ * [
+ * {
+ * 'date': ,
+ * 'value':
+ * }
+ * ],
+ * ...,
+ * [
+ * {
+ * 'date': ,
+ * 'value':
+ * }
+ * ]
+ */
+ result = [];
- dataObject.data.forEach(function (item, index) {
- var date = "",
- value = item[1];
+ dataObject.data.forEach(function(item, index) {
+ var date = "",
+ value = item[1];
- // Long labels are preferred
- if (typeof labels_long[index] !== "undefined")
- date = labels_long[index];
- else if (typeof labels[index] !== "undefined") date = labels[index];
+ // Long labels are preferred
+ if (typeof labels_long[index] !== "undefined")
+ date = labels_long[index];
+ else if (typeof labels[index] !== "undefined") date = labels[index];
- result.push({
- date: date,
- value: value,
- label: dataObject.label,
- });
- });
- }
+ result.push({
+ date: date,
+ value: value,
+ label: dataObject.label
+ });
+ });
+ }
- if (typeof result === "undefined") throw new Error("Empty result");
+ if (typeof result === "undefined") throw new Error("Empty result");
- return result;
- };
+ return result;
+ };
- try {
- var elements = [];
- dataObject = retrieveDataOject(dataObjects);
- if (dataObject) {
- elements.push(processDataObject(dataObject));
- }
- dataObjects.forEach(function (element) {
- elements.push(processDataObject(element));
- });
- graphData = elements;
+ try {
+ var elements = [];
+ dataObject = retrieveDataOject(dataObjects);
+ if (dataObject) {
+ elements.push(processDataObject(dataObject));
+ }
+ dataObjects.forEach(function(element) {
+ elements.push(processDataObject(element));
+ });
+ graphData = elements;
+ // Transform the object data into a string
+ // cause PHP has limitations in the number
+ // of POST params received.
+ var graphDataStr = JSON.stringify(graphData);
- // Transform the object data into a string
- // cause PHP has limitations in the number
- // of POST params received.
- var graphDataStr = JSON.stringify(graphData);
+ // Build form
+ var $form = $(""),
+ $dataInput = $(""),
+ $typeInput = $(""),
+ $separatorInput = $(""),
+ $excelInput = $("");
- // Build form
- var $form = $(""),
- $dataInput = $(""),
- $typeInput = $(""),
- $separatorInput = $(""),
- $excelInput = $("");
+ $dataInput
+ .prop("name", "data")
+ .prop("type", "text")
+ .prop("value", graphDataStr);
- $dataInput
- .prop("name", "data")
- .prop("type", "text")
- .prop("value", graphDataStr);
+ $typeInput
+ .prop("name", "type")
+ .prop("type", "text")
+ .prop("value", type);
- $typeInput
- .prop("name", "type")
- .prop("type", "text")
- .prop("value", type);
+ $separatorInput
+ .prop("name", "separator")
+ .prop("type", "text")
+ .prop("value", ";");
- $separatorInput
- .prop("name", "separator")
- .prop("type", "text")
- .prop("value", ";");
+ $excelInput
+ .prop("name", "excel_encoding")
+ .prop("type", "text")
+ .prop("value", 0);
- $excelInput
- .prop("name", "excel_encoding")
- .prop("type", "text")
- .prop("value", 0);
+ $form
+ .prop("method", "POST")
+ .prop(
+ "action",
+ plot.getOptions().export.homeurl + "include/graphs/export_data.php"
+ )
+ .append($dataInput, $typeInput, $separatorInput, $excelInput)
+ .hide()
+ // Firefox made me write into the DOM for this :(
+ .appendTo("body")
+ .submit();
+ } catch (e) {
+ alert("There was an error exporting the data");
+ }
+ };
- $form
- .prop("method", "POST")
- .prop(
- "action",
- plot.getOptions().export.homeurl + "include/graphs/export_data.php"
- )
- .append($dataInput, $typeInput, $separatorInput, $excelInput)
- .hide()
- // Firefox made me write into the DOM for this :(
- .appendTo("body")
- .submit();
- } catch (e) {
- alert("There was an error exporting the data");
- }
- };
+ plot.exportDataJSON = function(args) {
+ //amount = plot.getOptions().export.type,
+ //options = options || {};
- plot.exportDataJSON = function (args) {
- //amount = plot.getOptions().export.type,
- //options = options || {};
+ // Options
+ var type = "json";
+ type = type.toLowerCase().trim();
- // Options
- var type = "json";
- type = type.toLowerCase().trim();
+ var graphData,
+ dataObject,
+ dataObjects = plot.getData(),
+ result = [];
- var graphData,
- dataObject,
- dataObjects = plot.getData(),
- result = [];
+ // Throw errors
+ var retrieveDataOject = function(dataObjects) {
+ var result;
- // Throw errors
- var retrieveDataOject = function (dataObjects) {
- var result;
+ if (typeof dataObjects === "undefined")
+ throw new Error("Empty parameter");
- if (typeof dataObjects === "undefined")
- throw new Error("Empty parameter");
+ // Try to retrieve the avg set (not 100% reliable, I know)
+ if (dataObjects.length == 1) {
+ result = dataObjects.shift();
+ }
+ if (dataObjects.length > 1) {
+ dataObjects.forEach(function(element) {
+ if (/^Avg.:/i.test(element.label)) result = element;
+ });
- // Try to retrieve the avg set (not 100% reliable, I know)
- if (dataObjects.length == 1) {
- result = dataObjects.shift();
- }
- if (dataObjects.length > 1) {
- dataObjects.forEach(function (element) {
- if (/^Avg.:/i.test(element.label)) result = element;
- });
+ // If the avg set is missing, retrieve the first set
+ if (typeof result === "undefined") result = dataObjects.shift();
+ }
- // If the avg set is missing, retrieve the first set
- if (typeof result === "undefined") result = dataObjects.shift();
- }
+ if (typeof result === "undefined") throw new Error("Empty result");
- if (typeof result === "undefined") throw new Error("Empty result");
+ return result;
+ };
- return result;
- };
+ // Throw errors
+ var processDataObject = function(dataObject) {
+ var result;
- // Throw errors
- var processDataObject = function (dataObject) {
- var result;
+ if (typeof dataObject === "undefined")
+ throw new Error("Empty parameter");
- if (typeof dataObject === "undefined")
- throw new Error("Empty parameter");
+ if (
+ typeof dataObject.data === "undefined" ||
+ !(dataObject.data instanceof Array)
+ )
+ throw new Error("Object malformed");
- if (
- typeof dataObject.data === "undefined" ||
- !(dataObject.data instanceof Array)
- )
- throw new Error("Object malformed");
+ /* {
+ * head: [,,...,],
+ * data: [
+ * [,,...,],
+ * [,,...,],
+ * ...,
+ * [,,...,],
+ * ]
+ * }
+ */
+ if (type === "csv") {
+ result = {
+ head: ["date", "value", "label"],
+ data: []
+ };
- /* {
- * head: [,,...,],
- * data: [
- * [,,...,],
- * [,,...,],
- * ...,
- * [,,...,],
- * ]
- * }
- */
- if (type === "csv") {
- result = {
- head: ["date", "value", "label"],
- data: [],
- };
+ dataObject.data.forEach(function(item, index) {
+ var date = "",
+ value = item[1];
- dataObject.data.forEach(function (item, index) {
- var date = "",
- value = item[1];
+ // Long labels are preferred
+ if (
+ typeof plot.getOptions().export.labels_long[index] !== "undefined"
+ )
+ date = plot.getOptions().export.labels_long[index];
+ else if (typeof labels[index] !== "undefined") date = labels[index];
- // Long labels are preferred
- if (
- typeof plot.getOptions().export.labels_long[index] !== "undefined"
- )
- date = plot.getOptions().export.labels_long[index];
- else if (typeof labels[index] !== "undefined") date = labels[index];
+ result.data.push([date, value, dataObject.label]);
+ });
+ } else if (type === "json") {
+ /* [
+ * {
+ * 'date': ,
+ * 'value':
+ * }
+ * ],
+ * [
+ * {
+ * 'date': ,
+ * 'value':
+ * }
+ * ],
+ * ...,
+ * [
+ * {
+ * 'date': ,
+ * 'value':
+ * }
+ * ]
+ */
+ result = [];
- result.data.push([date, value, dataObject.label]);
- });
- } else if (type === "json") {
- /* [
- * {
- * 'date': ,
- * 'value':
- * }
- * ],
- * [
- * {
- * 'date': ,
- * 'value':
- * }
- * ],
- * ...,
- * [
- * {
- * 'date': ,
- * 'value':
- * }
- * ]
- */
- result = [];
+ dataObject.data.forEach(function(item, index) {
+ var date = "",
+ value = item[1];
- dataObject.data.forEach(function (item, index) {
- var date = "",
- value = item[1];
+ // Long labels are preferred
+ if (typeof labels_long[index] !== "undefined")
+ date = labels_long[index];
+ else if (typeof labels[index] !== "undefined") date = labels[index];
- // Long labels are preferred
- if (typeof labels_long[index] !== "undefined")
- date = labels_long[index];
- else if (typeof labels[index] !== "undefined") date = labels[index];
+ result.push({
+ date: date,
+ value: value,
+ label: dataObject.label
+ });
+ });
+ }
- result.push({
- date: date,
- value: value,
- label: dataObject.label,
- });
- });
- }
+ if (typeof result === "undefined") throw new Error("Empty result");
- if (typeof result === "undefined") throw new Error("Empty result");
+ return result;
+ };
- return result;
- };
+ try {
+ var elements = [];
+ var custom_graph = $("input:hidden[name=custom_graph]").value;
- try {
- var elements = [];
- var custom_graph = $("input:hidden[name=custom_graph]").value;
+ if (custom_graph) {
+ dataObject = retrieveDataOject(dataObjects);
+ dataObjects.forEach(function(element) {
+ elements.push(processDataObject(element));
+ });
+ graphData = elements;
+ } else {
+ dataObject = retrieveDataOject(dataObjects);
+ elements.push(processDataObject(dataObject));
+ graphData = elements;
+ }
- if (custom_graph) {
- dataObject = retrieveDataOject(dataObjects);
- dataObjects.forEach(function (element) {
- elements.push(processDataObject(element));
- });
- graphData = elements;
- } else {
- dataObject = retrieveDataOject(dataObjects);
- elements.push(processDataObject(dataObject));
- graphData = elements;
- }
+ // Transform the object data into a string
+ // cause PHP has limitations in the number
+ // of POST params received.
+ var graphDataStr = JSON.stringify(graphData);
- // Transform the object data into a string
- // cause PHP has limitations in the number
- // of POST params received.
- var graphDataStr = JSON.stringify(graphData);
+ // Build form
+ var $form = $(""),
+ $dataInput = $(""),
+ $typeInput = $(""),
+ $separatorInput = $(""),
+ $excelInput = $("");
- // Build form
- var $form = $(""),
- $dataInput = $(""),
- $typeInput = $(""),
- $separatorInput = $(""),
- $excelInput = $("");
+ $dataInput
+ .prop("name", "data")
+ .prop("type", "text")
+ .prop("value", graphDataStr);
- $dataInput
- .prop("name", "data")
- .prop("type", "text")
- .prop("value", graphDataStr);
+ $typeInput
+ .prop("name", "type")
+ .prop("type", "text")
+ .prop("value", type);
- $typeInput
- .prop("name", "type")
- .prop("type", "text")
- .prop("value", type);
+ $separatorInput
+ .prop("name", "separator")
+ .prop("type", "text")
+ .prop("value", ";");
- $separatorInput
- .prop("name", "separator")
- .prop("type", "text")
- .prop("value", ";");
+ $excelInput
+ .prop("name", "excel_encoding")
+ .prop("type", "text")
+ .prop("value", 0);
- $excelInput
- .prop("name", "excel_encoding")
- .prop("type", "text")
- .prop("value", 0);
+ $form
+ .prop("method", "POST")
+ .prop(
+ "action",
+ plot.getOptions().export.homeurl + "include/graphs/export_data.php"
+ )
+ .append($dataInput, $typeInput, $separatorInput, $excelInput)
+ .hide()
+ // Firefox made me write into the DOM for this :(
+ .appendTo("body")
+ .submit();
+ } catch (e) {
+ alert("There was an error exporting the data");
+ }
+ };
+ }
- $form
- .prop("method", "POST")
- .prop(
- "action",
- plot.getOptions().export.homeurl + "include/graphs/export_data.php"
- )
- .append($dataInput, $typeInput, $separatorInput, $excelInput)
- .hide()
- // Firefox made me write into the DOM for this :(
- .appendTo("body")
- .submit();
- } catch (e) {
- alert("There was an error exporting the data");
- }
- };
- }
-
- $.plot.plugins.push({
- init: init,
- options: options,
- name: "exportdata",
- version: "0.1",
- });
+ $.plot.plugins.push({
+ init: init,
+ options: options,
+ name: "exportdata",
+ version: "0.1"
+ });
})(jQuery);
diff --git a/pandora_console/include/graphs/functions_flot.php b/pandora_console/include/graphs/functions_flot.php
index dc4e556292..81c9cc79cf 100644
--- a/pandora_console/include/graphs/functions_flot.php
+++ b/pandora_console/include/graphs/functions_flot.php
@@ -346,13 +346,7 @@ function menu_graph(
$threshold = true;
}
- $return .= "