67 if (empty($conf->ticket) || !isModEnabled(
'ticket')) {
72 case 'TICKET_ASSIGNED':
73 dol_syslog(
"Trigger '".$this->
name.
"' for action '$action' launched by ".__FILE__.
". id=".$object->id);
75 if ($object->fk_user_assign > 0) {
76 if ($object->fk_user_assign != $user->id) {
77 $userstat =
new User($this->db);
78 $res = $userstat->fetch($object->fk_user_assign);
87 $appli = $mysoc->name;
90 $sendto = $userstat->email;
91 $subject_assignee =
'TicketAssignedToYou';
92 $body_assignee =
'TicketAssignedEmailBody';
93 $see_ticket_assignee =
'SeeThisTicketIntomanagementInterface';
96 $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
97 $conf->global->MAIN_MAIL_AUTOCOPY_TO =
'';
99 if (!empty($sendto)) {
103 $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
107 $this->error = $userstat->error;
108 $this->errors = $userstat->errors;
113 if (
getDolGlobalString(
'TICKET_NOTIFY_CUSTOMER_TICKET_ASSIGNED') && empty($object->oldcopy->fk_user_assign)) {
114 $langs->load(
'ticket');
116 $subject_customer =
'TicketAssignedCustomerEmail';
117 $body_customer =
'TicketAssignedCustomerBody';
118 $see_ticket_customer =
'TicketNewEmailBodyInfosTrackUrlCustomer';
121 $linked_contacts = $object->listeContact(-1,
'thirdparty');
126 if ($object->origin_email) {
127 $temp_emails[] = $object->origin_email;
130 if (!empty($linked_contacts)) {
131 foreach ($linked_contacts as $contact) {
133 if (!in_array($contact[
'email'], $temp_emails)) {
134 $temp_emails[] = $contact[
'email'];
139 $sendto = implode(
", ", $temp_emails);
141 unset($linked_contacts);
152 case 'TICKET_CREATE':
153 dol_syslog(
"Trigger '".$this->
name.
"' for action '$action' launched by ".__FILE__.
". id=".$object->id);
155 $langs->load(
'ticket');
157 $subject_admin =
'TicketNewEmailSubjectAdmin';
158 $body_admin =
'TicketNewEmailBodyAdmin';
160 $subject_customer =
'TicketNewEmailSubjectCustomer';
161 $body_customer =
'TicketNewEmailBodyCustomer';
162 $see_ticket_customer =
'TicketNewEmailBodyInfosTrackUrlCustomer';
164 $subject_assignee =
'TicketAssignedToYou';
165 $body_assignee =
'TicketAssignedEmailBody';
166 $see_ticket_assignee =
'SeeThisTicketIntomanagementInterface';
169 if (
getDolGlobalString(
'TICKET_NOTIFICATION_EMAIL_TO') && empty($object->context[
'disableticketemail'])) {
170 $sendto = !
getDolGlobalString(
'TICKET_NOTIFICATION_EMAIL_TO') ?
'' : $conf->global->TICKET_NOTIFICATION_EMAIL_TO;
177 if ($object->fk_user_assign > 0 && $object->fk_user_assign != $user->id && empty($object->context[
'disableticketemail'])) {
178 $userstat =
new User($this->db);
179 $res = $userstat->fetch($object->fk_user_assign);
184 $sendto = $userstat->email;
186 $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
187 $conf->global->MAIN_MAIL_AUTOCOPY_TO =
'';
190 if (!empty($sendto)) {
195 $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
199 $this->error = $userstat->error;
200 $this->errors = $userstat->errors;
205 if (!
getDolGlobalString(
'TICKET_DISABLE_CUSTOMER_MAILS') && empty($object->context[
'disableticketemail']) && $object->notify_tiers_at_create) {
210 $contactid =
GETPOST(
'contactid',
'alpha');
213 if (!empty($contactid)) {
214 $contact =
new Contact($this->db);
215 $res = $contact->fetch($contactid);
218 if ($res > 0 && !empty($contact->email) && !empty($contact->statut)) {
219 $sendto = $contact->email;
220 } elseif (!empty($object->fk_soc)) {
221 $object->fetch_thirdparty();
222 $sendto = $object->thirdparty->email;
233 case 'TICKET_DELETE':
234 dol_syslog(
"Trigger '".$this->
name.
"' for action '$action' launched by ".__FILE__.
". id=".$object->id);
237 case 'TICKET_MODIFY':
238 dol_syslog(
"Trigger '".$this->
name.
"' for action '$action' launched by ".__FILE__.
". id=".$object->id);
242 dol_syslog(
"Trigger '".$this->
name.
"' for action '$action' launched by ".__FILE__.
". id=".$object->id);
243 $langs->load(
'ticket');
245 $subject_admin =
'TicketCloseEmailSubjectAdmin';
246 $body_admin =
'TicketCloseEmailBodyAdmin';
247 $subject_customer =
'TicketCloseEmailSubjectCustomer';
248 $body_customer =
'TicketCloseEmailBodyCustomer';
249 $see_ticket_customer =
'TicketCloseEmailBodyInfosTrackUrlCustomer';
252 if (
getDolGlobalString(
'TICKET_NOTIFICATION_EMAIL_TO') && empty($object->context[
'disableticketemail'])) {
253 $sendto = !
getDolGlobalString(
'TICKET_NOTIFICATION_EMAIL_TO') ?
'' : $conf->global->TICKET_NOTIFICATION_EMAIL_TO;
260 if (!
getDolGlobalString(
'TICKET_DISABLE_CUSTOMER_MAILS') && empty($object->context[
'disableticketemail'])) {
261 $linked_contacts = $object->listeContact(-1,
'thirdparty');
262 $linked_contacts = array_merge($linked_contacts, $object->listeContact(-1,
'internal'));
263 if (empty($linked_contacts) &&
getDolGlobalString(
'TICKET_NOTIFY_AT_CLOSING') && !empty($object->fk_soc)) {
264 $object->fetch_thirdparty();
265 $linked_contacts[][
'email'] = $object->thirdparty->email;
268 $contactid =
GETPOST(
'contactid',
'int');
271 if ($contactid > 0) {
274 $contact =
new Contact($this->db);
275 $res = $contact->fetch($contactid);
276 if (! in_array($contact, $linked_contacts)) {
277 $error_msg = $langs->trans(
'Error').
': ';
278 $error_msg .= $langs->transnoentities(
'TicketWrongContact');
286 if ($res > 0 && !empty($contact->email) && !empty($contact->statut)) {
287 $sendto = $contact->email;
288 } elseif (!empty($linked_contacts) && ($contactid == -2 || (
GETPOST(
'massaction',
'alpha') ==
'close' &&
GETPOST(
'confirm',
'alpha') ==
'yes'))) {
291 foreach ($linked_contacts as $contact) {
292 $temp_emails[] = $contact[
'email'];
294 $sendto = implode(
", ", $temp_emails);
296 unset($linked_contacts);
321 global $conf, $mysoc;
328 $appli = $mysoc->name;
331 $subject =
'['.$appli.
'] '.$langs->transnoentities($base_subject, $object->ref, $object->track_id);
332 $message_admin = $langs->transnoentities($body, $object->track_id).
'<br>';
333 $message_admin .=
'<ul><li>'.$langs->trans(
'Title').
' : '.$object->subject.
'</li>';
334 $message_admin .=
'<li>'.$langs->trans(
'Type').
' : '.$langs->getLabelFromKey($this->db,
'TicketTypeShort'.$object->type_code,
'c_ticket_type',
'code',
'label', $object->type_code).
'</li>';
335 $message_admin .=
'<li>'.$langs->trans(
'TicketCategory').
' : '.$langs->getLabelFromKey($this->db,
'TicketCategoryShort'.$object->category_code,
'c_ticket_category',
'code',
'label', $object->category_code).
'</li>';
336 $message_admin .=
'<li>'.$langs->trans(
'Severity').
' : '.$langs->getLabelFromKey($this->db,
'TicketSeverityShort'.$object->severity_code,
'c_ticket_severity',
'code',
'label', $object->severity_code).
'</li>';
337 $message_admin .=
'<li>'.$langs->trans(
'From').
' : '.($object->email_from ? $object->email_from : ($object->fk_user_create > 0 ? $langs->trans(
'Internal') :
'')).
'</li>';
340 $extraFields->fetch_name_optionals_label($object->table_element);
341 if (is_array($object->array_options) && count($object->array_options) > 0) {
342 foreach ($object->array_options as $key => $value) {
343 $key = substr($key, 8);
344 $message_admin .=
'<li>'.$langs->trans($extraFields->attributes[$object->element][
'label'][$key]).
' : '.$extraFields->showOutputField($key, $value,
'', $object->table_element).
'</li>';
347 if ($object->fk_soc > 0) {
348 $object->fetch_thirdparty();
349 $message_admin .=
'<li>'.$langs->trans(
'Company').
' : '.$object->thirdparty->name.
'</li>';
351 $message_admin .=
'</ul>';
353 $message = $object->message;
357 $message_admin .=
'<p>'.$langs->trans(
'Message').
' : <br><br>'.$message.
'</p><br>';
358 $message_admin .=
'<p><a href="'.dol_buildpath(
'/ticket/card.php', 2).
'?track_id='.$object->track_id.
'">'.$langs->trans(
'SeeThisTicketIntomanagementInterface').
'</a></p>';
362 $trackid =
'tic'.$object->id;
365 $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
366 $conf->global->MAIN_MAIL_AUTOCOPY_TO =
'';
368 include_once DOL_DOCUMENT_ROOT.
'/core/class/CMailFile.class.php';
369 $mailfile =
new CMailFile($subject, $sendto, $from, $message_admin, $filepath, $mimetype, $filename,
'',
'', 0, -1,
'',
'', $trackid,
'',
'ticket');
370 if ($mailfile->error) {
373 $result = $mailfile->sendfile();
376 $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
393 global $conf, $extrafields, $mysoc, $user;
400 $appli = $mysoc->name;
402 $subject =
'['.$appli.
'] '.$langs->transnoentities($base_subject);
403 $message_customer = $langs->transnoentities($body, $object->track_id).
'<br>';
404 $message_customer .=
'<ul><li>'.$langs->trans(
'Title').
' : '.$object->subject.
'</li>';
405 $message_customer .=
'<li>'.$langs->trans(
'Type').
' : '.$langs->getLabelFromKey($this->db,
'TicketTypeShort'.$object->type_code,
'c_ticket_type',
'code',
'label', $object->type_code).
'</li>';
406 $message_customer .=
'<li>'.$langs->trans(
'TicketCategory').
' : '.$langs->getLabelFromKey($this->db,
'TicketCategoryShort'.$object->category_code,
'c_ticket_category',
'code',
'label', $object->category_code).
'</li>';
407 $message_customer .=
'<li>'.$langs->trans(
'Severity').
' : '.$langs->getLabelFromKey($this->db,
'TicketSeverityShort'.$object->severity_code,
'c_ticket_severity',
'code',
'label', $object->severity_code).
'</li>';
410 if (is_array($extrafields->attributes[$object->table_element][
'label'])) {
411 foreach ($extrafields->attributes[$object->table_element][
'label'] as $key => $value) {
413 if ($enabled && isset($extrafields->attributes[$object->table_element][
'list'][$key])) {
414 $enabled =
dol_eval($extrafields->attributes[$object->table_element][
'list'][$key], 1);
417 if ($perms && isset($extrafields->attributes[$object->table_element][
'perms'][$key])) {
418 $perms =
dol_eval($extrafields->attributes[$object->table_element][
'perms'][$key], 1);
422 if (empty($enabled)) {
430 $message_customer .=
'<li>' . $langs->trans($key) .
' : ' . $value .
'</li>';
435 $message_customer .=
'</ul>';
437 $message = $object->message;
441 $message_customer .=
'<p>'.$langs->trans(
'Message').
' : <br><br>'.$message.
'</p><br>';
445 $message_customer .=
'<p>'.$langs->trans($see_ticket).
' : <a href="'.$url_public_ticket.
'">'.$url_public_ticket.
'</a></p>';
446 $message_customer .=
'<p>'.$langs->trans(
'TicketEmailPleaseDoNotReplyToThisEmail').
'</p>';
450 $trackid =
'tic'.$object->id;
455 $conf->global->MAIN_MAIL_AUTOCOPY_TO =
'';
458 include_once DOL_DOCUMENT_ROOT.
'/core/class/CMailFile.class.php';
459 $mailfile =
new CMailFile($subject, $sendto, $from, $message_customer, $filepath, $mimetype, $filename,
'',
'', 0, -1,
'',
'', $trackid,
'',
'ticket');
460 if ($mailfile->error) {
463 $result = $mailfile->sendfile();
466 $object->fetch($object->id);
467 $object->date_last_msg_sent =
dol_now();
468 $object->update($user);
472 $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
489 global $conf, $user, $mysoc;
497 $appli = $mysoc->name;
499 $subject =
'['.$appli.
'] '.$langs->transnoentities($base_subject);
500 $message =
'<p>'.$langs->transnoentities($body, $object->track_id,
dolGetFirstLastname($user->firstname, $user->lastname)).
"</p>";
501 $message .=
'<ul><li>'.$langs->trans(
'Title').
' : '.$object->subject.
'</li>';
502 $message .=
'<li>'.$langs->trans(
'Type').
' : '.$object->type_label.
'</li>';
503 $message .=
'<li>'.$langs->trans(
'Category').
' : '.$object->category_label.
'</li>';
504 $message .=
'<li>'.$langs->trans(
'Severity').
' : '.$object->severity_label.
'</li>';
506 if (is_array($object->array_options) && count($object->array_options) > 0) {
507 foreach ($object->array_options as $key => $value) {
508 $message .=
'<li>'.$langs->trans($key).
' : '.$value.
'</li>';
513 $message .=
'<p>'.$langs->trans(
'Message').
' : <br>'.$object->message.
'</p>';
514 $message .=
'<p><a href="'.dol_buildpath(
'/ticket/card.php', 2).
'?track_id='.$object->track_id.
'">'.$langs->trans($see_ticket).
'</a></p>';
520 $old_MAIN_MAIL_AUTOCOPY_TO =
null;
523 $conf->global->MAIN_MAIL_AUTOCOPY_TO =
'';
526 include_once DOL_DOCUMENT_ROOT.
'/core/class/CMailFile.class.php';
527 $mailfile =
new CMailFile($subject, $sendto, $from, $message, $filepath, $mimetype, $filename,
'',
'', 0, -1);
528 if ($mailfile->error) {
531 $result = $mailfile->sendfile();
534 $object->fetch($object->id);
535 $object->date_last_msg_sent =
dol_now();
536 $object->update($user);
540 $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;