id = intval($row['id']); $ticket->trackingId = $row['trackid']; $ticket->name = $row['name']; if ($row['email'] !== null) { $emails = str_replace(';', ',', $row['email']); $emails = explode(',', strtolower($emails)); $ticket->email = array_filter($emails); } $ticket->categoryId = intval($row['category']); $ticket->priorityId = intval($row['priority']); $ticket->subject = $row['subject']; $ticket->message = $row['message']; $ticket->dateCreated = $row['dt']; $ticket->lastChanged = $row['lastchange']; $ticket->firstReplyDate = $row['firstreply']; $ticket->closedDate = $row['closedat']; if (trim($row['articles']) !== '') { $suggestedArticles = explode(',', $row['articles']); $articlesAsInts = array(); foreach ($suggestedArticles as $article) { $articlesAsInts[] = intval($article); } $ticket->suggestedArticles = $articlesAsInts; } $ticket->ipAddress = $row['ip']; $ticket->language = $row['language']; $ticket->statusId = intval($row['status']); $ticket->openedBy = intval($row['openedby']); $ticket->firstReplyByUserId = $row['firstreplyby'] === null ? null : intval($row['firstreplyby']); $ticket->closedByUserId = $row['closedby'] === null ? null : intval($row['closedby']); $ticket->numberOfReplies = intval($row['replies']); $ticket->numberOfStaffReplies = intval($row['staffreplies']); $ticket->ownerId = intval($row['owner']); $ticket->assignedBy = $row['assignedby'] === null ? null : intval($row['assignedby']); $ticket->timeWorked = $row['time_worked']; $ticket->lastReplyBy = intval($row['lastreplier']); $ticket->lastReplier = $row['replierid'] === null ? null : intval($row['replierid']); $ticket->archived = intval($row['archive']) === 1; $ticket->locked = intval($row['locked']) === 1; if (trim($row['attachments']) !== '') { $attachments = explode(',', $row['attachments']); $attachmentArray = array(); foreach ($attachments as $attachment) { if (trim($attachment) === '') { continue; } $attachmentRow = explode('#', $attachment); $attachmentModel = new Attachment(); $attachmentModel->id = $attachmentRow[0]; $attachmentModel->fileName = $attachmentRow[1]; $attachmentModel->savedName = $attachmentRow[2]; $attachmentArray[] = $attachmentModel; } $ticket->attachments = $attachmentArray; } if (trim($row['merged']) !== '') { $ticket->mergedTicketIds = explode(',', $row['merged']); } $ticket->auditTrailHtml = $row['history']; $ticket->customFields = array(); foreach ($heskSettings['custom_fields'] as $key => $value) { if ($value['use'] && hesk_is_custom_field_in_category($key, intval($ticket->categoryId))) { $ticket->customFields[str_replace('custom', '', $key)] = $row[$key]; } } while ($linkedTicketsRow = hesk_dbFetchAssoc($linkedTicketsRs)) { $ticket->linkedTicketIds[] = $linkedTicketsRow['id']; } if ($row['latitude'] !== '' && $row['longitude'] !== '') { $ticket->location = array(); $ticket->location[0] = $row['latitude']; $ticket->location[1] = $row['longitude']; } $ticket->usesHtml = intval($row['html']) === 1; if ($row['user_agent'] !== null && trim($row['user_agent']) !== '') { $ticket->userAgent = $row['user_agent']; } if ($row['screen_resolution_height'] !== null && $row['screen_resolution_width'] !== null){ $ticket->screenResolution = array(); $ticket->screenResolution[0] = $row['screen_resolution_width']; $ticket->screenResolution[1] = $row['screen_resolution_height']; } $ticket->dueDate = $row['due_date']; $ticket->dueDateOverdueEmailSent = $row['overdue_email_sent'] !== null && intval($row['overdue_email_sent']) === 1; $replies = array(); while ($replyRow = hesk_dbFetchAssoc($repliesRs)) { $reply = new Reply(); $reply->id = $replyRow['id']; $reply->ticketId = $replyRow['replyto']; $reply->replierName = $replyRow['name']; $reply->message = $replyRow['message']; $reply->dateCreated = $replyRow['dt']; if (trim($replyRow['attachments']) !== '') { $attachments = explode(',', $replyRow['attachments']); $attachmentArray = array(); foreach ($attachments as $attachment) { if (trim($attachment) === '') { continue; } $attachmentRow = explode('#', $attachment); $attachmentModel = new Attachment(); $attachmentModel->id = $attachmentRow[0]; $attachmentModel->fileName = $attachmentRow[1]; $attachmentModel->savedName = $attachmentRow[2]; $attachmentArray[] = $attachmentModel; } $reply->attachments = $attachmentArray; } $reply->staffId = $replyRow['staffid'] > 0 ? $replyRow['staffid'] : null; $reply->rating = $replyRow['rating']; $reply->isRead = $replyRow['read'] === '1'; $reply->usesHtml = $replyRow['html'] === '1'; $replies[$reply->id] = $reply; } $ticket->replies = $replies; $ticket->auditTrail = $auditRecords; return $ticket; } /** * @var int */ public $id; /** * @var string */ public $trackingId; /** * @var string */ public $name; /** * @var string[]|null */ public $email; /** * @var int */ public $categoryId; /** * @var int */ public $priorityId; /** * @var string|null */ public $subject; /** * @var string|null */ public $message; /** * @var string */ public $dateCreated; /** * @var string */ public $lastChanged; /** * @var string|null */ public $firstReplyDate; /** * @var string|null */ public $closedDate; /** * @var int[] */ public $suggestedArticles = array(); /** * @var string */ public $ipAddress; /** * @var string|null */ public $language; /** * @var int */ public $statusId; /** * @var int */ public $openedBy; /** * @var int|null */ public $firstReplyByUserId; /** * @var int|null */ public $closedByUserId; /** * @var int */ public $numberOfReplies; /** * @var int */ public $numberOfStaffReplies; /** * @var int|null */ public $ownerId; /** * @var int|null */ public $assignedBy; /** * @var string */ public $timeWorked; /** * @var int */ public $lastReplyBy; /** * @var int|null */ public $lastReplier; /** * @var bool */ public $archived; /** * @var bool */ public $locked; /** * @var Attachment[] */ public $attachments = array(); function getAttachmentsForDatabase() { $attachmentArray = array(); if ($this->attachments !== null) { foreach ($this->attachments as $attachment) { $attachmentArray[] = $attachment->id . '#' . $attachment->fileName . '#' . $attachment->savedName; } } return implode(',', $attachmentArray); } /** * @var int[] */ public $mergedTicketIds = array(); /** * @var string */ public $auditTrailHtml; /** * @var AuditTrail */ public $auditTrail; /** * @var string[] */ public $customFields; /** * @var int[] */ public $linkedTicketIds = array(); /** * @var float[]|null */ public $location; /** * @var bool */ public $usesHtml; /** * @var string|null */ public $userAgent; /** * 0 => width * 1 => height * * @var int[]|null */ public $screenResolution; /** * @var string|null */ public $dueDate; /** * @var bool|null */ public $dueDateOverdueEmailSent; /** * @var Reply[] */ public $replies = array(); }