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 * @throws InvalidEmailTemplateException
*/ */
function getFormattedEmailForLanguage($templateId, $languageCode, $ticket, $heskSettings, $modsForHeskSettings) { function getFormattedEmailForLanguage($templateId, $languageCode, $ticket, $heskSettings, $modsForHeskSettings) {
global $hesklang;
$emailTemplate = $this->emailTemplateRetriever->getTemplate($templateId); $emailTemplate = $this->emailTemplateRetriever->getTemplate($templateId);
if ($emailTemplate === null) { if ($emailTemplate === null) {
@ -59,7 +61,7 @@ class EmailTemplateParser {
$template = self::getFromFileSystem($emailTemplate->fileName, $languageCode, false); $template = self::getFromFileSystem($emailTemplate->fileName, $languageCode, false);
$htmlTemplate = self::getFromFileSystem($emailTemplate->fileName, $languageCode, true); $htmlTemplate = self::getFromFileSystem($emailTemplate->fileName, $languageCode, true);
$subject = $emailTemplate->languageKey; $subject = $hesklang[$emailTemplate->languageKey];
$subject = $this->parseSubject($subject, $ticket, $languageCode, $heskSettings); $subject = $this->parseSubject($subject, $ticket, $languageCode, $heskSettings);
$message = $this->parseMessage($template, $ticket, $languageCode, $emailTemplate->forStaff, $heskSettings, $modsForHeskSettings, false); $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); $defaultStatus = $this->statusGateway->getStatusForDefaultAction(DefaultStatusForAction::NEW_TICKET, $heskSettings);
$statusName = hesk_msgToPlain($defaultStatus->localizedNames[$language]->text); $statusName = hesk_msgToPlain($defaultStatus->localizedNames[$language]->text);
$category = hesk_msgToPlain($this->categoryGateway->getAllCategories($heskSettings)[$ticket->categoryId]->name); $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) { switch ($ticket->priorityId) {
case Priority::CRITICAL: case Priority::CRITICAL:

@ -29,7 +29,7 @@ class Autoassigner {
return null; return null;
} }
$potentialUsers = $this->userGateway->getUsersByNumberOfOpenTickets($heskSettings); $potentialUsers = $this->userGateway->getUsersByNumberOfOpenTicketsForAutoassign($heskSettings);
foreach ($potentialUsers as $potentialUser) { foreach ($potentialUsers as $potentialUser) {
if ($potentialUser->admin || if ($potentialUser->admin ||

@ -149,13 +149,22 @@ class TicketCreator {
} }
if ($ticket->ownerId !== null) { if ($ticket->ownerId !== null) {
$ownerEmail = $this->userGateway->getEmailForId($ticket->ownerId, $heskSettings); $owner = $this->userGateway->getUserById($ticket->ownerId, $heskSettings);
$addressees = new Addressees(); if ($owner->notificationSettings->newAssignedToMe) {
$addressees->to = array($ownerEmail); $addressees = new Addressees();
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::TICKET_ASSIGNED_TO_YOU, $ticketRequest->language, $addressees, $ticket, $heskSettings, $modsForHeskSettings); $addressees->to = array($owner->email);
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::TICKET_ASSIGNED_TO_YOU, $ticketRequest->language, $addressees, $ticket, $heskSettings, $modsForHeskSettings);
}
} else { } 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; return $ticket;
@ -170,4 +179,15 @@ class TicketCreator {
return explode(',', $emails); 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; 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 getUserById($id, $heskSettings) {
function getEmailForId($id, $heskSettings) {
$this->init(); $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) { if (hesk_dbNumRows($rs) === 0) {
return null; return null;
} }
$row = hesk_dbFetchAssoc($rs); return UserContext::fromDataRow(hesk_dbFetchAssoc($rs));
return $row['email'];
} }
/** /**
* @param $heskSettings array * @param $heskSettings array
* @return UserContext[] * @return UserContext[]
*/ */
function getUsersByNumberOfOpenTickets($heskSettings) { function getUsersByNumberOfOpenTicketsForAutoassign($heskSettings) {
$this->init(); $this->init();
$rs = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`user`,`t1`.`name`, `t1`.`email`, `t1`.`language`, `t1`.`isadmin`, $rs = hesk_dbQuery("SELECT `t1`.*,
`t1`.`categories`, `t1`.`notify_assigned`, `t1`.`heskprivileges`,
(SELECT COUNT(*) FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "tickets` (SELECT COUNT(*) FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "tickets`
WHERE `owner`=`t1`.`id` WHERE `owner`=`t1`.`id`
AND `status` IN ( AND `status` IN (
@ -93,4 +74,21 @@ class UserGateway extends CommonDao {
return $users; 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