【发布时间】:2012-01-11 17:06:27
【问题描述】:
我已经使用 osTicket 开箱即用已有几年了,它的效果非常好。我现在将这个系统用于我支持的一些医疗诊所,并且我添加了一个额外的字段,要求用户输入他们所在诊所的名称。
这也行得通,但我不知道如何将诊所名称包含在自动电子邮件中,该电子邮件会告诉我的员工有一张新票打开了。我想我需要添加一个新的基础变量,但不知道该怎么做?有什么想法吗?
【问题讨论】:
标签: php
我已经使用 osTicket 开箱即用已有几年了,它的效果非常好。我现在将这个系统用于我支持的一些医疗诊所,并且我添加了一个额外的字段,要求用户输入他们所在诊所的名称。
这也行得通,但我不知道如何将诊所名称包含在自动电子邮件中,该电子邮件会告诉我的员工有一张新票打开了。我想我需要添加一个新的基础变量,但不知道该怎么做?有什么想法吗?
【问题讨论】:
标签: php
在include/class.ticket.php,第 422 行
它们都在这个函数中。相应地添加到$search & $replace。
function replaceTemplateVars($text){
global $cfg;
$dept = $this->getDept();
$staff= $this->getStaff();
$search = array('/%id/','/%ticket/','/%email/','/%name/','/%subject/','/%topic/','/%phone/','/%status/','/%priority/',
'/%dept/','/%assigned_staff/','/%createdate/','/%duedate/','/%closedate/','/%url/');
$replace = array($this->getId(),
$this->getExtId(),
$this->getEmail(),
$this->getName(),
$this->getSubject(),
$this->getHelpTopic(),
$this->getPhoneNumber(),
$this->getStatus(),
$this->getPriority(),
($dept?$dept->getName():''),
($staff?$staff->getName():''),
Format::db_daydatetime($this->getCreateDate()),
Format::db_daydatetime($this->getDueDate()),
Format::db_daydatetime($this->getCloseDate()),
$cfg->getBaseUrl());
return preg_replace($search,$replace,$text);
}
【讨论】:
我确实找到了 class.msgtpl.php (\include\class.msgtpl.php) 的第 32 行,说明了这一点:
$sql='SELECT * FROM '.EMAIL_TEMPLATE_TABLE.' WHERE tpl_id='.db_input($id);
模板中是否有任何内容允许您使用自定义变量?如果没有,您可以自己编写,因为它可能只是一个简单的 preg_replace。
【讨论】: