'.html_print_image('images/setup.png', true, ['title' => __('Configure Integria IMS')]).''; $list_tab['text'] = ''.html_print_image('images/list.png', true, ['title' => __('Ticket list')]).''; $create_tab['text'] = ''.html_print_image('images/pencil.png', true, ['title' => __('New ticket')]).''; switch ($active_tab) { case 'setup_tab': $setup_tab['active'] = true; $list_tab['active'] = false; $create_tab['active'] = false; break; case 'list_tab': $setup_tab['active'] = false; $list_tab['active'] = true; $create_tab['active'] = false; break; case 'create_tab': $setup_tab['active'] = false; $list_tab['active'] = false; $create_tab['active'] = true; break; default: $setup_tab['active'] = false; $list_tab['active'] = false; $create_tab['active'] = false; break; } if ($view) { $create_tab['text'] = ''.html_print_image('images/pencil.png', true, ['title' => __('Edit ticket')]).''; $view_tab['text'] = ''.html_print_image('images/operation.png', true, ['title' => __('View ticket')]).''; // When the current page is the View page. if (!$active_tab) { $view_tab['active'] = true; } } $onheader = []; if (check_acl($config['id_user'], 0, 'IR') && $view) { $onheader['view'] = $view_tab; } if (check_acl($config['id_user'], 0, 'PM')) { $onheader['configure'] = $setup_tab; } if (check_acl($config['id_user'], 0, 'IR')) { $onheader['list'] = $list_tab; } if (check_acl($config['id_user'], 0, 'IW')) { $onheader['create'] = $create_tab; } return $onheader; } /** * Gets all the details of Integria IMS API * * @param string $details Type of API call. * @param number $detail_index Send index if you want return the text. * * @return string or array with result of API call. */ function integriaims_get_details($details, $detail_index=false) { global $config; switch ($details) { case 'status': $operation = 'get_incidents_status'; break; case 'group': $operation = 'get_groups'; break; case 'priority': $operation = 'get_incident_priorities'; break; case 'resolution': $operation = 'get_incidents_resolutions'; break; case 'type': $operation = 'get_types'; break; default: // code... break; } $api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], $operation); $result = []; get_array_from_csv_data_pair($api_call, $result); if ($detail_index !== false) { if ($result[$detail_index] == '' || $result[$detail_index] === null) { return __('None'); } else { return $result[$detail_index]; } } else { return $result; } } /** * Perform an API call to Integria IMS. * * @param string API host URL. * @param string User name. * @param string User password. * @param string API password. * @param string API Operation. * @param array Array with parameters required by the API function. * * @return boolean True if API request succeeded, false if API request failed. */ function integria_api_call($api_hostname, $user, $user_pass, $api_pass, $operation, $params_array=[], $show_credentials_error_msg=false) { $params_string = implode(',', $params_array); $url_data = [ 'user' => $user, 'user_pass' => $user_pass, 'pass' => $api_pass, 'op' => $operation, 'params' => html_entity_decode($params_string), ]; // Build URL for API request. $url = $api_hostname.'/integria/include/api.php'; // ob_start(); // $out = fopen('php://output', 'w'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $url_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, $out); $result = curl_exec($ch); // fclose($out); // $debug = ob_get_clean(); $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = false; if ($result === false) { $error = curl_error($ch); } curl_close($ch); if ($error === true || $http_status !== 200) { if ($show_credentials_error_msg === true) { ui_print_error_message(__('API request failed. Please check Integria IMS\' access credentials in Pandora setup.')); } return false; } else { return $result; } } // Parse CSV consisting of one or more lines of the form key-value pair into an array. function get_array_from_csv_data_pair($csv_data, &$array_values) { $csv_array = explode("\n", $csv_data); foreach ($csv_array as $csv_value) { if (empty($csv_value)) { continue; } $new_csv_value = str_getcsv($csv_value); $array_values[$new_csv_value[0]] = $new_csv_value[1]; } } /** * Parse CSV consisting of all lines into an array. * * @param string $csv_data Data returned of csv api call. * @param string $array_values Returned array. * @param array $index Array to create an associative index (opcional). */ function get_array_from_csv_data_all($csv_data, &$array_values, $index=false) { $csv_array = explode("\n", $csv_data); foreach ($csv_array as $csv_value) { if (empty($csv_value)) { continue; } $new_csv_value = str_getcsv($csv_value); if ($index !== false) { foreach ($new_csv_value as $key => $value) { $new_csv_value_index[$index[$key]] = str_replace(':::', ',', $value); ; } $array_values[$new_csv_value[0]] = $new_csv_value_index; } else { $new_csv_value_comma = array_map( function ($item) { return str_replace(':::', ',', $item); }, $new_csv_value ); $array_values[$new_csv_value[0]] = $new_csv_value_comma; } } } /** * Print priority for Integria IMS with colors. * * @param string $priority value of priority in Integria IMS. * @param string $priority_label text shown in color box. * * @return HTML code to print the color box. */ function ui_print_integria_incident_priority($priority, $priority_label) { global $config; $output = ''; switch ($priority) { case 0: $color = COL_UNKNOWN; break; case 1: $color = COL_NORMAL; break; case 10: $color = COL_NOTINIT; break; case 2: $color = COL_WARNING; break; case 3: $color = COL_ALERTFIRED; break; case 4: $color = COL_CRITICAL; break; } $output = '