__('Default'), HOME_SCREEN_VISUAL_CONSOLE => __('Visual console'), HOME_SCREEN_EVENT_LIST => __('Event list'), HOME_SCREEN_GROUP_VIEW => __('Group view'), HOME_SCREEN_TACTICAL_VIEW => __('Tactical view'), HOME_SCREEN_ALERT_DETAIL => __('Alert detail'), HOME_SCREEN_EXTERNAL_LINK => __('External link'), HOME_SCREEN_OTHER => __('Other'), HOME_SCREEN_DASHBOARD => __('Dashboard'), ]; // Custom Home Screen controls. $customHomeScreenAddition = []; // Home screen. Dashboard. $customHomeScreenAddition[HOME_SCREEN_DASHBOARD] = html_print_select($dashboards_aux, 'dashboard', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%'); // Home screen. Visual consoles. $customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select($layouts_aux, 'visual_console', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%'); // Home screen. External link and Other. $customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true); $customHomeScreenAddition[HOME_SCREEN_OTHER] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true); $customHomeScreenDataField = ''; foreach ($customHomeScreenAddition as $key => $customField) { $customHomeScreenDataField .= html_print_div( [ 'id' => sprintf('custom_home_screen_%s', $key), 'content' => $customField, ], true ); } // Timezone creation canvas. $timezoneContent = []; if (is_metaconsole() === false) { date_default_timezone_set('UTC'); include_once 'include/javascript/timezonepicker/includes/parser.inc'; // Read in options for map builder. $bases = [ 'gray' => 'Gray', 'blue-marble' => 'Blue marble', 'night-electric' => 'Night Electric', 'living' => 'Living Earth', ]; $local_file = 'include/javascript/timezonepicker/images/gray-400.png'; // Dimensions must always be exact since the imagemap does not scale. $array_size = getimagesize($local_file); $map_width = $array_size[0]; $map_height = $array_size[1]; $timezones = timezone_picker_parse_files( $map_width, $map_height, 'include/javascript/timezonepicker/tz_world.txt', 'include/javascript/timezonepicker/tz_islands.txt' ); // Initial definition of vars. $area_data_timezone_polys = ''; $area_data_timezone_rects = ''; foreach ($timezones as $timezone_name => $tz) { if ($timezone_name === 'America/Montreal') { $timezone_name = 'America/Toronto'; } else if ($timezone_name === 'Asia/Chongqing') { $timezone_name = 'Asia/Shanghai'; } foreach ($tz['polys'] as $coords) { $area_data_timezone_polys .= ''; } foreach ($tz['rects'] as $coords) { $area_data_timezone_rects .= ''; } } $timezoneContent[] = ''; $timezoneContent[] = ''; $timezoneContent[] = ''.$area_data_timezone_polys.$area_data_timezone_rects.''; } // Create the view. $userManagementTable = new stdClass(); $userManagementTable->id = 'advanced'; $userManagementTable->width = '100%'; $userManagementTable->class = 'principal_table floating_form white_box'; $userManagementTable->data = []; $userManagementTable->style = []; $userManagementTable->rowclass = []; $userManagementTable->cellclass = []; $userManagementTable->colspan = []; $userManagementTable->rowspan = []; // Title for Profile information. $sustitleTable = ($new_user === true) ? __('Profile information') : sprintf('%s [ %s ]', __('Profile information for'), $id); $userManagementTable->data['title_profile_information'] = html_print_subtitle_table($sustitleTable); // Id user. if ($new_user === true) { $userManagementTable->rowclass['captions_iduser'] = 'field_half_width'; $userManagementTable->rowclass['fields_iduser'] = 'field_half_width'; $userManagementTable->data['captions_iduser'][0] = __('User ID'); $userManagementTable->data['fields_iduser'][0] = html_print_input_text_extended( 'id_user', $id, '', '', 20, 255, !$new_user || $view_mode, '', [ 'class' => 'input', 'placeholder' => __('User ID'), ], true ); } else { $userManagementTable->data['fields_iduser'][0] = html_print_input_hidden('id', $id, false, false, false, 'id'); } // User Full name. $userManagementTable->rowclass['captions_fullname'] = 'field_half_width'; $userManagementTable->rowclass['fields_fullname'] = 'field_half_width'; $userManagementTable->data['captions_fullname'][0] = __('Full name'); $userManagementTable->data['fields_fullname'][0] = html_print_input_text_extended( 'fullname', $user_info['fullname'], 'fullname', '', 20, 100, $view_mode, '', [ 'class' => 'input', 'placeholder' => __('Full (display) name'), ], true ); // User Email. $userManagementTable->rowclass['captions_email'] = 'field_half_width'; $userManagementTable->rowclass['fields_email'] = 'field_half_width'; $userManagementTable->data['captions_email'][0] = __('Email'); $userManagementTable->data['fields_email'][0] = html_print_input_text_extended( 'email', $user_info['email'], 'email', '', '25', '100', $view_mode, '', [ 'class' => 'input', 'placeholder' => __('E-mail'), ], true ); // User phone number. $userManagementTable->rowclass['captions_phone'] = 'field_half_width'; $userManagementTable->rowclass['fields_phone'] = 'field_half_width'; $userManagementTable->data['captions_phone'][0] = __('Phone number'); $userManagementTable->data['fields_phone'][0] = html_print_input_text_extended( 'phone', $user_info['phone'], 'phone', '', '20', '30', $view_mode, '', [ 'class' => 'input', 'placeholder' => __('Phone number'), ], true ); $fieldsAdminUserCount = 0; $userManagementTable->rowclass['captions_fields_admin_user'] = 'field_half_width w50p'; $userManagementTable->cellclass['captions_fields_admin_user'][$fieldsAdminUserCount] = 'wrap'; if (empty($doubleAuthentication) === false) { $userManagementTable->data['captions_fields_admin_user'][$fieldsAdminUserCount] = $doubleAuthentication; $fieldsAdminUserCount++; } if (users_is_admin() === true) { $globalProfileContent = []; $globalProfileContent[] = ''.__('Administrator user').''; $globalProfileContent[] = html_print_checkbox_switch( 'is_admin', 0, $user_info['is_admin'], true ); $userManagementTable->cellclass['captions_fields_admin_user'][$fieldsAdminUserCount] = 'wrap'; $userManagementTable->data['captions_fields_admin_user'][$fieldsAdminUserCount] = html_print_div( [ 'class' => 'margin-top-10', 'style' => 'display: flex; flex-direction: row-reverse; align-items: center;', 'content' => implode('', $globalProfileContent), ], true ); } else { // Insert in the latest row this hidden input avoiding create empty rows. $userManagementTable->data['fields_phone'][0] .= html_print_input_hidden( 'is_admin_sent', 0, true ); } // Password management. $passwordManageTable = new stdClass(); $passwordManageTable->class = 'full_section'; $passwordManageTable->id = 'password_manage'; $passwordManageTable->style = []; $passwordManageTable->rowclass = []; $passwordManageTable->data = []; $passwordManageTable->data['captions_newpassword'][0] = __('New password'); $passwordManageTable->rowclass['fields_newpassword'] = 'w540px'; $passwordManageTable->data['fields_newpassword'][0] = html_print_input_text_extended( 'password_new', '', 'password_new', '', '25', '45', $view_mode, '', [ 'class' => 'input w100p', 'placeholder' => __('Password'), ], true, true ); $passwordManageTable->data['captions_repeatpassword'][0] = __('Repeat new password'); $passwordManageTable->rowclass['fields_repeatpassword'] = 'w540px'; $passwordManageTable->data['fields_repeatpassword'][0] = html_print_input_text_extended( 'password_confirm', '', 'password_conf', '', '20', '45', $view_mode, '', [ 'class' => 'input w100p', 'placeholder' => __('Password confirmation'), ], true, true ); if ($new_user === false) { $passwordManageTable->data['captions_currentpassword'][0] = __('Current password'); $passwordManageTable->rowclass['fields_currentpassword'] = 'w540px'; $passwordManageTable->data['fields_currentpassword'][0] = html_print_input_text_extended( 'own_password_confirm', '', 'own_password_confirm', '', '20', '45', $view_mode, '', [ 'class' => 'input w100p', 'placeholder' => __('Own password confirmation'), ], true, true ); } $userManagementTable->data['passwordManage_table'] = html_print_table($passwordManageTable, true); if (users_is_admin() === true) { $userManagementTable->rowclass['captions_loginErrorUser'] = 'field_half_width w50p'; $userManagementTable->cellclass['captions_loginErrorUser'][0] = 'wrap'; $userManagementTable->cellclass['captions_loginErrorUser'][1] = 'wrap'; $notLoginCheckContent = []; $notLoginCheckContent[] = ''.__('Not Login').''; $notLoginCheckContent[] = html_print_checkbox_switch( 'not_login', 1, $user_info['not_login'], true ); $userManagementTable->data['captions_loginErrorUser'][0] = html_print_div( [ 'class' => 'margin-top-10', 'style' => 'display: flex; flex-direction: row-reverse; align-items: center;', 'content' => implode('', $notLoginCheckContent), ], true ); $userManagementTable->data['captions_loginErrorUser'][0] .= ui_print_input_placeholder( __('The user with not login set only can access to API.'), true ); $localUserCheckContent = []; $localUserCheckContent[] = ''.__('Local User').''; $localUserCheckContent[] = html_print_checkbox_switch( 'local_user', 1, $user_info['local_user'], true ); $userManagementTable->data['captions_loginErrorUser'][1] = html_print_div( [ 'class' => 'margin-top-10', 'style' => 'display: flex; flex-direction: row-reverse; align-items: center;', 'content' => implode('', $localUserCheckContent), ], true ); $userManagementTable->data['captions_loginErrorUser'][1] .= ui_print_input_placeholder( __('The user with local authentication enabled will always use local authentication.'), true ); } $userManagementTable->data['show_tips_startup'][0] = html_print_checkbox_switch( 'show_tips_startup', 1, (isset($user_info['show_tips_startup']) === false) ? true : $user_info['show_tips_startup'], true ); $userManagementTable->data['show_tips_startup'][1] = ''.__('Show usage tips at startup').''; // Session time input. $userManagementTable->rowclass['captions_userSessionTime'] = 'field_half_width'; $userManagementTable->rowclass['fields_userSessionTime'] = 'field_half_width'; $userManagementTable->cellclass['fields_userSessionTime'][0] = 'wrap'; $userManagementTable->data['captions_userSessionTime'][0] = __('Session time'); $userManagementTable->data['fields_userSessionTime'][0] = html_print_input_text( 'session_time', $user_info['session_time'], '', 5, 5, true ); $userManagementTable->data['fields_userSessionTime'][0] .= ui_print_input_placeholder( __('This is defined in minutes, If you wish a permanent session should putting -1 in this field.'), true ); // Title for Autorefresh. $userManagementTable->data['title_autorefresh'] = html_print_subtitle_table(__('Autorefresh')); // Autorefresh selects. $select_out = html_print_select( $autorefresh_list_out, 'autorefresh_list_out[]', '', '', '', '', true, true, true, '', false, 'width:100%;' ); $select_in = html_print_select( $autorefresh_list, 'autorefresh_list[]', '', '', '', '', true, true, true, '', false, 'width:100%;' ); // Full list pages generation. $autorefreshFullListContent = []; $autorefreshFullListContent[] = '

'.__('Full list of pages').'

'; $autorefreshFullListContent[] = html_print_div( [ 'id' => 'autorefreshAllPagesList', 'content' => $select_out, ], true ); // Selected pages generation. $autorefreshSelectedListContent = []; $autorefreshSelectedListContent[] = '

'.__('Pages with autorefresh').'

'; $autorefreshSelectedListContent[] = html_print_div( [ 'id' => 'autorefreshSelectedPagesList', 'content' => $select_in, ], true ); // Controls generation. $autorefreshControlsContent = []; $autorefreshControlsContent[] = html_print_anchor( [ 'id' => 'addAutorefreshPage', 'href' => 'javascript:', 'content' => html_print_image( 'images/plus.svg', true, [ 'id' => 'right_autorefreshlist', 'style' => 'width: 24px; margin: 10px 10px 0;', 'alt' => __('Push selected pages into autorefresh list'), 'title' => __('Push selected pages into autorefresh list'), ] ), ], true ); $autorefreshControlsContent[] = html_print_anchor( [ 'id' => 'removeAutorefreshPage', 'href' => 'javascript:', 'content' => html_print_image( 'images/minus.svg', true, [ 'id' => 'left_autorefreshlist', 'style' => 'width: 24px; margin: 10px 10px 0;', 'alt' => __('Pop selected pages out of autorefresh list'), 'title' => __('Pop selected pages out of autorefresh list'), ] ), ], true ); // Container with all pages list. $autorefreshFullList = html_print_div( [ 'class' => 'autorefresh_select_list_out', 'content' => implode('', $autorefreshFullListContent), ], true ); // Container with selected pages list. $autorefreshSelectedList = html_print_div( [ 'class' => 'autorefresh_select_list', 'content' => implode('', $autorefreshSelectedListContent), ], true ); // Container with controls. $autorefreshControls = html_print_div( [ 'class' => 'autorefresh_select_arrows', 'content' => implode('', $autorefreshControlsContent), ], true ); // Generate final control table. $autorefreshTable = html_print_div( [ 'class' => 'autorefresh_select', 'content' => $autorefreshFullList.$autorefreshControls.$autorefreshSelectedList, ], true ); $userManagementTable->rowclass['captions_autorefreshList'] = 'field_half_width'; $userManagementTable->rowclass['fields_autorefreshList'] = 'field_half_width'; $userManagementTable->cellstyle['fields_autorefreshList'][0] = 'width: 100%'; $userManagementTable->data['captions_autorefreshList'] = __('Autorefresh pages'); $userManagementTable->data['fields_autorefreshList'] = $autorefreshTable; $userManagementTable->rowclass['captions_autorefreshTime'] = 'field_half_width'; $userManagementTable->rowclass['fields_autorefreshTime'] = 'field_half_width'; $userManagementTable->cellclass['fields_autorefreshTime'][0] = 'wrap'; $userManagementTable->data['captions_autorefreshTime'][0] = __('Time for autorefresh'); $userManagementTable->data['fields_autorefreshTime'][0] = html_print_select( get_refresh_time_array(), 'time_autorefresh', ($user_info['time_autorefresh'] ?? 0), '', '', '', true, false, false ); $userManagementTable->data['fields_autorefreshTime'][0] .= ui_print_input_placeholder( __('Interval of autorefresh of the elements, by default they are 30 seconds, needing to enable the autorefresh first'), true ); // Title for Language and Appearance. $userManagementTable->data['title_lookAndFeel'] = html_print_subtitle_table(__('Language and Appearance')); // Language and color scheme. $userManagementTable->rowclass['line1_looknfeel'] = 'field_half_width'; $userManagementTable->rowclass['line2_looknfeel'] = 'field_half_width'; $userManagementTable->data['line1_looknfeel'][0] = __('Language'); $userManagementTable->data['line2_looknfeel'][0] = html_print_select_from_sql( 'SELECT id_language, name FROM tlanguage', 'language', $user_info['language'], '', __('Default'), 'default', true ); if (is_metaconsole() === true) { if (users_is_admin() === true) { $userManagementTable->data['line1_looknfeel'][1] = $outputMetaAccess[0]; $userManagementTable->data['line2_looknfeel'][1] = $outputMetaAccess[1]; } } else { if (function_exists('skins_print_select')) { $userManagementTable->data['line1_looknfeel'][1] = __('User color scheme'); $userManagementTable->data['line2_looknfeel'][1] = skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true); } } $userManagementTable->rowclass['captions_blocksize_eventfilter'] = 'field_half_width'; $userManagementTable->rowclass['fields_blocksize_eventfilter'] = 'field_half_width'; $userManagementTable->data['captions_blocksize_eventfilter'][0] = __('Block size for pagination'); $userManagementTable->data['fields_blocksize_eventfilter'][0] = html_print_input_text( 'block_size', $user_info['block_size'], '', 5, 5, true ); $userManagementTable->data['captions_blocksize_eventfilter'][1] = __('Event filter'); $userManagementTable->data['fields_blocksize_eventfilter'][1] = html_print_select( $event_filter, 'default_event_filter', ($user_info['default_event_filter'] ?? 0), '', '', __('None'), true, false, false ); if (is_metaconsole() === false) { // Home screen table. $homeScreenTable = new stdClass(); $homeScreenTable->class = 'w100p full_section'; $homeScreenTable->id = 'home_screen_table'; $homeScreenTable->style = []; $homeScreenTable->rowclass = []; $homeScreenTable->data = []; // Home screen. $homeScreenTable->data['captions_homescreen'][0] = __('Home screen'); $homeScreenTable->colspan['captions_homescreen'][0] = 2; $homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width'; $homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex'; $homeScreenTable->data['fields_homescreen'][0] = html_print_select( $homeScreenValues, 'section', io_safe_output($user_info['section']), 'show_data_section();', '', -1, true, false, false ); $homeScreenTable->data['fields_homescreen'][1] = html_print_div( [ 'class' => 'w100p', 'content' => $customHomeScreenDataField, ], true ); $userManagementTable->rowclass['homescreen_table'] = 'w100p'; $userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, true); } if (is_metaconsole() === true && users_is_admin() === true) { $userManagementTable->rowclass['search_custom1_looknfeel'] = 'field_half_width'; $userManagementTable->rowclass['search_custom2_looknfeel'] = 'field_half_width flex-column'; $userManagementTable->data['search_custom1_looknfeel'][0] = $searchCustomFieldView[0]; $userManagementTable->data['search_custom2_looknfeel'][0] = $searchCustomFieldView[1]; $userManagementTable->rowclass['agent_manager1_looknfeel'] = 'field_half_width'; $userManagementTable->rowclass['agent_manager2_looknfeel'] = 'field_half_width flex-column'; $userManagementTable->data['agent_manager1_looknfeel'][0] = $metaconsoleAgentManager[0]; $userManagementTable->data['agent_manager1_looknfeel'][1] = $metaconsoleAgentManager[2]; $userManagementTable->data['agent_manager2_looknfeel'][0] = $metaconsoleAgentManager[1]; $userManagementTable->data['agent_manager2_looknfeel'][1] = $metaconsoleAgentManager[3]; } // Timezone. $userManagementTable->rowclass['captions_timezone'] = 'field_half_width'; $userManagementTable->rowclass['fields_timezone'] = 'field_half_width'; $userManagementTable->colspan['captions_timezone'][0] = 2; $userManagementTable->cellstyle['fields_timezone'][0] = 'align-self: baseline;'; $userManagementTable->cellclass['fields_timezone'][0] = 'wrap'; $userManagementTable->data['captions_timezone'][0] = __('Time zone'); $userManagementTable->data['fields_timezone'][0] = html_print_timezone_select('timezone', $user_info['timezone']); $userManagementTable->data['fields_timezone'][0] .= ui_print_input_placeholder( __('The timezone must be that of the associated server.'), true ); if (is_metaconsole() === false) { $userManagementTable->data['fields_timezone'][1] = html_print_div( [ 'id' => 'timezone-picker', 'content' => implode('', $timezoneContent), ], true ); } // Title for Language and Appearance. $userManagementTable->data['title_additionalSettings'] = html_print_subtitle_table(__('Additional settings')); $userManagementTable->rowclass['captions_addSettings'] = 'field_half_width'; $userManagementTable->rowclass['fields_addSettings'] = 'field_half_width'; $userManagementTable->cellstyle['fields_addSettings'][0] = 'align-self: baseline'; $userManagementTable->cellstyle['fields_addSettings'][1] = 'width: 50%;flex-direction: column;align-items: flex-start;'; $userManagementTable->data['captions_addSettings'][0] = __('Comments'); $userManagementTable->data['fields_addSettings'][0] = html_print_textarea( 'comments', 5, 65, $user_info['comments'], ($view_mode ? 'readonly="readonly"' : ''), true, '' ); $userManagementTable->data['captions_addSettings'][1] = __('Login allowed IP list'); $userManagementTable->data['fields_addSettings'][1] = html_print_div( [ 'class' => 'edit_user_allowed_ip', 'content' => html_print_textarea( 'allowed_ip_list', 5, 65, ($user_info['allowed_ip_list'] ?? ''), (((bool) $view_mode === true) ? 'readonly="readonly"' : ''), true ), ], true ); $userManagementTable->data['fields_addSettings'][1] .= ui_print_input_placeholder( __('Add the source IPs that will allow console access. Each IP must be separated only by comma. * allows all.'), true ); $allowAllIpsContent = []; $allowAllIpsContent[] = ''.__('Allow all IPs').''; $allowAllIpsContent[] = html_print_div( [ 'content' => html_print_checkbox_switch( 'allowed_ip_active', 0, ($user_info['allowed_ip_active'] ?? 0), true ), ], true ); $userManagementTable->data['fields_addSettings'][1] .= html_print_div( [ 'class' => 'margin-top-10', 'style' => 'display: flex; flex-direction: row-reverse; align-items: center;', 'content' => implode('', $allowAllIpsContent), ], true ); if (isset($CodeQRTable) === true || isset($apiTokenContent) === true) { // QR Code and API Token advice. html_print_div( [ 'id' => 'api_qrcode_display', 'content' => $CodeQRTable.$apiTokenContent, ] ); } html_print_table($userManagementTable); $vcard_data = []; $vcard_data['version'] = '3.0'; $vcard_data['firstName'] = $user_info['fullname']; $vcard_data['lastName'] = ''; $vcard_data['middleName'] = ''; $vcard_data['workPhone'] = $user_info['phone']; $vcard_data['email'] = $user_info['email']; $vcard_data['organization'] = io_safe_output(get_product_name()); $vcard_data['url'] = ui_get_full_url('index.php'); $vcard_json = json_encode($vcard_data); ?>