$id_element]); $sql = 'SELECT datos FROM tagente_estado WHERE id_agente_modulo = '.$layoutData['id_agente_modulo']; ob_clean(); $result = db_get_sql($sql); $image = strpos($result, 'data:image'); if ($image === false) { $return['correct'] = false; } else { $return['correct'] = true; } echo json_encode($return); break; case 'get_module_type_string': $data = []; $layoutData = db_get_row_filter('tlayout_data', ['id' => $id_element]); if ($layoutData['id_metaconsole'] != 0) { $connection = db_get_row_filter('tmetaconsole_setup', $layoutData['id_metaconsole']); if (metaconsole_load_external_db($connection) != NOERR) { continue; } } $is_string = db_get_value_filter( 'id_tipo_modulo', 'tagente_modulo', [ 'id_agente' => $id_agent, 'id_agente_modulo' => $id_module, ] ); if ($layoutData['id_metaconsole'] != 0) { metaconsole_restore_db(); } $return = []; if (($is_string == 17) || ($is_string == 23) || ($is_string == 3) || ($is_string == 10) || ($is_string == 33) ) { $return['no_data'] = false; } else { $return['no_data'] = true; } echo json_encode($return); break; case 'get_module_events': $data = []; $date = get_system_time(); $datelimit = ($date - $event_max_time_row); $events = db_get_row_filter( 'tevento', ['id_agente' => $id_agent, 'id_agentmodule' => $id_module, 'utimestamp > '.$datelimit, 'utimestamp < '.$date ], 'criticity, utimestamp' ); $return = []; if (!$events) { $return['no_data'] = true; if (!empty($id_metaconsole)) { $connection = db_get_row_filter( 'tmetaconsole_setup', $id_metaconsole ); if (metaconsole_load_external_db($connection) != NOERR) { continue; } } $return['url'] = true; if (!empty($id_metaconsole)) { metaconsole_restore_db(); } } else { $return['no_data'] = false; } echo json_encode($return); break; case 'get_image_sparse': // Metaconsole db connection if (!empty($id_metaconsole)) { $connection = db_get_row_filter( 'tmetaconsole_setup', $id_metaconsole ); if (metaconsole_load_external_db($connection) != NOERR) { // ui_print_error_message ("Error connecting to ".$server_name); continue; } } $params = [ 'period' => $period, 'width' => $width, 'height' => $height, 'vconsole' => true, 'backgroundColor' => $background_color, ]; $params_combined = ['id_graph' => $id_custom_graph]; if ($id_custom_graph != 0) { $img = graphic_combined_module( false, $params, $params_combined ); } else { $params = [ 'agent_module_id' => $id_agent_module, 'period' => $period, 'show_events' => false, 'width' => $width, 'height' => $height, 'menu' => false, 'backgroundColor' => $background_color, 'vconsole' => true, 'type_graph' => $config['type_module_charts'], ]; $img = grafico_modulo_sparse($params); } // Restore db connection if (!empty($id_metaconsole)) { metaconsole_restore_db(); } $data_image = []; preg_match("/src=[\'\"](.*)[\'\"]/", $img, $matches); $url = $matches[1]; if (empty($url) && ($type == 'module_graph')) { $data_image['url'] = $img; $data_image['no_data'] = true; $data_image['message'] = __('No data to show'); } else { $data_image['url'] = $matches[1]; $data_image['no_data'] = false; } echo json_encode($data_image); break; case 'get_layout_data': if (is_metaconsole()) { $server_data = metaconsole_get_connection_by_id($server_id); // Establishes connection if (metaconsole_load_external_db($server_data) !== NOERR) { continue; } } $layoutData = db_get_row_filter( 'tlayout_data', ['id' => $id_element] ); if (is_metaconsole()) { metaconsole_restore_db(); } $layoutData['height'] = $layoutData['height']; $layoutData['width'] = $layoutData['width']; echo json_encode($layoutData); break; case 'get_module_value': global $config; $unit_text = false; $layoutData = db_get_row_filter('tlayout_data', ['id' => $id_element]); switch ($layoutData['type']) { case SIMPLE_VALUE: case SIMPLE_VALUE_MAX: case SIMPLE_VALUE_MIN: case SIMPLE_VALUE_AVG: $type = visual_map_get_simple_value_type($process_simple_value); // Metaconsole db connection if ($layoutData['id_metaconsole'] != 0) { $connection = db_get_row_filter( 'tmetaconsole_setup', ['id' => $layoutData['id_metaconsole']] ); if (metaconsole_load_external_db($connection) != NOERR) { // ui_print_error_message ("Error connecting to ".$server_name); continue; } } $returnValue = visual_map_get_simple_value( $type, $layoutData['id_agente_modulo'], $period ); // Restore db connection if ($layoutData['id_metaconsole'] != 0) { metaconsole_restore_db(); } break; case PERCENTILE_BAR: case PERCENTILE_BUBBLE: default: // Metaconsole db connection if ($layoutData['id_metaconsole'] != 0) { $connection = db_get_row_filter( 'tmetaconsole_setup', ['id' => $layoutData['id_metaconsole']] ); if (metaconsole_load_external_db($connection) != NOERR) { // ui_print_error_message ("Error connecting to ".$server_name); continue; } } $returnValue = db_get_sql( 'SELECT datos FROM tagente_estado WHERE id_agente_modulo = '.$layoutData['id_agente_modulo'] ); $no_data = false; $status_no_data = ''; if ((!$returnValue || $returnValue == 0) && ($layoutData['type'] == PERCENTILE_BUBBLE || $layoutData['type'] == PERCENTILE_BAR) ) { $status_no_data = COL_UNKNOWN; $no_data = true; } if (($layoutData['type'] == PERCENTILE_BAR) || ($layoutData['type'] == PERCENTILE_BUBBLE) ) { if ($value_show == 'value') { $unit_text_db = db_get_sql( 'SELECT unit FROM tagente_modulo WHERE id_agente_modulo = '.$layoutData['id_agente_modulo'] ); $unit_text_db = trim(io_safe_output($unit_text_db)); $divisor = get_data_multiplier($unit_text_db); $returnValue = format_for_graph($returnValue, 2, '.', ',', $divisor); if (!empty($unit_text_db)) { $unit_text = $unit_text_db; } } } // Restore db connection if ($layoutData['id_metaconsole'] != 0) { metaconsole_restore_db(); } break; } // Linked to other layout ?? - Only if not module defined if ($layoutData['id_layout_linked'] != 0) { $status = visual_map_get_layout_status($layoutData['id_layout_linked'], $layoutData); // Single object } else if (($layoutData['type'] == STATIC_GRAPH) || ($layoutData['type'] == PERCENTILE_BAR) || ($layoutData['type'] == LABEL) ) { // Status for a simple module if ($layoutData['id_agente_modulo'] != 0) { $status = modules_get_agentmodule_status($layoutData['id_agente_modulo']); $id_agent = db_get_value('id_agente', 'tagente_estado', 'id_agente_modulo', $layoutData['id_agente_modulo']); // Status for a whole agent, if agente_modulo was == 0 } else if ($layoutData['id_agent'] != 0) { $status = agents_get_status($layoutData['id_agent']); if ($status == -1) { // agents_get_status return -1 for unknown! $status = 3; } $id_agent = $layoutData['id_agent']; } else { $status = 3; $id_agent = 0; } } else { // If it's a graph, a progress bar or a data tag, ALWAYS report // status OK (=0) to avoid confussions here. $status = 0; } switch ($status) { case VISUAL_MAP_STATUS_CRITICAL_BAD: // Critical (BAD) $colorStatus = COL_CRITICAL; break; case VISUAL_MAP_STATUS_CRITICAL_ALERT: // Critical (ALERT) $colorStatus = COL_ALERTFIRED; break; case VISUAL_MAP_STATUS_NORMAL: // Normal (OK) $colorStatus = COL_NORMAL; break; case VISUAL_MAP_STATUS_WARNING: // Warning $colorStatus = COL_WARNING; break; case VISUAL_MAP_STATUS_UNKNOWN: // Unknown default: $colorStatus = COL_UNKNOWN; // Default is Grey (Other) break; } // ~ $returnValue_value = explode(' ', $returnValue); $return = []; if ($returnValue_value[1] != '') { // ~ $return['value'] = remove_right_zeros(number_format($returnValue_value[0], $config['graph_precision'])) . " " . $returnValue_value[1]; } else { // ~ $return['value'] = remove_right_zeros(number_format($returnValue_value[0], $config['graph_precision'])); } $return['value'] = $returnValue; $return['max_percentile'] = $layoutData['height']; $return['width_percentile'] = $layoutData['width']; $return['unit_text'] = $unit_text; if ($no_data) { $return['colorRGB'] = implode('|', html_html2rgb($status_no_data)); } else { $return['colorRGB'] = implode('|', html_html2rgb($colorStatus)); } echo json_encode($return); break; case 'get_color_line': $layoutData = db_get_row_filter('tlayout_data', ['id' => $id_element]); $parent = db_get_row_filter('tlayout_data', ['id' => $layoutData['parent_item']]); $return = []; $return['color_line'] = visual_map_get_color_line_status($parent); echo json_encode($return); break; case 'get_image': $layoutData = db_get_row_filter('tlayout_data', ['id' => $id_element]); $return = []; $return['image'] = visual_map_get_image_status_element($layoutData); if (substr($return['image'], 0, 1) == '4') { $return['image'] = substr_replace($return['image'], '', 0, 1); } echo json_encode($return); break; case 'get_color_cloud': $layoutData = db_get_row_filter('tlayout_data', ['id' => $id_element]); echo visual_map_get_color_cloud_element($layoutData); break; case 'update': case 'move': $values = []; $values['label_position'] = $label_position; $values['show_on_top'] = $show_on_top; switch ($type) { case 'line_item': case 'box_item': case 'clock': case 'icon': case 'label': $values['cache_expiration'] = 0; break; default: $values['cache_expiration'] = $cache_expiration; break; } // In Graphs, background color is stored in column image (sorry). if ($type == 'module_graph') { $values['image'] = $background_color; $values['type_graph'] = $type_graph; } switch ($type) { case 'background': $values = []; if ($background !== null) { $values['background'] = $background; } if ($width !== null) { $values['width'] = $width; } if ($height !== null) { $values['height'] = $height; } $result = db_process_sql_update( 'tlayout', $values, ['id' => $id_visual_console] ); echo (int) $result; break; case 'simple_value': case 'percentile_bar': case 'percentile_item': case 'static_graph': case 'module_graph': case 'label': case 'icon': case 'auto_sla_graph': case 'bars_graph': case 'donut_graph': default: if ($type == 'label') { $values['type'] = LABEL; $values['label'] = $label; } if ($enable_link !== null) { $values['enable_link'] = $enable_link; } if ($show_on_top !== null) { $values['show_on_top'] = $show_on_top; } if ($label !== null) { $values['label'] = $label; } switch ($type) { // -- line_item -- case 'handler_end': // --------------- if ($left !== null) { $values['width'] = $left; } if ($top !== null) { $values['height'] = $top; } break; default: if ($left !== null) { $values['pos_x'] = $left; } if ($top !== null) { $values['pos_y'] = $top; } break; } if (defined('METACONSOLE') && $metaconsole) { if ($server_name !== null) { $values['id_metaconsole'] = db_get_value( 'id', 'tmetaconsole_setup', 'server_name', $server_name ); } if ($server_id > 0) { $values['id_metaconsole'] = $server_id; } if ($id_agent !== null) { $values['id_agent'] = $id_agent; } if ($linked_map_node_id !== null) { $values['linked_layout_node_id'] = (int) $linked_map_node_id; } } else if ($id_agent == 0) { $values['id_agent'] = 0; } else if (!empty($id_agent)) { $values['id_agent'] = $id_agent; } else if ($agent !== null) { $id_agent = agents_get_agent_id($agent); $values['id_agent'] = $id_agent; } if ($id_module !== null) { $values['id_agente_modulo'] = $id_module; } if ($parent !== null) { $values['parent_item'] = $parent; } if ($map_linked !== null) { $values['id_layout_linked'] = $map_linked; } if ($linked_map_status_calculation_type !== null) { $values['linked_layout_status_type'] = $linked_map_status_calculation_type; } if ($map_linked_weight !== null) { if ($map_linked_weight > 100) { $map_linked_weight = 100; } if ($map_linked_weight < 0) { $map_linked_weight = 0; } $values['id_layout_linked_weight'] = $map_linked_weight; } if ($linked_map_status_service_critical !== null) { if ($linked_map_status_service_critical > 100) { $linked_map_status_service_critical = 100; } if ($linked_map_status_service_critical < 0) { $linked_map_status_service_critical = 0; } $values['linked_layout_status_as_service_critical'] = $linked_map_status_service_critical; } if ($linked_map_status_service_warning !== null) { if ($linked_map_status_service_warning > 100) { $linked_map_status_service_warning = 100; } if ($linked_map_status_service_warning < 0) { $linked_map_status_service_warning = 0; } $values['linked_layout_status_as_service_warning'] = $linked_map_status_service_warning; } if ($element_group !== null) { $values['element_group'] = $element_group; } switch ($type) { // -- line_item ------------------------------------ case 'handler_start': case 'handler_end': $values['border_width'] = $line_width; $values['border_color'] = $line_color; break; // ------------------------------------------------- case 'auto_sla_graph': $values['type'] = AUTO_SLA_GRAPH; if ($event_max_time_row !== null) { $values['period'] = $event_max_time_row; } if ($width !== null) { $values['width'] = $width; } if ($height !== null) { $values['height'] = $height; } break; case 'donut_graph': if ($width_percentile !== null) { $values['width'] = $width_percentile; $values['height'] = $width_percentile; } $values['border_color'] = $resume_color; $values['type'] = DONUT_GRAPH; $values['id_agent'] = $id_agent_string; break; case 'box_item': $values['border_width'] = $border_width; $values['border_color'] = $border_color; $values['fill_color'] = $fill_color; $values['period'] = $period; $values['width'] = $width_box; $values['height'] = $height_box; break; case 'group_item': $values['id_group'] = $id_group; if ($image !== null) { $values['image'] = $image; } if ($width !== null) { $values['width'] = $width; } if ($height !== null) { $values['height'] = $height; } if ($show_statistics !== null) { $values['show_statistics'] = $show_statistics; } break; case 'module_graph': if ($height_module_graph !== null) { $values['height'] = $height_module_graph; } if ($width_module_graph !== null) { $values['width'] = $width_module_graph; } if ($period !== null) { $values['period'] = $period; } if ($id_custom_graph !== null) { $values['id_custom_graph'] = $id_custom_graph; } if (is_metaconsole()) { if ($values['id_custom_graph'] != 0) { $explode_id = explode('|', $values['id_custom_graph']); $values['id_custom_graph'] = $explode_id[0]; $values['id_metaconsole'] = $explode_id[1]; } } break; case 'bars_graph': if ($width_percentile !== null) { $values['width'] = $width_percentile; } if ($bars_graph_height !== null) { $values['height'] = $bars_graph_height; } if ($bars_graph_type !== null) { $values['type_graph'] = $bars_graph_type; } if ($background_color !== null) { $values['image'] = $background_color; } if ($grid_color !== null) { $values['border_color'] = $grid_color; } $values['id_agent'] = $id_agent_string; break; case 'percentile_item': case 'percentile_bar': if ($action == 'update') { if ($width_percentile !== null) { $values['width'] = $width_percentile; } if ($max_percentile !== null) { $values['height'] = $max_percentile; } $values['type'] = PERCENTILE_BAR; if ($type_percentile == 'percentile') { $values['type'] = PERCENTILE_BAR; } else if ($type_percentile == 'circular_progress_bar') { $values['type'] = CIRCULAR_PROGRESS_BAR; } else if ($type_percentile == 'interior_circular_progress_bar') { $values['type'] = CIRCULAR_INTERIOR_PROGRESS_BAR; } else if ($type_percentile == 'bubble') { $values['type'] = PERCENTILE_BUBBLE; } $values['image'] = $value_show; $values['border_color'] = $percentile_color; $values['fill_color'] = $percentile_label_color; $values['label'] = $percentile_label; } break; case 'icon': case 'static_graph': if ($image !== null) { $values['image'] = $image; } if ($width !== null) { $values['width'] = $width; } if ($height !== null) { $values['height'] = $height; } if ($show_last_value !== null) { $values['show_last_value'] = $show_last_value; } break; case 'simple_value': if ($action == 'update') { $values['type'] = visual_map_get_simple_value_type( $process_simple_value ); $values['period'] = $period; $values['width'] = $width; } break; case 'clock': if ($clock_animation !== null) { $values['clock_animation'] = $clock_animation; } if ($time_format !== null) { $values['time_format'] = $time_format; } if ($timezone !== null) { $values['timezone'] = $timezone; } if ($width !== null) { $values['width'] = $width_percentile; } if ($fill_color !== null) { $values['fill_color'] = $fill_color; } break; case 'color_cloud': $values['width'] = $diameter; $values['height'] = $diameter; // Fill Color Cloud values $extra = [ 'default_color' => $default_color, 'color_ranges' => [], ]; $num_ranges = count($color_range_colors); for ($i = 0; $i < $num_ranges; $i++) { if (!isset($color_range_from_values[$i]) || !isset($color_range_to_values[$i]) || !isset($color_range_colors[$i]) ) { return; } $extra['color_ranges'][] = [ 'from_value' => (float) $color_range_from_values[$i], 'to_value' => (float) $color_range_to_values[$i], 'color' => $color_range_colors[$i], // already html encoded ]; } // Yes, we are using the label to store the extra info. // Sorry not sorry. $values['label'] = json_encode($extra); break; default: if (enterprise_installed()) { if ($image !== null) { $values['image'] = $image; } enterprise_ajax_update_values($action, $type, $values); } break; } if ($action == 'move') { // Don't change the label because only change the positions unset($values['label']); unset($values['label_position']); // Don't change this values when move unset($values['id_agent']); unset($values['id_agente_modulo']); unset($values['enable_link']); unset($values['show_on_top']); unset($values['id_layout_linked']); unset($values['element_group']); unset($values['id_layout_linked_weight']); unset($values['cache_expiration']); // Don't change background color in graphs when move switch ($type) { case 'group_item': unset($values['id_group']); unset($values['show_statistics']); break; case 'module_graph': unset($values['image']); unset($values['type_graph']); break; case 'bars_graph': unset($values['image']); unset($values['type_graph']); unset($values['border_color']); unset($values['width']); unset($values['id_agent']); unset($values['height']); break; case 'donut_graph': unset($values['border_color']); unset($values['width']); unset($values['id_agent']); break; case 'clock': unset($values['clock_animation']); unset($values['time_format']); unset($values['timezone']); unset($values['fill_color']); unset($values['width']); break; case 'box_item': unset($values['border_width']); unset($values['border_color']); unset($values['fill_color']); unset($values['period']); unset($values['width']); unset($values['height']); break; case 'color_cloud': unset($values['width']); unset($values['height']); unset($values['diameter']); unset($values['label']); break; // -- line_item -- case 'handler_start': case 'handler_end': // --------------- unset($values['border_width']); unset($values['border_color']); break; } } $item_in_db = db_get_row_filter('tlayout_data', ['id' => $id_element]); if (($item_in_db['parent_item'] == 0) && ($values['parent_item'] != 0)) { $new_line = 1; } $result = db_process_sql_update( 'tlayout_data', $values, ['id' => $id_element] ); // Invalidate the item's cache. if ($result !== false && $result > 0) { db_process_sql_delete( 'tvisual_console_elements_cache', [ 'vc_item_id' => (int) $id_element, ] ); } $return_val = []; $return_val['correct'] = (int) $result; $return_val['new_line'] = $new_line; echo json_encode($return_val); break; } break; case 'load': switch ($type) { case 'background': $backgroundFields = db_get_row_filter( 'tlayout', ['id' => $id_visual_console], [ 'background', 'height', 'width', ] ); echo json_encode($backgroundFields); break; // -- line_item -- case 'handler_start': case 'handler_end': // --------------- case 'box_item': case 'percentile_bar': case 'percentile_item': case 'static_graph': case 'group_item': case 'module_graph': case 'bars_graph': case 'simple_value': case 'label': case 'icon': case 'clock': case 'auto_sla_graph': case 'donut_graph': case 'color_cloud': $elementFields = db_get_row_filter( 'tlayout_data', ['id' => $id_element] ); // Metaconsole db connection if ($elementFields['id_metaconsole'] != 0) { $connection = db_get_row_filter( 'tmetaconsole_setup', ['id' => $elementFields['id_metaconsole']] ); $elementFields['id_server_name'] = $connection['server_name']; if (metaconsole_load_external_db($connection) != NOERR) { // ui_print_error_message ("Error connecting to ".$server_name); continue; } } if (!empty($connection['server_name'])) { $elementFields['agent_name'] = io_safe_output(agents_get_alias($elementFields['id_agent'])).' ('.io_safe_output($connection['server_name']).')'; } else { $elementFields['agent_name'] = io_safe_output(agents_get_alias($elementFields['id_agent'])); } // Make the html of select box of modules about id_agent. if (($elementFields['id_agent'] != 0) && ($elementFields['id_layout_linked'] == 0) ) { $modules = agents_get_modules( $elementFields['id_agent'], false, [ 'disabled' => 0, 'id_agente' => $elementFields['id_agent'], ] ); $elementFields['modules_html'] = ''; foreach ($modules as $id => $name) { $elementFields['modules_html'] .= ''; } } else { $elementFields['modules_html'] = ''; } // Restore db connection if ($elementFields['id_metaconsole'] != 0) { metaconsole_restore_db(); } if (isset($elementFields['id_layout_linked_weight'])) { $elementFields['id_layout_linked_weight'] = (int) $elementFields['id_layout_linked_weight']; } if (isset($elementFields['linked_layout_status_as_service_critical'])) { $elementFields['linked_layout_status_as_service_critical'] = (float) $elementFields['linked_layout_status_as_service_critical']; } if (isset($elementFields['linked_layout_status_as_service_warning'])) { $elementFields['linked_layout_status_as_service_warning'] = (float) $elementFields['linked_layout_status_as_service_warning']; } switch ($type) { case 'auto_sla_graph': $elementFields['event_max_time_row'] = $elementFields['period']; break; case 'percentile_item': case 'percentile_bar': $elementFields['width_percentile'] = $elementFields['width']; $elementFields['max_percentile'] = $elementFields['height']; $elementFields['value_show'] = $elementFields['image']; $elementFields['type_percentile'] = 'percentile'; if ($elementFields['type'] == PERCENTILE_BAR) { $elementFields['type_percentile'] = 'percentile'; } else if ($elementFields['type'] == PERCENTILE_BUBBLE) { $elementFields['type_percentile'] = 'bubble'; } else if ($elementFields['type'] == CIRCULAR_PROGRESS_BAR) { $elementFields['type_percentile'] = 'circular_progress_bar'; } else if ($elementFields['type'] == CIRCULAR_INTERIOR_PROGRESS_BAR) { $elementFields['type_percentile'] = 'interior_circular_progress_bar'; } $elementFields['percentile_color'] = $elementFields['border_color']; $elementFields['percentile_label_color'] = $elementFields['fill_color']; $elementFields['percentile_label'] = $elementFields['label']; break; case 'donut_graph': $elementFields['width_percentile'] = $elementFields['width']; $elementFields['resume_color'] = $elementFields['border_color']; $elementFields['id_agent_string'] = $elementFields['id_agent']; if (($elementFields['id_agent_string'] != 0) && ($elementFields['id_layout_linked'] == 0) ) { $modules = agents_get_modules( $elementFields['id_agent'], false, [ 'disabled' => 0, 'id_agente' => $elementFields['id_agent'], 'tagente_modulo.id_tipo_modulo IN' => '(17,23,3,10,33)', ] ); $elementFields['modules_html'] = ''; foreach ($modules as $id => $name) { $elementFields['modules_html'] .= ''; } } break; case 'module_graph': $elementFields['width_module_graph'] = $elementFields['width']; $elementFields['height_module_graph'] = $elementFields['height']; break; case 'clock': $elementFields['width_percentile'] = $elementFields['width']; break; case 'bars_graph': $elementFields['width_percentile'] = $elementFields['width']; $elementFields['bars_graph_height'] = $elementFields['height']; $elementFields['bars_graph_type'] = $elementFields['type_graph']; $elementFields['grid_color'] = $elementFields['border_color']; $elementFields['id_agent_string'] = $elementFields['id_agent']; if (($elementFields['id_agent_string'] != 0) && ($elementFields['id_layout_linked'] == 0) ) { $modules = agents_get_modules( $elementFields['id_agent'], false, [ 'disabled' => 0, 'id_agente' => $elementFields['id_agent'], 'tagente_modulo.id_tipo_modulo IN' => '(17,23,3,10,33)', ] ); $elementFields['modules_html'] = ''; foreach ($modules as $id => $name) { $elementFields['modules_html'] .= ''; } } break; case 'box_item': $elementFields['width_box'] = $elementFields['width']; $elementFields['height_box'] = $elementFields['height']; $elementFields['border_color'] = $elementFields['border_color']; $elementFields['border_width'] = $elementFields['border_width']; $elementFields['fill_color'] = $elementFields['fill_color']; break; case 'color_cloud': $elementFields['diameter'] = $elementFields['width']; $elementFields['dynamic_data'] = null; try { // Yes, it's using the label field to store the extra data $elementFields['dynamic_data'] = json_decode($elementFields['label'], true); } catch (Exception $ex) { } $elementFields['label'] = ''; break; // -- line_item -- case 'handler_start': case 'handler_end': // --------------- $elementFields['line_width'] = $elementFields['border_width']; $elementFields['line_color'] = $elementFields['border_color']; break; } // Support for max, min and svg process on simple value items if ($type == 'simple_value') { switch ($elementFields['type']) { case SIMPLE_VALUE: $elementFields['process_value'] = 0; break; case SIMPLE_VALUE_MAX: $elementFields['process_value'] = 2; break; case SIMPLE_VALUE_MIN: $elementFields['process_value'] = 1; break; case SIMPLE_VALUE_AVG: $elementFields['process_value'] = 3; break; } } $elementFields['label'] = io_safe_output($elementFields['label']); echo json_encode($elementFields); break; default: enterprise_hook('enterprise_ajax_load_values', [$type, $id_element]); break; } break; case 'insert': $values = []; $values['id_layout'] = $id_visual_console; $values['label'] = $label; $values['pos_x'] = $left; $values['pos_y'] = $top; $values['label_position'] = $label_position; if (defined('METACONSOLE') && $metaconsole) { if ($server_id > 0) { $values['id_metaconsole'] = $server_id; } else { $values['id_metaconsole'] = db_get_value( 'id', 'tmetaconsole_setup', 'server_name', $server_name ); } $values['id_agent'] = $id_agent; } else { if (!empty($id_agent)) { $values['id_agent'] = $id_agent; } else if (!empty($agent)) { $values['id_agent'] = agents_get_agent_id($agent); } else { $values['id_agent'] = 0; } } $values['id_agente_modulo'] = $id_module; $values['id_layout_linked'] = $map_linked; if (defined('METACONSOLE') && $metaconsole) { $values['linked_layout_node_id'] = (int) $linked_map_node_id; } $values['linked_layout_status_type'] = $linked_map_status_calculation_type; if ($map_linked_weight !== null) { if ($map_linked_weight > 100) { $map_linked_weight = 100; } if ($map_linked_weight < 0) { $map_linked_weight = 0; } $values['id_layout_linked_weight'] = $map_linked_weight; } if ($linked_map_status_service_critical !== null) { if ($linked_map_status_service_critical > 100) { $linked_map_status_service_critical = 100; } if ($linked_map_status_service_critical < 0) { $linked_map_status_service_critical = 0; } $values['linked_layout_status_as_service_critical'] = $linked_map_status_service_critical; } if ($linked_map_status_service_warning !== null) { if ($linked_map_status_service_warning > 100) { $linked_map_status_service_warning = 100; } if ($linked_map_status_service_warning < 0) { $linked_map_status_service_warning = 0; } $values['linked_layout_status_as_service_warning'] = $linked_map_status_service_warning; } $values['element_group'] = $element_group; $values['parent_item'] = $parent; $values['enable_link'] = $enable_link; $values['show_on_top'] = $show_on_top; $values['image'] = $background_color; $values['type_graph'] = $type_graph; $values['id_custom_graph'] = $id_custom_graph; switch ($type) { case 'line_item': case 'box_item': case 'clock': case 'icon': case 'label': $values['cache_expiration'] = 0; break; default: $values['cache_expiration'] = $cache_expiration; break; } switch ($type) { case 'line_item': $values['type'] = LINE_ITEM; $values['border_width'] = $line_width; $values['border_color'] = $line_color; $values['pos_x'] = $line_start_x; $values['pos_y'] = $line_start_y; $values['width'] = $line_end_x; $values['height'] = $line_end_y; break; case 'box_item': $values['type'] = BOX_ITEM; $values['border_width'] = $border_width; $values['border_color'] = $border_color; $values['fill_color'] = $fill_color; $values['period'] = $period; $values['width'] = $width_box; $values['height'] = $height_box; break; case 'donut_graph': $values['type'] = DONUT_GRAPH; $values['width'] = $width_percentile; $values['height'] = $width_percentile; $values['border_color'] = $resume_color; $values['id_agent'] = $id_agent_string; break; case 'module_graph': $values['type'] = MODULE_GRAPH; if (is_metaconsole()) { if ($values['id_custom_graph'] != 0) { $explode_id = explode('|', $values['id_custom_graph']); $values['id_custom_graph'] = $explode_id[0]; $values['id_metaconsole'] = $explode_id[1]; } } if ($values['id_custom_graph'] > 0) { $values['height'] = $height_module_graph; $values['width'] = $width_module_graph; if (is_metaconsole()) { $server_data = metaconsole_get_connection_by_id($values['id_metaconsole']); // Establishes connection if (metaconsole_load_external_db($server_data) !== NOERR) { continue; } } $graph_conf = db_get_row('tgraph', 'id_graph', $values['id_custom_graph']); if (is_metaconsole()) { metaconsole_restore_db(); } $graph_stacked = $graph_conf['stacked']; if ($graph_stacked == CUSTOM_GRAPH_BULLET_CHART) { $values['height'] = 50; } else if ($graph_stacked == CUSTOM_GRAPH_GAUGE) { if ($height_module_graph < 150) { $values['height'] = 150; } else if (($height_module_graph >= 150) && ($height_module_graph < 250) ) { $values['height'] = $graph_conf['height']; } else if ($height_module_graph >= 250) { $values['height'] = 200; } } } else { $values['height'] = $height_module_graph; $values['width'] = $width_module_graph; } $values['period'] = $period; break; case 'bars_graph': $values['type'] = BARS_GRAPH; $values['width'] = $width_percentile; $values['height'] = $bars_graph_height; $values['type_graph'] = $bars_graph_type; $values['image'] = $background_color; $values['border_color'] = $grid_color; $values['id_agent'] = $id_agent_string; break; case 'clock': $values['type'] = CLOCK; $values['width'] = $width_percentile; $values['clock_animation'] = $clock_animation; $values['fill_color'] = $fill_color; $values['time_format'] = $time_format; $values['timezone'] = $timezone; break; case 'auto_sla_graph': $values['type'] = AUTO_SLA_GRAPH; $values['period'] = $event_max_time_row; $values['width'] = $width; $values['height'] = $height; break; case 'percentile_item': case 'percentile_bar': if ($type_percentile == 'percentile') { $values['type'] = PERCENTILE_BAR; } else if ($type_percentile == 'circular_progress_bar') { $values['type'] = CIRCULAR_PROGRESS_BAR; } else if ($type_percentile == 'interior_circular_progress_bar') { $values['type'] = CIRCULAR_INTERIOR_PROGRESS_BAR; } else { $values['type'] = PERCENTILE_BUBBLE; } $values['border_color'] = $percentile_color; $values['image'] = $value_show; // Hack to save it show percent o value. $values['width'] = $width_percentile; $values['height'] = $max_percentile; $values['fill_color'] = $percentile_label_color; $values['label'] = $percentile_label; break; case 'static_graph': $values['type'] = STATIC_GRAPH; $values['image'] = $image; $values['width'] = $width; $values['height'] = $height; $values['show_last_value'] = $show_last_value; break; case 'group_item': $values['type'] = GROUP_ITEM; $values['image'] = $image; $values['width'] = $width; $values['height'] = $height; $values['id_group'] = $id_group; $values['show_statistics'] = $show_statistics; break; case 'simple_value': // This allows min, max and avg process in a simple value $values['type'] = visual_map_get_simple_value_type($process_simple_value); $values['period'] = $period; $values['width'] = $width; break; case 'label': $values['type'] = LABEL; $values['label'] = $label; break; case 'icon': $values['type'] = ICON; $values['image'] = $image; $values['width'] = $width; $values['height'] = $height; break; case 'color_cloud': $values['type'] = COLOR_CLOUD; $values['width'] = $diameter; $values['height'] = $diameter; $extra = [ 'default_color' => $default_color, 'color_ranges' => [], ]; $num_ranges = count($color_range_colors); for ($i = 0; $i < $num_ranges; $i++) { if (!isset($color_range_from_values[$i]) || !isset($color_range_to_values[$i]) || !isset($color_range_colors[$i]) ) { return; } $extra['color_ranges'][] = [ 'from_value' => (int) $color_range_from_values[$i], 'to_value' => (int) $color_range_to_values[$i], 'color' => $color_range_colors[$i], // already html encoded ]; } // Yes, we are using the label to store the extra info. // Sorry not sorry. $values['label'] = json_encode($extra); break; default: if (enterprise_installed()) { enterprise_ajax_insert_fill_values_insert($type, $values); } break; } $idData = db_process_sql_insert('tlayout_data', $values); $return = []; if ($idData === false) { $return['correct'] = 0; } else { $text = visual_map_create_internal_name_item($label, $type, $image, $agent, $id_module, $idData); $return['correct'] = 1; $return['id_data'] = $idData; $return['text'] = $text; } echo json_encode($return); break; case 'copy': $values = db_get_row_filter( 'tlayout_data', ['id' => $id_element] ); unset($values['id']); $values['pos_x'] = ($values['pos_x'] + 20); $values['pos_y'] = ($values['pos_y'] + 20); $idData = db_process_sql_insert('tlayout_data', $values); $return = []; if ($idData === false) { $return['correct'] = 0; } else { $text = visual_map_create_internal_name_item($label, $type, $image, $agent, $id_module, $idData); $values['left'] = $values['pos_x']; $values['top'] = $values['pos_y']; $values['parent'] = $values['parent_item']; $return['values'] = $values; $return['correct'] = 1; $return['id_data'] = $idData; $return['text'] = $text; $return['type'] = visual_map_type_in_js($values['type']); switch ($values['type']) { case BOX_ITEM: $return['values']['width_box'] = $values['width']; $return['values']['height_box'] = $values['height']; break; case CIRCULAR_PROGRESS_BAR: $return['values']['type_percentile'] = 'bubble'; break; case CIRCULAR_INTERIOR_PROGRESS_BAR: $return['values']['type_percentile'] = 'circular_progress_bar'; break; case PERCENTILE_BUBBLE: $return['values']['type_percentile'] = 'interior_circular_progress_bar'; break; case PERCENTILE_BAR: $return['values']['type_percentile'] = 'percentile'; break; case COLOR_CLOUD: $return['values']['diameter'] = $values['width']; try { // Yes, it's using the label field to store the extra data $return['values']['dynamic_data'] = json_decode($values['label'], true); } catch (Exception $ex) { $return['values']['dynamic_data'] = []; } $values['label'] = ''; break; } } // Don't move this piece of code $return['values']['label'] = io_safe_output($values['label']); echo json_encode($return); break; case 'delete': if (db_process_sql_delete('tlayout_data', ['id' => $id_element, 'id_layout' => $id_visual_console]) === false) { $return['correct'] = 0; } else { $return['correct'] = 1; } echo json_encode($return); break; case 'get_original_size_background': $replace = strlen($config['homeurl'].'/'); if (substr($background, 0, $replace) == $config['homeurl'].'/') { $size = getimagesize(substr($background, $replace)); } else { $size = getimagesize($background); } echo json_encode($size); break; default: enterprise_hook('enterprise_visualmap_ajax'); break; } // visual map element status check if ($get_element_status) { $layoutData = db_get_row_filter( 'tlayout_data', ['id' => $id_element] ); $res = visual_map_get_status_element($layoutData); echo $res; return; }