static function &ParseTemplate($template, &$ticket, $subject, $body, $ishtml) { $handler = FST_EMail::GetHandler($ticket['admin_id']); $custrec = FST_EMail::GetUser($ticket['user_id']); $subject = trim(str_ireplace("re:", "", $subject)); $vars[] = FST_EMail::BuildVar('subject', $subject); /*if ($ishtml) { $body = str_replace("\n","<br />\n",$body); }*/ $body = FST_Helper::ParseBBCode($body); $vars[] = FST_EMail::BuildVar('body', $body); $vars[] = FST_EMail::BuildVar('reference', $ticket['reference']); $vars[] = FST_EMail::BuildVar('password', $ticket['password']); if ($ticket['user_id'] == 0) { $vars[] = FST_EMail::BuildVar('user_name', $ticket['unregname']); $vars[] = FST_EMail::BuildVar('user_username', JText::_("UNREGISTERED")); $vars[] = FST_EMail::BuildVar('user_email', $ticket['email']); } else { $vars[] = FST_EMail::BuildVar('user_name', $custrec['name']); $vars[] = FST_EMail::BuildVar('user_username', $custrec['username']); $vars[] = FST_EMail::BuildVar('user_email', $custrec['email']); } $vars[] = FST_EMail::BuildVar('handler_name', $handler['name']); $vars[] = FST_EMail::BuildVar('handler_username', $handler['username']); $vars[] = FST_EMail::BuildVar('handler_email', $handler['email']); $vars[] = FST_EMail::BuildVar('ticket_id', $ticket['id']); $vars[] = FST_EMail::BuildVar('status', FST_EMail::GetStatus($ticket['ticket_status_id'])); $vars[] = FST_EMail::BuildVar('priority', FST_EMail::GetPriority($ticket['ticket_pri_id'])); $vars[] = FST_EMail::BuildVar('category', FST_EMail::GetCategory($ticket['ticket_cat_id'])); $vars[] = FST_EMail::BuildVar('department', FST_EMail::GetDepartment($ticket['ticket_dept_id'])); $vars[] = FST_EMail::BuildVar('product', FST_EMail::GetProduct($ticket['prod_id'])); if (strpos($template['body'], "{messagehistory}") > 0) { //echo "Get message history<br>"; $messages = FST_EMail::GetMessageHist($ticket['id']); // need to load in the messagerow template and parse it $text = FST_EMail::ParseMessageRows($messages, $ishtml); $vars[] = FST_EMail::BuildVar('messagehistory', $text); //print_p($messages); } $uri = JURI::getInstance(); $baseUrl = $uri->toString(array('scheme', 'host', 'port')); $vars[] = FST_EMail::BuildVar('ticket_link', $baseUrl . FSTRoute::_('index.php?option=com_fst&view=ticket&ticketid=' . $ticket['id'], false)); $vars[] = FST_EMail::BuildVar('admin_link', $baseUrl . FSTRoute::_('index.php?option=com_fst&view=admin&layout=support&ticketid=' . $ticket['id'], false)); $config = JFactory::getConfig(); if (FSTJ3Helper::IsJ3()) { $sitename = $config->get('sitename'); } else { $sitename = $config->getValue('sitename'); } if (FST_Settings::get('support_email_site_name') != "") { $sitename = FST_Settings::get('support_email_site_name'); } $vars[] = FST_EMail::BuildVar('websitetitle', $sitename); // need to add the tickets custom fields to the output here $fields = FSTCF::GetAllCustomFields(true); $values = FSTCF::GetTicketValues($ticket['id'], $ticket); foreach ($fields as $fid => &$field) { $name = "custom_" . $fid; $value = ""; if (array_key_exists($fid, $values)) { $value = $values[$fid]['value']; } //echo "$name -> $value<br>"; $fieldvalues = array(); $fieldvalues[0]['field_id'] = $fid; $fieldvalues[0]['value'] = $value; // only do area output processing if we are in html mode if ($field['type'] != "area" || $ishtml) { $value = FSTCF::FieldOutput($field, $fieldvalues, ''); } $vars[] = FST_EMail::BuildVar($name, $value); } $email['subject'] = FST_EMail::ParseText($template['subject'], $vars); $email['body'] = FST_EMail::ParseText($template['body'], $vars); //print_p($vars); //print_p($email); if ($template['ishtml']) { //$email['subject'] = str_replace("\n","<br />\n",$email['subject']); $email['body'] = FST_EMail::MaxLineLength($email['body']); } else { // strip bbcode out of subject or parse it to html depending on template type $email['body'] = str_replace("<br />", "\n", $email['body']); $email['body'] = html_entity_decode($email['body']); $email['body'] = preg_replace_callback("/(&#[0-9]+;)/", array($this, "email_decode_utf8"), $email['body']); $email['body'] = strip_tags($email['body']); } return $email; }