diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php index b86aca4ddde1dbcbd2acdc5245275ffbc2451946..5437907ebbf05560a6628c6e4be1bc3ee700b6a1 100644 --- a/include/class.mailfetch.php +++ b/include/class.mailfetch.php @@ -419,7 +419,7 @@ class MailFetcher { $errors=array(); if($ticket) { - if(!($msgid=$ticket->postMessage($var['message'], 'Email', $var['mid'], $var['header']))) + if(!($msgid=$ticket->postMessage($vars, 'Email'))) return false; } elseif (($ticket=Ticket::create($var, $errors, 'Email'))) { diff --git a/include/class.ticket.php b/include/class.ticket.php index 6e2936624f7be4ac20b515e4aef1ed2dcc58e19d..c8a2ad008781a02e493985246a17d49f18ec18ff 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -1379,40 +1379,43 @@ class Ticket { } //Insert message from client - function postMessage($message,$source='',$emsgid=null,$headers='',$newticket=false){ + function postMessage($vars, $source='', $alerts=true) { global $cfg; - if(!$this->getId()) return 0; - + if(!$vars || !$vars['message']) + return 0; + //Strip quoted reply...on emailed replies if(!strcasecmp($source, 'Email') && $cfg->stripQuotedReply() - && ($tag=$cfg->getReplySeparator()) && strpos($message, $tag)) - list($message)=split($tag, $message); + && ($tag=$cfg->getReplySeparator()) && strpos($vars['message'], $tag)) + list($vars['message']) = split($tag, $vars['message']); # XXX: Refuse auto-response messages? (via email) XXX: No - but kill our auto-responder. + $sql='INSERT INTO '.TICKET_THREAD_TABLE.' SET created=NOW()' .' ,thread_type="M" ' .' ,ticket_id='.db_input($this->getId()) # XXX: Put Subject header into the 'title' field - .' ,body='.db_input(Format::striptags($message)) //Tags/code stripped...meaning client can not send in code..etc + .' ,body='.db_input(Format::striptags($vars['message'])) //Tags/code stripped...meaning client can not send in code..etc .' ,source='.db_input($source?$source:$_SERVER['REMOTE_ADDR']) .' ,ip_address='.db_input($_SERVER['REMOTE_ADDR']); - if(!db_query($sql) || !($msgid=db_insert_id())) return 0; //bail out.... + if(!db_query($sql) || !($msgid=db_insert_id())) + return 0; //bail out.... $this->setLastMsgId($msgid); - - if ($emsgid !== null) { + + if (isset($vars['mid'])) { $sql='INSERT INTO '.TICKET_EMAIL_INFO_TABLE .' SET message_id='.db_input($msgid) - .', email_mid='.db_input($emsgid) - .', headers='.db_input($headers); + .', email_mid='.db_input($vars['mid']) + .', headers='.db_input($vars['header']); db_query($sql); } - if($newticket) return $msgid; //Our work is done... + if(!$alerts) return $msgid; //Our work is done... $autorespond = true; if ($autorespond && $headers && TicketFilter::isAutoResponse(Mail_Parse::splitHeaders($headers))) @@ -1431,7 +1434,7 @@ class Ticket { //If enabled...send alert to staff (New Message Alert) if($cfg->alertONNewMessage() && $tpl && $email && ($msg=$tpl->getNewMessageAlertMsgTemplate())) { - $msg = $this->replaceVars($msg, array('message' => $message)); + $msg = $this->replaceVars($msg, array('message' => $vars['message'])); //Build list of recipients and fire the alerts. $recipients=array(); @@ -2219,7 +2222,7 @@ class Ticket { $dept = $ticket->getDept(); //post the message. - $msgid=$ticket->postMessage($vars['message'],$source,$vars['mid'],$vars['header'],true); + $msgid=$ticket->postMessage($vars , $source, false); // Configure service-level-agreement for this ticket $ticket->selectSLAId($vars['slaId']); diff --git a/tickets.php b/tickets.php index 626b41474c68fae3305e31b44b669df725ca24f3..cc213787703521d3afb88c79715583d1842487cb 100644 --- a/tickets.php +++ b/tickets.php @@ -40,7 +40,7 @@ if($_POST && is_object($ticket) && $ticket->getId()): if(!$errors) { //Everything checked out...do the magic. - if(($msgid=$ticket->postMessage($_POST['message'],'Web'))) { + if(($msgid=$ticket->postMessage(array('message'=>$_POST['message']), 'Web'))) { //Upload files if($cfg->allowOnlineAttachments() && $_FILES['attachments'])