true, 'text' => ''.html_print_image( 'images/logs@svg.svg', true, [ 'title' => __('Visual Console List'), 'class' => 'main_menu_icon invert_filter', ] ).'', ]; $buttons['visual_console_favorite'] = [ 'active' => false, 'text' => ''.html_print_image( 'images/star@svg.svg', true, [ 'title' => __('Visual Favourite Console'), 'class' => 'main_menu_icon invert_filter', ] ).'', ]; if ($is_enterprise !== ENTERPRISE_NOT_HOOK && $vconsoles_manage) { $buttons['visual_console_template'] = [ 'active' => false, 'text' => ''.html_print_image( 'images/groups@svg.svg', true, [ 'title' => __('Visual Console Template'), 'class' => 'main_menu_icon invert_filter', ] ).'', ]; $buttons['visual_console_template_wizard'] = [ 'active' => false, 'text' => ''.html_print_image( 'images/wizard@svg.svg', true, [ 'title' => __('Visual Console Template Wizard'), 'class' => 'main_menu_icon invert_filter', ] ).'', ]; } ui_print_standard_header( __('Visual Console List'), 'images/op_reporting.png', false, '', true, $buttons, [ [ 'link' => '', 'label' => __('Topology maps'), ], [ 'link' => '', 'label' => __('Visual console'), ], ] ); $id_layout = (int) get_parameter('id_layout'); $copy_layout = (bool) get_parameter('copy_layout'); $delete_layout = (bool) get_parameter('delete_layout'); $refr = (int) get_parameter('refr', $config['vc_refr']); $offset = (int) get_parameter('offset', 0); $pagination = (int) get_parameter('pagination', $config['block_size']); $search = (string) get_parameter('search', ''); $ag_group = (int) get_parameter('ag_group', 0); $recursion = get_parameter('recursion', 0); if ($delete_layout || $copy_layout) { // Visual console required if (empty($id_layout)) { db_pandora_audit( AUDIT_LOG_ACL_VIOLATION, 'Trying to access map builder' ); include 'general/noaccess.php'; exit; } $group_id = db_get_value('id_group', 'tlayout', 'id', $id_layout); if ($group_id === false) { db_pandora_audit( AUDIT_LOG_ACL_VIOLATION, 'Trying to access map builder' ); include 'general/noaccess.php'; exit; } // ACL for the visual console // $vconsole_read = check_acl ($config['id_user'], $group_id, "VR"); $vconsole_write = check_acl_restricted_all($config['id_user'], $group_id, 'VW', true); $vconsole_manage = check_acl_restricted_all($config['id_user'], $group_id, 'VM', true); if (!$vconsole_write && !$vconsole_manage) { db_pandora_audit( AUDIT_LOG_ACL_VIOLATION, 'Trying to access map builder' ); include 'general/noaccess.php'; exit; } if ($delete_layout) { db_process_sql_delete( 'tlayout_data', ['id_layout' => $id_layout] ); $result = db_process_sql_delete( 'tlayout', ['id' => $id_layout] ); db_process_sql_delete( 'tfavmenu_user', [ 'id_element' => $id_layout, 'section' => 'Visual_Console', 'id_user' => $config['id_user'], ] ); $auditMessage = ((bool) $result === true) ? 'Delete visual console' : 'Fail try to delete visual console'; db_pandora_audit( AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT, sprintf('%s #%s', $auditMessage, $id_layout) ); ui_print_result_message( (bool) $result, __('Successfully deleted'), __('Not deleted. Error deleting data') ); db_clean_cache(); $id_layout = 0; } if ($copy_layout) { // Number of inserts. $ninsert = (int) 0; // Return from DB the source layout. $layout_src = db_get_all_rows_filter( 'tlayout', ['id' => $id_layout] ); // Name of dst. $name_dst = get_parameter( 'name_dst', $layout_src[0]['name'].' copy' ); // Create the new Console. $idGroup = $layout_src[0]['id_group']; $background = $layout_src[0]['background']; $height = $layout_src[0]['height']; $width = $layout_src[0]['width']; $visualConsoleName = $name_dst; $values = [ 'name' => $visualConsoleName, 'id_group' => $idGroup, 'background' => $background, 'height' => $height, 'width' => $width, 'background_color' => $layout_src[0]['background_color'], 'is_favourite' => $layout_src[0]['is_favourite'], ]; $result = db_process_sql_insert('tlayout', $values); $auditMessage = ((bool) $result !== false) ? 'Copy visual console' : 'Fail try to copy visual console'; db_pandora_audit( AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT, sprintf('%s %s #%s', $auditMessage, $visualConsoleName, $id_layout) ); $idNewVisualConsole = $result; if ($result) { $ninsert = 1; // Return from DB the items of the source layout $data_layout_src = db_get_all_rows_filter( 'tlayout_data', ['id_layout' => $id_layout] ); if (!empty($data_layout_src)) { // By default the id parent 0 is always 0. $id_relations = [0 => 0]; for ($a = 0; $a < count($data_layout_src); $a++) { // Changing the source id by the new visual console id $data_layout_src[$a]['id_layout'] = $idNewVisualConsole; $old_id = $data_layout_src[$a]['id']; // Unsetting the source's id unset($data_layout_src[$a]['id']); // Configure the cloned Console $result = db_process_sql_insert( 'tlayout_data', $data_layout_src[$a] ); $id_relations[$old_id] = 0; if ($result !== false) { $id_relations[$old_id] = $result; } if ($result) { $ninsert++; } }//end for $inserts = (count($data_layout_src) + 1); // If the number of inserts is correct, the copy is completed if ($ninsert == $inserts) { // Update the ids of parents $items = db_get_all_rows_filter( 'tlayout_data', ['id_layout' => $idNewVisualConsole] ); foreach ($items as $item) { $new_parent = $id_relations[$item['parent_item']]; db_process_sql_update( 'tlayout_data', ['parent_item' => $new_parent], ['id' => $item['id']] ); } ui_print_success_message(__('Successfully copied')); db_clean_cache(); } else { ui_print_error_message(__('Not copied. Error copying data')); } } else { // If the array is empty the copy is completed ui_print_success_message(__('Successfully copied')); db_clean_cache(); } } else { ui_print_error_message(__('Not copied. Error copying data')); } } } if ($ag_group > 0) { $ag_groups = []; $ag_groups = (array) $ag_group; if ($recursion) { $ag_groups = groups_get_children_ids($ag_group, true); } } $own_info = get_user_info($config['id_user']); if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'VR')) { $return_all_group = false; } else { $return_all_group = true; } $filterTable = new stdClass(); $filterTable->id = 'map_buider_filter'; $filterTable->class = 'filter-table-adv'; $filterTable->width = '100%'; $filterTable->size = []; $filterTable->size[0] = '33%'; $filterTable->size[1] = '33%'; $filterTable->data = []; $filterTable->data[0][] = html_print_label_input_block( __('Search'), html_print_input_text('search', $search, '', 50, 255, true) ); $filterTable->data[0][] = html_print_label_input_block( __('Group'), html_print_select_groups(false, 'AR', $return_all_group, 'ag_group', $ag_group, '', '', 0, true, false, true, '', false) ); $filterTable->data[0][] = html_print_label_input_block( __('Group Recursion'), html_print_checkbox_switch('recursion', 1, $recursion, true, false, '') ); if (is_metaconsole() === false) { $actionUrl = 'index.php?sec=network&sec2=godmode/reporting/map_builder'; } else { $actionUrl = 'index.php?sec=screen&sec2=screens/screens&action=visualmap'; } $searchForm = []; $searchForm[] = '
'; $searchForm[] = html_print_table($filterTable, true); $searchForm[] = html_print_div( [ 'class' => 'action-buttons', 'content' => html_print_submit_button( __('Filter'), 'search_visual_console', false, [ 'icon' => 'search', 'mode' => 'mini', ], true ), ], true ); $searchForm[] = '
'; ui_toggle( implode('', $searchForm), ''.__('Filters').'', 'filter_form', '', true, false, '', 'white-box-content', 'box-flat white_table_graph fixed_filter_bar' ); $table = new stdClass(); $table->width = '100%'; $table->class = 'info_table'; $table->cellpadding = 0; $table->cellspacing = 0; $table->data = []; $table->head = []; $table->head[0] = __('Map name'); $table->head[1] = __('Group'); $table->head[2] = __('Items'); $table->head[3] = __('Copy'); $table->head[4] = __('Delete'); $table->size[3] = '6%'; $table->size[4] = '6%'; $table->align = []; $table->align[0] = 'left'; $table->align[1] = 'left'; $table->align[2] = 'left'; $table->align[3] = 'left'; $table->align[4] = 'left'; // Only display maps of "All" group if user is administrator // or has "VR" privileges, otherwise show only maps of user group $filters['offset'] = $offset; $filters['limit'] = $pagination; if (empty($search) === false) { $filters['name'] = io_safe_input($search); } if ($ag_group) { $filters['group'] = array_flip($ag_groups); } $own_info = get_user_info($config['id_user']); if (is_metaconsole() === false) { $url = 'index.php?sec=network&sec2=godmode/reporting/map_builder&recursion='.$recursion.'&ag_group='.$ag_group.'&search='.$search.'&pagination='.$pagination; } else { $url = 'index.php?sec=screen&sec2=screens/screens&action=visualmap&recursion='.$recursion.'&ag_group='.$ag_group.'&search='.$search.'&pagination='.$pagination; } if ($own_info['is_admin'] || $vconsoles_read) { if ($ag_group) { $maps = visual_map_get_user_layouts($config['id_user'], false, $filters, false); unset($filters['offset']); unset($filters['limit']); $count_maps = visual_map_get_user_layouts($config['id_user'], false, $filters, false); $total_maps = count($count_maps); } else { $maps = visual_map_get_user_layouts($config['id_user'], false, $filters, false); unset($filters['offset']); unset($filters['limit']); $count_maps = visual_map_get_user_layouts($config['id_user'], false, $filters, false); $total_maps = count($count_maps); } } else { $maps = visual_map_get_user_layouts($config['id_user'], false, $filters, false); unset($filters['offset']); unset($filters['limit']); $count_maps = visual_map_get_user_layouts($config['id_user'], false, $filters, false); $total_maps = count($count_maps); } if (!$maps && is_metaconsole() === false) { $total = count(visual_map_get_user_layouts($config['id_user'], false, false, false)); if (!$total) { include_once $config['homedir'].'/general/first_task/map_builder.php'; } else { ui_print_info_message( [ 'no_close' => false, 'message' => __('No available data to show'), ] ); } } else if (!$maps && is_metaconsole() === true) { $total = count(visual_map_get_user_layouts($config['id_user'], false, false, false)); if (!$total) { ui_print_info_message( [ 'no_close' => true, 'message' => __('There are no visual console defined yet.'), ] ); } else { ui_print_info_message( [ 'no_close' => false, 'message' => __('No available data to show'), ] ); } } else { foreach ($maps as $map) { // ACL for the visual console permission. $vconsole_write = false; $vconsole_manage = false; if (isset($map['vw']) === true) { $vconsole_write = true; } if (isset($map['vm']) === true) { $vconsole_manage = true; } $data = []; if (is_metaconsole() === false) { $data[0] = ''.io_safe_output($map['name']).''; } else { $data[0] = ''.io_safe_output($map['name']).''; } $data[1] = ui_print_group_icon($map['id_group'], true); $data[2] = db_get_sql('SELECT COUNT(*) FROM tlayout_data WHERE id_layout = '.$map['id']); $vconsoles_write_action_btn = check_acl_restricted_all($config['id_user'], $map['id_group'], 'VW'); $vconsoles_manage_action_btn = check_acl_restricted_all($config['id_user'], $map['id_group'], 'VM'); if ($vconsoles_write_action_btn || $vconsoles_manage_action_btn) { if (is_metaconsole() === false) { $table->cellclass[] = [ 3 => 'table_action_buttons', 4 => 'table_action_buttons', ]; $data[3] = ''.html_print_image( 'images/copy.svg', true, ['class' => 'main_menu_icon invert_filter'] ).''; $data[4] = ''.html_print_image( 'images/delete.svg', true, ['class' => 'main_menu_icon invert_filter'] ).''; } else { $table->cellclass[] = [ 3 => 'table_action_buttons', 4 => 'table_action_buttons', ]; $data[3] = ''.html_print_image( 'images/copy.svg', true, ['class' => 'main_menu_icon invert_filter'] ).''; $data[4] = ''.html_print_image( 'images/delete.svg', true, ['class' => 'main_menu_icon invert_filter'] ).''; } } else { $data[3] = ''; $data[4] = ''; } array_push($table->data, $data); } html_print_table($table); $tablePagination = ui_pagination($total_maps, $url, $offset, $pagination, true, 'offset', false); } if ($maps || is_metaconsole() === true) { $buttons = ''; if ($vconsoles_write || $vconsoles_manage) { if (is_metaconsole() === false) { $actionUrl = 'index.php?sec=network&sec2=godmode/reporting/visual_console_builder'; } else { $actionUrl = 'index.php?sec=screen&sec2=screens/screens&action=visualmap&action2=new&operation=new_visualmap&tab=data&pure='.$pure; } $buttons .= '
'; $buttons .= html_print_input_hidden('edit_layout', 1, true); $buttons .= html_print_submit_button( __('Create'), '', false, [ 'icon' => 'next'], true ); $buttons .= '
'; } html_print_action_buttons( $buttons, [ 'right_content' => $tablePagination ] ); }