true, 'text' => ''.html_print_image('images/visual_console.png', true, ['title' => __('Visual Console List')]).'', ]; $buttons['visual_console_favorite'] = [ 'active' => false, 'text' => ''.html_print_image('images/list.png', true, ['title' => __('Visual Favourite Console')]).'', ]; if ($is_enterprise !== ENTERPRISE_NOT_HOOK && $vconsoles_manage) { $buttons['visual_console_template'] = [ 'active' => false, 'text' => ''.html_print_image('images/templates.png', true, ['title' => __('Visual Console Template')]).'', ]; $buttons['visual_console_template_wizard'] = [ 'active' => false, 'text' => ''.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'', ]; if ($is_metaconsole) { $buttons['visual_console_manager'] = [ 'active' => false, 'text' => ''.html_print_image('images/builder.png', true, ['title' => __('Visual Console Manager')]).'', ]; } } if (!$is_metaconsole) { ui_print_page_header( __('Reporting').' » '.__('Visual Console'), 'images/op_reporting.png', false, 'map_builder_intro', false, $buttons ); } else { ui_meta_print_header( __('Visual console').' » '.$visualConsoleName, '', $buttons ); } $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( '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( '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($config['id_user'], $group_id, 'VW'); $vconsole_manage = check_acl($config['id_user'], $group_id, 'VM'); if (!$vconsole_write && !$vconsole_manage) { db_pandora_audit( '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] ); if ($result) { db_pandora_audit( 'Visual console builder', "Delete visual console #$id_layout" ); ui_print_success_message(__('Successfully deleted')); db_clean_cache(); } else { db_pandora_audit( 'Visual console builder', "Fail try to delete visual console #$id_layout" ); ui_print_error_message( __('Not deleted. Error deleting data') ); } $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, ]; $result = db_process_sql_insert('tlayout', $values); $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_id_recursive($ag_group, true); } } echo "