/**
  * Posts a comment to the JIRA Issue
  *
  * @author Abhinav Kumar
  *
  * @param SWIFT_JIRAComment $_Comment the Comemnt object
  *
  * @throws SWIFT_Exception
  * @return bool
  */
 public function PostComment(SWIFT_JIRAComment $_Comment)
 {
     if ($_Comment) {
         $_Comment->SetIssue($this);
         $_JIRABridge = SWIFT_JIRABridge::GetInstance();
         $_JIRABridge->PostComment($_Comment);
         return true;
     }
     throw new SWIFT_Exception(SWIFT_INVALIDDATA);
 }
 /**
  * Links a ticket with an existing JIRA issue
  *
  * @author Abhinav Kumar
  *
  * @param string $_ticketID The kayako ticket id
  * @param string $_JIRAIssueID
  * @param array  $_data
  *
  * @return boolean
  */
 public function LinkIssue($_ticketID, $_JIRAIssueID, $_data = [])
 {
     if ($_JIRAIssueID && $this->IsIssueValid($_JIRAIssueID) && $_ticketID) {
         $_JIRAIssueManager = $this->Get($_JIRAIssueID);
         if ($_JIRAIssueManager && $_JIRAIssueManager instanceof SWIFT_JIRAIssueManager) {
             if (array_key_exists('description', $_data) && $_data['description'] != '') {
                 $_JIRAComment = new SWIFT_JIRAComment();
                 $_JIRAComment->SetBody($_data['description']);
                 $_JIRAComment->SetIssue($_JIRAIssueManager);
                 $this->PostComment($_JIRAComment);
             }
             //We are almost there . . . time to create a local record for Ticket <->Issue reference
             $this->Load->Library('JIRA:JIRAIssueManager', false, false, 'jira');
             $_SWIFT = SWIFT::GetInstance();
             $_updated = $_SWIFT->Database->AutoExecute(TABLE_PREFIX . self::$_tableName, ['ticketid' => $_SWIFT->Database->Escape($_ticketID), 'issueid' => $_SWIFT->Database->Escape($_JIRAIssueManager->GetId()), 'issuekey' => $_SWIFT->Database->Escape($_JIRAIssueID)], 'INSERT');
             if ($_updated) {
                 $_SWIFTTicketObject = SWIFT_Ticket::GetObjectOnID($_ticketID);
                 if ($_SWIFTTicketObject && $_SWIFTTicketObject instanceof SWIFT_Ticket && $_SWIFTTicketObject->GetIsClassLoaded()) {
                     $_title = $_SWIFTTicketObject->GetTicketDisplayID();
                     $_ticketSummary = $_SWIFTTicketObject->GetProperty('subject');
                 } else {
                     $_title = $this->Language->Get('jira_kayakoticket');
                     $_ticketSummary = '';
                 }
                 $_ticketURL = SWIFT::Get('basename') . '/Tickets/Ticket/View/' . $_ticketID;
                 if ($_SWIFT->Settings->Get('bj_jiraissuelinking')) {
                     $_postLink = $this->PostRemoteLink($_JIRAIssueID, $_ticketURL, $_title, $_ticketSummary);
                     if (!is_bool($_postLink)) {
                         SWIFT::Notify(SWIFT::NOTIFICATION_ERROR, strip_tags($this->Language->Get('jira_error') . $_postLink));
                         return false;
                     }
                 }
             }
         } else {
             $this->SetErrorMessage($this->Language->Get('jira_noissuefound'));
             return false;
         }
     } else {
         $this->SetErrorMessage($this->Language->Get('jira_noissuefound'));
         return false;
     }
     return true;
 }