From bbfdfd8052ec4de6058bbd51fbbc3fa11cbd2fa5 Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@osticket.com> Date: Sun, 10 Feb 2013 17:26:53 -0500 Subject: [PATCH] Add ApiEmailDataParser class - support email parsing --- include/api.tickets.php | 7 +++++-- include/class.api.php | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/include/api.tickets.php b/include/api.tickets.php index 7fd5ba713..e4f5153dc 100644 --- a/include/api.tickets.php +++ b/include/api.tickets.php @@ -17,8 +17,11 @@ class TicketController extends ApiController { ), "message", "ip", "priorityId" ); - if ($format == "xml") return array("ticket" => $supported); - else return $supported; + + if(!strcasecmp($format, 'email')) + $supported = array_merge($supported, array('header', 'mid', 'emailId', 'ticketId')); + + return $supported; } function create($format) { diff --git a/include/class.api.php b/include/class.api.php index df8cfb0c8..bccf81f12 100644 --- a/include/class.api.php +++ b/include/class.api.php @@ -316,4 +316,39 @@ class ApiJsonDataParser extends JsonDataParser { } } +/* Email parsing */ +include_once "class.mailparse.php"; +class ApiEmailDataParser extends EmailDataParser { + + function parse($stream) { + return $this->fixup(parent::parse($stream)); + } + + function fixup($data) { + global $cfg; + + if(!$data) return $data; + + $data['source'] = 'Email'; + + if(!$data['message']) + $data['message'] = $data['subject']?$data['subject']:'(EMPTY)'; + + if(!$data['subject']) + $data['subject'] = '[No Subject]'; + + if(!$data['emailId']) + $data['emailId'] = $cfg->getDefaultEmailId(); + + if($data['email'] && preg_match ('[[#][0-9]{1,10}]', $data['subject'], $matches)) { + if(($tid=Ticket::getIdByExtId(trim(preg_replace('/[^0-9]/', '', $matches[0])), $data['email']))) + $data['ticketId'] = $tid; + } + + if(!$cfg->useEmailPriority()) + unset($data['priorityId']); + + return $data; + } +} ?> -- GitLab