ping(); $group_values = $ITSM->getGroups(); $priority_values = $ITSM->getPriorities(); $status_values = $ITSM->getStatus(); $object_types_values = $ITSM->getObjectypes(); if ((bool) get_parameter('update_config', 0) === true) { $set_config_inventories = $ITSM->createNode( [ 'serverAuth' => $config['server_unique_identifier'], 'apiPass' => $config['api_password'], 'agentsForExecution' => $config['ITSM_agents_sync'], 'path' => $config['ITSM_public_url'], 'label' => array_keys(servers_get_names())[0], 'nodeId' => $config['metaconsole_node_id'], ] ); } try { $node = $ITSM->getNode($config['server_unique_identifier']); } catch (\Throwable $th) { $node = []; } } catch (\Throwable $th) { $error = $th->getMessage(); $has_connection = false; } if ($has_connection === false && $config['ITSM_enabled']) { ui_print_error_message(__('ITSM API is not reachable, %s', $error)); } $table_enable = new StdClass(); $table_enable->data = []; $table_enable->width = '100%'; $table_enable->id = 'itsm-enable-setup'; $table_enable->class = 'databox filters'; $table_enable->size['name'] = '30%'; $table_enable->style['name'] = 'font-weight: bold'; // Enable Pandora ITSM. $row = []; $row['name'] = __('Enable Pandora ITSM'); $row['control'] = html_print_checkbox_switch('ITSM_enabled', 1, $config['ITSM_enabled'], true); $table_enable->data['ITSM_enabled'] = $row; // Remote config table. $table_remote = new StdClass(); $table_remote->data = []; $table_remote->width = '100%'; $table_remote->styleTable = 'margin-bottom: 10px;'; $table_remote->id = 'ITSM-remote-setup'; $table_remote->class = 'databox filters filter-table-adv'; $table_remote->size['hostname'] = '50%'; $table_remote->size['api_pass'] = '50%'; // Enable ITSM user configuration. $row = []; $row['user_level'] = html_print_label_input_block( __('Pandora ITSM configuration at user level'), html_print_checkbox_switch( 'ITSM_user_level_conf', 1, $config['ITSM_user_level_conf'], true ) ); $table_remote->data['ITSM_user_level_conf'] = $row; // ITSM hostname. $row = []; $row['hostname'] = html_print_label_input_block( __('URL to Pandora ITSM setup').ui_print_help_tip( __('Full URL to your Pandora ITSM setup (e.g., http://192.168.1.20/integria/api/v1).'), true ), html_print_input_text( 'ITSM_hostname', $config['ITSM_hostname'], '', 30, 100, true ), ['div_class' => 'ITSM-remote-setup-ITSM_hostname'] ); // ITSM token. $row['password'] = html_print_label_input_block( __('Token'), html_print_input_password( 'ITSM_token', io_output_password($config['ITSM_token']), '', 30, 100, true ), ['div_class' => 'ITSM-remote-setup-ITSM_token'] ); $table_remote->data['ITSM_token'] = $row; // Test. $row = []; $button_test = html_print_button( __('Test'), 'ITSM', false, '', [ 'icon' => 'cog', 'mode' => 'secondary mini', ], true ); $button_test .= ''; $button_test .= ''; $button_test .= ''; $button_test .= ' '; $row['control'] = html_print_label_input_block( __('Test connection pandora to ITSM'), $button_test, ['div_class' => 'ITSM-remote-setup-ITSM_token'] ); $table_remote->data['ITSM_test'] = $row; $row = []; $itsm_public_url = $config['ITSM_public_url']; if (empty($itsm_public_url) === true) { $itsm_public_url = $config['homeurl']; if (isset($config['public_url']) === true && empty($config['public_url']) === false) { $itsm_public_url = $config['public_url']; } } $row['publicUrl'] = html_print_label_input_block( __('URL conect to API %s', get_product_name()).ui_print_help_tip( __('Full URL to your Pandora (e.g., http://192.168.1.20).'), true ), html_print_input_text( 'ITSM_public_url', $itsm_public_url, '', 30, 100, true ) ); $row['agentsSync'] = html_print_label_input_block( __('Number Agents to synchronize').ui_print_help_tip( __('Number of agents that will synchronize at the same time, minimum 10 max 1000'), true ), html_print_input_number( [ 'name' => 'ITSM_agents_sync', 'min' => 10, 'max' => 1000, 'value' => ($config['ITSM_agents_sync'] ?? 20), ] ) ); $table_remote->data['ITSM_sync_inventory'] = $row; // Test. $row = []; $button_test_pandora = html_print_button( __('Test'), 'ITSM-pandora', false, '', [ 'icon' => 'cog', 'mode' => 'secondary mini', ], true ); $button_test_pandora .= ''; $button_test_pandora .= ''; $button_test_pandora .= ''; $button_test_pandora .= ' '; $row['control-test'] = html_print_label_input_block( __('Test conection ITSM to pandora'), $button_test_pandora ); if (empty($node) === false) { $progressbar = ''; $progress = 0; if (empty($node['total']) === false) { if (empty($node['accumulate']) === true) { $node['accumulate'] = 0; } $progress = round(($node['accumulate'] * 100 / $node['total'])); } if (empty($node['error']) === false) { $progressbar = $node['error']; } else if (empty($node['total']) === false) { $progressbar = '
'; $progressbar .= ui_progress($progress, '150px', '1.3', '#14524f', true, '', false, 'margin-right:5px; color:#c0ccdc'); $progressbar .= ' ( '.$node['accumulate'].' / '.$node['total'].' ) '.__('Agents'); $progressbar .= '
'; } else { $progressbar = '--'; } // $progressbar .= (empty($node['dateStart']) === false) ? human_time_comparation($node['dateStart']) : __('Never'); $row['control-test-pandora'] = html_print_label_input_block( __('Progress agents to synch'), $progressbar ); } $table_remote->data['ITSM_test_pandora'] = $row; // Alert settings. $table_alert_settings = new StdClass(); $table_alert_settings->data = []; $table_alert_settings->rowspan = []; $table_alert_settings->width = '100%'; $table_alert_settings->styleTable = 'margin-bottom: 10px;'; $table_alert_settings->id = 'ITSM-settings-setup'; $table_alert_settings->class = 'databox filters filter-table-adv'; $table_alert_settings->size[0] = '50%'; $table_alert_settings->size[1] = '50%'; // Alert incident title. $table_alert_settings->data[0][0] = html_print_label_input_block( __('Title'), html_print_input_text( 'incident_title', $config['incident_title'], __('Name'), 50, 100, true, false, false ) ); // Alert incident description. $table_alert_settings->rowspan[0][1] = 3; $table_alert_settings->data[0][1] = html_print_label_input_block( __('Ticket body'), html_print_textarea( 'incident_content', 9, 25, $config['incident_content'], '', true ) ); // Alert default group. $table_alert_settings->data[1][0] = html_print_label_input_block( __('Group'), html_print_select( $group_values, 'default_group', $config['default_group'], '', '', 0, true, false, true, '', false ) ); // Alert default owner. $table_alert_settings->data[2][0] = html_print_label_input_block( __('Owner'), html_print_autocomplete_users_from_pandora_itsm( 'default_owner', $config['default_owner'], true, '30', false, false, 'w100p' ), ['div_class' => 'inline'] ); // Alert default incident status. $table_alert_settings->data[3][0] = html_print_label_input_block( __('Status'), html_print_select( $status_values, 'incident_status', $config['incident_status'], '', __('Select'), 0, true, false, true, '', false ) ); // Alert default criticity. $table_alert_settings->data[3][1] = html_print_label_input_block( __('Priority'), html_print_select( $priority_values, 'default_criticity', $config['default_criticity'], '', __('Select'), 0, true, false, true, '', false ) ); // Alert default incident type. $table_alert_settings->data[4][0] = html_print_label_input_block( __('Type'), html_print_select( $object_types_values, 'incident_type', $config['incident_type'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response settings. $table_cr_settings = new StdClass(); $table_cr_settings->data = []; $table_cr_settings->width = '100%'; $table_cr_settings->styleTable = 'margin-bottom: 10px;'; $table_cr_settings->id = 'ITSM-cr-settings-setup'; $table_cr_settings->class = 'databox filters filter-table-adv'; $table_cr_settings->size[0] = '50%'; $table_cr_settings->size[1] = '50%'; // Custom response incident title. $table_cr_settings->data[0][0] = html_print_label_input_block( __('Title'), html_print_input_text( 'cr_incident_title', $config['cr_incident_title'], __('Name'), 50, 100, true, false, false ) ); // Custom response incident description. $table_cr_settings->rowspan[0][1] = 3; $table_cr_settings->data[0][1] = html_print_label_input_block( __('Ticket body'), html_print_textarea( 'cr_incident_content', 9, 25, $config['cr_incident_content'], '', true ) ); // Custom response default group. $table_cr_settings->data[1][0] = html_print_label_input_block( __('Group'), html_print_select( $group_values, 'cr_default_group', $config['cr_default_group'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response default owner. $table_cr_settings->data[2][0] = html_print_label_input_block( __('Owner'), html_print_autocomplete_users_from_pandora_itsm( 'cr_default_owner', $config['cr_default_owner'], true, '30', false, false, 'w100p' ), ['div_class' => 'inline'] ); // Custom response default incident status. $row = []; $table_cr_settings->data[3][0] = html_print_label_input_block( __('Status'), html_print_select( $status_values, 'cr_incident_status', $config['cr_incident_status'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response default criticity. $table_cr_settings->data[3][1] = html_print_label_input_block( __('Priority'), html_print_select( $priority_values, 'cr_default_criticity', $config['cr_default_criticity'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response default incident type. $table_cr_settings->data[4][0] = html_print_label_input_block( __('Type'), html_print_select( $object_types_values, 'cr_incident_type', $config['cr_incident_type'], '', __('Select'), 0, true, false, true, '', false ) ); // Print. echo '
'; echo ''; html_print_image( 'images/pandoraITSM_logo.png', false, ['class' => 'w600px mrgn_top_15px'] ); echo ''; echo '
'; echo '
'; echo __('Pandora ITSM'); echo '
'; echo ''; echo 'https://pandorafms.com/es/itsm/'; echo ''; echo '
'; echo "
"; html_print_input_hidden('update_config', 1); // Form enable. echo '
'; html_print_table($table_enable); echo '
'; // Form remote. echo '
'; echo '
'; echo ''.__('Pandora ITSM API settings').''; html_print_table($table_remote); echo '
'; echo '
'; if ($has_connection !== false) { // Form alert default settings. echo '
'; echo '
'; echo ''.__('Alert default values').' '.ui_print_help_icon('alert_macros', true).''; html_print_table($table_alert_settings); echo '
'; echo '
'; // Form custom response default settings. echo '
'; echo '
'; echo ''.__('Event custom response default values').' '.ui_print_help_icon('alert_macros', true).''; html_print_table($table_cr_settings); echo '
'; echo '
'; $update_button = html_print_submit_button( __('Update'), 'update_button', false, ['icon' => 'update'], true ); } else { $update_button = html_print_submit_button( __('Update and continue'), 'update_button', false, ['icon' => 'update'], true ); } html_print_action_buttons($update_button); echo '
'; ui_require_javascript_file('ITSM'); ?>