function _parseFile($full_filename) { $logger = DevblocksPlatform::getConsoleLog(); $fileparts = pathinfo($full_filename); $logger->info("[Parser] Reading " . $fileparts['basename'] . "..."); $time = microtime(true); $mime = mailparse_msg_parse_file($full_filename); $message = CerberusParser::parseMime($mime, $full_filename); $time = microtime(true) - $time; $logger->info("[Parser] Decoded! (" . sprintf("%d", $time * 1000) . " ms)"); // echo "<b>Plaintext:</b> ", $message->body,"<BR>"; // echo "<BR>"; // echo "<b>HTML:</b> ", htmlspecialchars($message->htmlbody), "<BR>"; // echo "<BR>"; // echo "<b>Files:</b> "; print_r($message->files); echo "<BR>"; // echo "<HR>"; $time = microtime(true); $ticket_id = CerberusParser::parseMessage($message); $time = microtime(true) - $time; $logger->info("[Parser] Parsed! (" . sprintf("%d", $time * 1000) . " ms) " . (!empty($ticket_id) ? "(Ticket ID: " . $ticket_id . ")" : "(Local Delivery Rejected.)")); @unlink($full_filename); mailparse_msg_free($mime); // flush(); }
private function _postSourceParseAction($path) { $xml_in = simplexml_load_string($this->getPayload()); @($source = (string) $xml_in->source); if (empty($source)) { $this->_error("No message source was provided."); } //echo("<pre>");print_r($source);echo("</pre>");exit(); $file = CerberusParser::saveMimeToFile($source); $mime = mailparse_msg_parse_file($file); $message = CerberusParser::parseMime($mime, $file); mailparse_msg_free($mime); @unlink($file); $ticket_id = CerberusParser::parseMessage($message); if (null != ($ticket = DAO_Ticket::getTicket($ticket_id))) { // [TODO] Denote if ticket is new or reply? $xml_out = new SimpleXMLElement("<ticket></ticket>"); $xml_out->addChild("id", $ticket_id); $xml_out->addChild("mask", $ticket->mask); $this->_render($xml_out->asXML()); } else { $this->_error("Message could not be parsed."); } }