Fixed some email issues

remotes/upstream/api-rewrite
Mike Koch 7 years ago
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);
$addressees = new Addressees();
$addressees->to = array($ownerEmail);
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::TICKET_ASSIGNED_TO_YOU, $ticketRequest->language, $addressees, $ticket, $heskSettings, $modsForHeskSettings);
if ($owner->notificationSettings->newAssignedToMe) {
$addressees = new Addressees();
$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);
}
}

@ -32,46 +32,27 @@ class UserGateway extends CommonDao {
return $row;
}
// TODO Replace this with a basic User retrieval
function getNameForId($id, $heskSettings) {
$this->init();
$rs = hesk_dbQuery("SELECT `name` 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) {
function getUserById($id, $heskSettings) {
$this->init();
$rs = hesk_dbQuery("SELECT `email` 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['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…
Cancel
Save