/** * function to merge JIRA ticket info from the database with info from the * JIRA API * * @param $tickets - array of JIRA ticket objects from the DB * @param $curl - curl client to use (default: null) * * @returns array of merged JIRA tickets */ static function merge_jira_tickets($tickets, $curl = null) { if (empty($tickets)) { return array(); } $jira_tickets = array(); if (is_null($curl)) { $curl = new CurlClient(); } $tickets_ids = array(); foreach ($tickets as $k => $v) { array_push($tickets_ids, $v['ticket']); } $jira_client = new JiraClient($curl); $jira_info = $jira_client->getJiraTickets(array_values($tickets_ids)); foreach ($tickets as $ticket) { $key = $ticket['ticket']; $id = $ticket['id']; if (isset($jira_info[$key])) { $ticket_info = $jira_info[$key]; $ticket_info['id'] = $id; $jira_tickets[$key] = $ticket_info; } } return $jira_tickets; }
$app->get('/events/:id/tickets', function ($id) use($app) { header("Content-Type: application/json"); $tickets = Jira::get_jira_tickets_for_event($id); if ($tickets["status"] == Jira::ERROR) { $app->response->status(404); return; } else { $tickets = Jira::merge_jira_tickets($tickets["values"]); echo json_encode($tickets); } }); $app->post('/events/:id/tickets', function ($id) use($app) { header("Content-Type: application/json"); $curl = new CurlClient(); $jira = new JiraClient($curl); $tickets = explode(',', $app->request()->post('tickets')); $tickets = array_map('trim', $tickets); $tickets = array_keys($jira->getJiraTickets($tickets)); $res = Jira::save_jira_tickets_for_event($id, $tickets); if ($res["status"] == Jira::ERROR) { $app->response->status(400); } else { $app->response->status(201); $tickets = Jira::get_jira_tickets_for_event($id); if ($tickets["status"] == Jira::ERROR) { $app->response->status(404); return; } else { $tickets = Jira::merge_jira_tickets($tickets["values"]); echo json_encode($tickets);
<!-- Remediation --> <?php $ticket_ids = Jira::get_jira_tickets_for_event($id); if ($ticket_ids['status'] == Jira::OK) { $ticket_ids = $ticket_ids['values']; } else { $ticket_ids = array(); } $jira_client = new JiraClient($curl_client); $jira_tickets = Jira::merge_jira_tickets($ticket_ids); $jira_keys = array_keys($jira_tickets); ?> <div class="row-fluid"> <legend>Remediation</legend> <div class="editable_hidden" style="display:none;"> <div id="jira-link"><a href="<?php echo $jira_client->getJiraBaseUrl(); ?> /secure/CreateIssue!default.jspa" target="_new">Create New Issue</a></div> <input type="text" placeholder="Enter JIRA key(s), separated by commas (i.e. CORE-2024, OPS-1453)" id="jira_key_input" name="jira_key_input" class="input-xxlarge" onblur="addTicket()"> </div> <table class="table table-striped"> <thead> <tr> <th>Key</th> <th>Summary</th> <th>Assignee</th> <?php foreach ($jira_client->getAdditionalIssueFields() as $k => $v) {