0) { $graph_group = db_get_value('id_group', 'tgraph', 'id_graph', $id_graph); if (!check_acl_restricted_all($config['id_user'], $graph_group, 'RW') && !check_acl_restricted_all($config['id_user'], $graph_group, 'RM') ) { db_pandora_audit( 'ACL Violation', 'Trying to access graph builder' ); include 'general/noaccess.php'; exit; } } if ($id_graph !== 0) { $sql = "SELECT * FROM tgraph WHERE (private = 0 OR (private = 1 AND id_user = '".$config['id_user']."')) AND id_graph = ".$id_graph; $control = db_process_sql($sql); if (!$control) { header('Location: index.php?sec=reporting&sec2=godmode/reporting/graphs'); } } if ($add_graph === true) { $name = get_parameter_post('name'); $description = get_parameter_post('description'); $module_number = get_parameter_post('module_number'); $idGroup = get_parameter_post('graph_id_group'); $stacked = get_parameter('stacked', 0); $period = get_parameter_post('period'); $threshold = get_parameter('threshold'); $percentil = get_parameter('percentil', 0); $summatory_series = get_parameter('summatory_series', 0); $average_series = get_parameter('average_series', 0); $modules_series = get_parameter('modules_series', 0); $fullscale = get_parameter('fullscale', 0); if ($threshold == CUSTOM_GRAPH_BULLET_CHART_THRESHOLD) { $stacked = $threshold; } // Create graph. $values = [ 'id_user' => $config['id_user'], 'name' => $name, 'description' => $description, 'period' => $period, 'private' => 0, 'id_group' => $idGroup, 'stacked' => $stacked, 'percentil' => $percentil, 'summatory_series' => $summatory_series, 'average_series' => $average_series, 'modules_series' => $modules_series, 'fullscale' => $fullscale, ]; if (trim($name) != '') { $id_graph = db_process_sql_insert('tgraph', $values); if ($id_graph !== false) { db_pandora_audit('Report management', 'Create graph #'.$id_graph); } else { db_pandora_audit('Report management', 'Fail try to create graph'); } } else { $id_graph = false; } if (!$id_graph) { $edit_graph = false; } } if ($update_graph) { $id_graph = get_parameter('id'); $name = get_parameter('name'); $id_group = get_parameter('graph_id_group'); $description = get_parameter('description'); $period = get_parameter('period'); $stacked = get_parameter('stacked'); $percentil = get_parameter('percentil'); $summatory_series = get_parameter('summatory_series'); $average_series = get_parameter('average_series'); $modules_series = get_parameter('modules_series'); $alerts = get_parameter('alerts'); $threshold = get_parameter('threshold'); $fullscale = get_parameter('fullscale'); if ($threshold == CUSTOM_GRAPH_BULLET_CHART_THRESHOLD) { $stacked = $threshold; } if (empty(trim($name)) === false) { $success = db_process_sql_update( 'tgraph', [ 'name' => $name, 'id_group' => $id_group, 'description' => $description, 'width' => $width, 'height' => $height, 'period' => $period, 'stacked' => $stacked, 'percentil' => $percentil, 'summatory_series' => $summatory_series, 'average_series' => $average_series, 'modules_series' => $modules_series, 'fullscale' => $fullscale, ], ['id_graph' => $id_graph] ); if ($success !== false) { db_pandora_audit( 'Report management', 'Update graph #'.$id_graph ); } else { db_pandora_audit( 'Report management', 'Fail try to update graph #'.$id_graph ); } } else { $success = false; } } function add_quotes($item) { return "'$item'"; } if ($add_module === true) { $id_graph = get_parameter('id'); $id_modules = get_parameter('module'); $id_agents = get_parameter('id_agents'); $weight = get_parameter('weight'); // Id modules has double entities conversion. // Safe output remove all entities. io_safe_output_array($id_modules, ''); // We need to put the entities again // to browse in db. io_safe_input_array($id_modules); $id_agent_modules = db_get_all_rows_sql( 'SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN ('.implode(',', $id_agents).") AND nombre IN ('".implode("','", $id_modules)."')" ); if (count($id_agent_modules) > 0 && $id_agent_modules != '') { $order = db_get_row_sql("SELECT `field_order` from tgraph_source WHERE id_graph=$id_graph ORDER BY `field_order` DESC"); $order = $order['field_order']; foreach ($id_agent_modules as $id_agent_module) { $order++; $result = db_process_sql_insert('tgraph_source', ['id_graph' => $id_graph, 'id_agent_module' => $id_agent_module['id_agente_modulo'], 'weight' => $weight, 'field_order' => $order]); } } else { $result = false; } } if ($delete_module === true) { $id_graph = get_parameter('id'); $deleteGraph = get_parameter('delete'); $order_val = db_get_value('field_order', 'tgraph_source', 'id_gs', $deleteGraph); $result = db_process_sql_delete('tgraph_source', ['id_gs' => $deleteGraph]); db_process_sql('UPDATE tgraph_source SET field_order=field_order-1 WHERE id_graph='.$id_graph.' AND field_order>'.$order_val); } if ($change_weight === true) { $weight = get_parameter('weight'); $id_gs = get_parameter('graph'); db_process_sql_update( 'tgraph_source', ['weight' => $weight], ['id_gs' => $id_gs] ); } if ($change_label) { $label = get_parameter('label'); $id_gs = get_parameter('graph'); db_process_sql_update( 'tgraph_source', ['label' => $label], ['id_gs' => $id_gs] ); } if ($edit_graph === true) { $buttons = [ 'graph_list' => [ 'active' => false, 'text' => ''.html_print_image( 'images/list.png', true, [ 'title' => __('Graph list'), 'class' => 'invert_filter', ] ).'', ], 'main' => [ 'active' => false, 'text' => ''.html_print_image( 'images/chart.png', true, [ 'title' => __('Main data'), 'class' => 'invert_filter', ] ).'', ], 'graph_editor' => [ 'active' => false, 'text' => ''.html_print_image( 'images/builder.png', true, [ 'title' => __('Graph editor'), 'class' => 'invert_filter', ] ).'', ], 'view' => [ 'active' => false, 'text' => ''.html_print_image( 'images/eye.png', true, [ 'title' => __('View graph'), 'class' => 'invert_filter', ] ).'', ], ]; $buttons[$active_tab]['active'] = true; $graphInTgraph = db_get_row_sql('SELECT name FROM tgraph WHERE id_graph = '.$id_graph); $name = $graphInTgraph['name']; } else { $buttons = []; } $head = __('Graph builder'); if (isset($name) === true) { $head .= ' » '.$name; } // Header. $tab = get_parameter('tab'); switch ($tab) { case 'graph_editor': $headerHelp = ''; break; case 'main': default: $headerHelp = 'graph_builder'; break; } // Header. ui_print_standard_header( $head, 'images/chart.png', false, $headerHelp, false, $buttons, [ [ 'link' => '', 'label' => __('Reporting'), ], [ 'link' => '', 'label' => __('Custom graphs'), ], ] ); if ($add_graph) { ui_print_result_message( $id_graph, __('Graph stored successfully'), __('There was a problem storing Graph') ); } if ($add_module) { ui_print_result_message( $result, __('Module added successfully'), __('There was a problem adding Module') ); } if ($update_graph) { ui_print_result_message( $success, __('Update the graph'), __('Bad update the graph') ); } if ($delete_module) { ui_print_result_message( $result, __('Graph deleted successfully'), __('There was a problem deleting Graph') ); } // Parse CHUNK information into showable information. // Split id to get all parameters. if ($delete_module === false) { if (isset($_POST['period']) === true) { $period = $_POST['period']; } if ((isset($chunkdata) === true) && (empty($chunkdata) === false)) { $module_array = []; $weight_array = []; $agent_array = []; $chunk1 = []; $chunk1 = explode('|', $chunkdata); $modules = ''; $weights = ''; $chunkCount = count($chunk1); for ($a = 0; $a < $chunkCount; $a++) { $chunk2[$a] = []; $chunk2[$a] = explode(',', $chunk1[$a]); if (strpos($modules, $chunk2[$a][1]) == 0) { // Skip dupes $module_array[] = $chunk2[$a][1]; $agent_array[] = $chunk2[$a][0]; $weight_array[] = $chunk2[$a][2]; if ($modules != '') { $modules = $modules.','.$chunk2[$a][1]; } else { $modules = $chunk2[$a][1]; } if ($weights != '') { $weights = $weights.','.$chunk2[$a][2]; } else { $weights = $chunk2[$a][2]; } } } } } switch ($active_tab) { case 'main': include_once 'godmode/reporting/graph_builder.main.php'; break; case 'graph_editor': include_once 'godmode/reporting/graph_builder.graph_editor.php'; break; default: // Nothing to do. break; }