Example #1
0
File: lib.php Project: lursu/morgue
 /**
  * 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;
 }
Example #2
0
$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);
Example #3
0
<!-- 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) {