TicketGateway can now insert tickets

remotes/upstream/api-rewrite
Mike Koch 7 years ago
parent 65b10bae3c
commit 044faa77f6

@ -236,6 +236,15 @@ class Ticket {
*/
public $attachments;
function getAttachmentsForDatabase() {
$attachmentArray = array();
foreach ($this->attachments as $attachment) {
$attachmentArray[] = $attachment->id . '#' . $attachment->fileName . '#' . $attachment->savedName;
}
return implode(',', $attachmentArray);
}
/**
* @var int[]|null
*/
@ -272,6 +281,9 @@ class Ticket {
public $userAgent;
/**
* 0 => width
* 1 => height
*
* @var int[]|null
*/
public $screenResolution;

@ -82,4 +82,109 @@ class TicketGateway extends CommonDao {
return $ticket;
}
/**
* @param $ticket Ticket
* @param $heskSettings
*/
function createTicket($ticket, $heskSettings) {
global $hesklang;
// If language is not set or default, set it to NULL.
if ($ticket->language === null || empty($ticket->language)) {
$language = (!$heskSettings['can_sel_lang']) ? HESK_DEFAULT_LANGUAGE : hesk_dbEscape($hesklang['LANGUAGE']);
} else {
$language = $ticket->language;
}
$dueDate = $ticket->dueDate ? "'{$ticket->dueDate}'" : "NULL";
// Prepare SQL for custom fields
$customWhere = '';
$customWhat = '';
for ($i=1; $i<=50; $i++)
{
$customWhere .= ", `custom{$i}`";
$customWhat .= ", '" . (isset($ticket->customFields[$i]) ? hesk_dbEscape($ticket->customFields[$i]) : '') . "'";
}
$suggestedArticles = '';
if ($ticket->suggestedArticles !== null && !empty($ticket->suggestedArticles)) {
$suggestedArticles = implode(',', $ticket->suggestedArticles);
}
$latitude = $ticket->location !== null
&& isset($ticket->location[0])
&& $ticket->location[0] !== null ? $ticket->location[0] : '';
$longitude = $ticket->location !== null
&& isset($ticket->location[1])
&& $ticket->location[1] !== null ? $ticket->location[1] : '';
$userAgent = $ticket->userAgent !== null ? $ticket->userAgent : '';
$screenResolutionWidth = $ticket->screenResolution !== null
&& isset($ticket->screenResolution[0])
&& $ticket->screenResolution[0] !== null ? intval($ticket->screenResolution[0]) : '';
$screenResolutionHeight = $ticket->screenResolution !== null
&& isset($ticket->screenResolution[1])
&& $ticket->screenResolution[1] !== null ? intval($ticket->screenResolution[1]) : '';
$sql = "INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "tickets`
(
`trackid`,
`name`,
`email`,
`category`,
`priority`,
`subject`,
`message`,
`dt`,
`lastchange`,
`articles`,
`ip`,
`language`,
`openedby`,
`owner`,
`attachments`,
`merged`,
`status`,
`latitude`,
`longitude`,
`html`,
`user_agent`,
`screen_resolution_height`,
`screen_resolution_width`,
`due_date`,
`history`
{$customWhere}
)
VALUES
(
'" . hesk_dbEscape($ticket->trackingId) . "',
'" . hesk_dbEscape($ticket->name) . "',
'" . hesk_dbEscape($ticket->email) . "',
'" . intval($ticket->categoryId) . "',
'" . intval($ticket->priorityId) . "',
'" . hesk_dbEscape($ticket->subject) . "',
'" . hesk_dbEscape($ticket->message) . "',
NOW(),
NOW(),
" . $suggestedArticles . ",
'" . hesk_dbEscape($ticket->ipAddress) . "',
'" . hesk_dbEscape($language) . "',
'" . intval($ticket->openedBy) . "',
'" . intval($ticket->ownerId) . "',
'" . hesk_dbEscape($ticket->getAttachmentsForDatabase()) . "',
'',
'" . intval($ticket->statusId) . "',
'" . hesk_dbEscape($latitude) . "',
'" . hesk_dbEscape($longitude) . "',
'" . hesk_dbEscape($ticket->usesHtml) . "',
'" . hesk_dbEscape($userAgent) . "',
" . hesk_dbEscape($screenResolutionHeight) . ",
" . hesk_dbEscape($screenResolutionWidth) . ",
{$dueDate},
'" . hesk_dbEscape($ticket->auditTrailHtml) . "'
{$customWhat}
)
";
}
}
Loading…
Cancel
Save