Fixed some email issues
This commit is contained in:
parent
ccbe2cd580
commit
25929d82f4
@ -51,6 +51,8 @@ class EmailTemplateParser {
|
||||
* @throws InvalidEmailTemplateException
|
||||
*/
|
||||
function getFormattedEmailForLanguage($templateId, $languageCode, $ticket, $heskSettings, $modsForHeskSettings) {
|
||||
global $hesklang;
|
||||
|
||||
$emailTemplate = $this->emailTemplateRetriever->getTemplate($templateId);
|
||||
|
||||
if ($emailTemplate === null) {
|
||||
@ -59,7 +61,7 @@ class EmailTemplateParser {
|
||||
|
||||
$template = self::getFromFileSystem($emailTemplate->fileName, $languageCode, false);
|
||||
$htmlTemplate = self::getFromFileSystem($emailTemplate->fileName, $languageCode, true);
|
||||
$subject = $emailTemplate->languageKey;
|
||||
$subject = $hesklang[$emailTemplate->languageKey];
|
||||
|
||||
$subject = $this->parseSubject($subject, $ticket, $languageCode, $heskSettings);
|
||||
$message = $this->parseMessage($template, $ticket, $languageCode, $emailTemplate->forStaff, $heskSettings, $modsForHeskSettings, false);
|
||||
@ -175,7 +177,7 @@ class EmailTemplateParser {
|
||||
$defaultStatus = $this->statusGateway->getStatusForDefaultAction(DefaultStatusForAction::NEW_TICKET, $heskSettings);
|
||||
$statusName = hesk_msgToPlain($defaultStatus->localizedNames[$language]->text);
|
||||
$category = hesk_msgToPlain($this->categoryGateway->getAllCategories($heskSettings)[$ticket->categoryId]->name);
|
||||
$owner = hesk_msgToPlain($this->userGateway->getNameForId($ticket->ownerId, $heskSettings));
|
||||
$owner = hesk_msgToPlain($this->userGateway->getUserById($ticket->ownerId, $heskSettings)->name);
|
||||
|
||||
switch ($ticket->priorityId) {
|
||||
case Priority::CRITICAL:
|
||||
|
@ -29,7 +29,7 @@ class Autoassigner {
|
||||
return null;
|
||||
}
|
||||
|
||||
$potentialUsers = $this->userGateway->getUsersByNumberOfOpenTickets($heskSettings);
|
||||
$potentialUsers = $this->userGateway->getUsersByNumberOfOpenTicketsForAutoassign($heskSettings);
|
||||
|
||||
foreach ($potentialUsers as $potentialUser) {
|
||||
if ($potentialUser->admin ||
|
||||
|
@ -149,13 +149,22 @@ class TicketCreator {
|
||||
}
|
||||
|
||||
if ($ticket->ownerId !== null) {
|
||||
$ownerEmail = $this->userGateway->getEmailForId($ticket->ownerId, $heskSettings);
|
||||
$owner = $this->userGateway->getUserById($ticket->ownerId, $heskSettings);
|
||||
|
||||
if ($owner->notificationSettings->newAssignedToMe) {
|
||||
$addressees = new Addressees();
|
||||
$addressees->to = array($ownerEmail);
|
||||
$addressees->to = array($owner->email);
|
||||
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::TICKET_ASSIGNED_TO_YOU, $ticketRequest->language, $addressees, $ticket, $heskSettings, $modsForHeskSettings);
|
||||
}
|
||||
} else {
|
||||
// TODO email all users who should be notified
|
||||
// TODO Test
|
||||
$usersToBeNotified = $this->userGateway->getUsersForNewTicketNotification($heskSettings);
|
||||
|
||||
foreach ($usersToBeNotified as $user) {
|
||||
if ($user->admin || in_array($ticket->categoryId, $user->categories)) {
|
||||
$this->sendEmailToStaff($user, $ticket, $heskSettings, $modsForHeskSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $ticket;
|
||||
@ -170,4 +179,15 @@ class TicketCreator {
|
||||
|
||||
return explode(',', $emails);
|
||||
}
|
||||
|
||||
private function sendEmailToStaff($user, $ticket, $heskSettings, $modsForHeskSettings) {
|
||||
$addressees = new Addressees();
|
||||
$addressees->to = array($user->email);
|
||||
$language = $user->language !== null && trim($user->language) !== ''
|
||||
? $user->language
|
||||
: $heskSettings['language'];
|
||||
|
||||
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::NEW_TICKET_STAFF, $language,
|
||||
$addressees, $ticket, $heskSettings, $modsForHeskSettings);
|
||||
}
|
||||
}
|
@ -33,45 +33,26 @@ class UserGateway extends CommonDao {
|
||||
return $row;
|
||||
}
|
||||
|
||||
// TODO Replace this with a basic User retrieval
|
||||
function getNameForId($id, $heskSettings) {
|
||||
function getUserById($id, $heskSettings) {
|
||||
$this->init();
|
||||
|
||||
$rs = hesk_dbQuery("SELECT `name` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "users` WHERE `id` = " . intval($id));
|
||||
$rs = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "users` WHERE `id` = " . intval($id));
|
||||
|
||||
if (hesk_dbNumRows($rs) === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$row = hesk_dbFetchAssoc($rs);
|
||||
|
||||
return $row['name'];
|
||||
}
|
||||
|
||||
// TODO Replace this with a basic User retriever
|
||||
function getEmailForId($id, $heskSettings) {
|
||||
$this->init();
|
||||
|
||||
$rs = hesk_dbQuery("SELECT `email` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "users` WHERE `id` = " . intval($id));
|
||||
|
||||
if (hesk_dbNumRows($rs) === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$row = hesk_dbFetchAssoc($rs);
|
||||
|
||||
return $row['email'];
|
||||
return UserContext::fromDataRow(hesk_dbFetchAssoc($rs));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $heskSettings array
|
||||
* @return UserContext[]
|
||||
*/
|
||||
function getUsersByNumberOfOpenTickets($heskSettings) {
|
||||
function getUsersByNumberOfOpenTicketsForAutoassign($heskSettings) {
|
||||
$this->init();
|
||||
|
||||
$rs = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`user`,`t1`.`name`, `t1`.`email`, `t1`.`language`, `t1`.`isadmin`,
|
||||
`t1`.`categories`, `t1`.`notify_assigned`, `t1`.`heskprivileges`,
|
||||
$rs = hesk_dbQuery("SELECT `t1`.*,
|
||||
(SELECT COUNT(*) FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "tickets`
|
||||
WHERE `owner`=`t1`.`id`
|
||||
AND `status` IN (
|
||||
@ -93,4 +74,21 @@ class UserGateway extends CommonDao {
|
||||
|
||||
return $users;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $heskSettings array
|
||||
* @return UserContext[]
|
||||
*/
|
||||
function getUsersForNewTicketNotification($heskSettings) {
|
||||
$this->init();
|
||||
|
||||
$rs = hesk_dbQuery("SELECT * FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "users` WHERE `notify_new_unassigned` = '1' AND `active` = '1'");
|
||||
|
||||
$users = array();
|
||||
while ($row = hesk_dbFetchAssoc($rs)) {
|
||||
$users[] = UserContext::fromDataRow($row);
|
||||
}
|
||||
|
||||
return $users;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user