diff --git a/include/api.tickets.php b/include/api.tickets.php index 7fd5ba713c8237aad483c4a44b08989cf9b17c3f..e4f5153dcc4ae0422eb3d410cdd18cba1e6cd25f 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 df8cfb0c8a9cb9f452b62de56c1e15181731d614..bccf81f12cd397f017873fc5329c3b65b411207e 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; + } +} ?>