diff --git a/htdocs/core/triggers/interface_50_modTicketsup_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicketsup_TicketEmail.class.php index 16b317cc108..4a7ec9df711 100644 --- a/htdocs/core/triggers/interface_50_modTicketsup_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicketsup_TicketEmail.class.php @@ -20,16 +20,11 @@ /** * \file htdocs/core/triggers/interface_50_modTicketsup_TicketEmail.class.php * \ingroup core - * \brief Fichier - * \remarks Son propre fichier d'actions peut etre cree par recopie de celui-ci: - * - Le nom du fichier doit etre: interface_99_modMymodule_Mytrigger.class.php - * ou: interface_99_all_Mytrigger.class.php - * - Le fichier doit rester stocke dans core/triggers - * - Le nom de la classe doit etre InterfaceMytrigger - * - Le nom de la propriete name doit etre Mytrigger + * \brief File of trigger for ticket module */ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php'; + /** * Class of triggers for ticketsup module */ @@ -110,12 +105,12 @@ class InterfaceTicketEmail extends DolibarrTriggers public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) { $ok = 0; - + switch ($action) { case 'TICKET_ASSIGNED': dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); - - if ($object->fk_user_assign != $user->id) { + + if ($object->fk_user_assign > 0 && $object->fk_user_assign != $user->id) { $userstat = new User($this->db); $res = $userstat->fetch($object->fk_user_assign); if ($res) { @@ -132,11 +127,11 @@ class InterfaceTicketEmail extends DolibarrTriggers $message .= '
' . $langs->trans('Message') . ' :
' . $object->message . '
' . $langs->trans('SeeThisTicketIntomanagementInterface') . '
'; - + $sendto = $userstat->email; $from = dolGetFirstLastname($user->firstname, $user->lastname) . '<' . $user->email . '>'; @@ -166,20 +161,20 @@ class InterfaceTicketEmail extends DolibarrTriggers } } break; - - + + case 'TICKET_CREATE': dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); - + // Init to avoid errors $filepath = array(); $filename = array(); $mimetype = array(); - + $langs->load('ticketsup'); - + $object->fetch('', $object->track_id); - + /* Send email to admin */ $sendto = $conf->global->TICKETS_NOTIFICATION_EMAIL_TO; $subject = '['.$conf->global->MAIN_INFO_SOCIETE_NOM.'] '.$langs->transnoentities('TicketNewEmailSubjectAdmin'); @@ -196,15 +191,15 @@ class InterfaceTicketEmail extends DolibarrTriggers } } $message_admin.=''; - + if ($object->fk_soc > 0) { $object->fetch_thirdparty(); $message_admin.=''.$langs->trans('Company'). ' : '.$object->thirdparty->name.'
'; } - + $message_admin.=''.$langs->trans('Message').' :
'.$object->message.'
'.$langs->trans('SeeThisTicketIntomanagementInterface').'
'; - + $from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKETS_NOTIFICATION_EMAIL_FROM.'>'; $replyto = $from; @@ -233,7 +228,7 @@ class InterfaceTicketEmail extends DolibarrTriggers } else { $sendto = $user->email; } - + if ($sendto && $object->notify_tiers_at_create) { $subject = '['.$conf->global->MAIN_INFO_SOCIETE_NOM.'] '.$langs->transnoentities('TicketNewEmailSubjectCustomer'); $message_customer= $langs->transnoentities('TicketNewEmailBodyCustomer', $object->track_id)."\n\n"; @@ -254,11 +249,11 @@ class InterfaceTicketEmail extends DolibarrTriggers $url_public_ticket = ($conf->global->TICKETS_URL_PUBLIC_INTERFACE?$conf->global->TICKETS_URL_PUBLIC_INTERFACE.'/':dol_buildpath('/ticketsup/public/view.php', 2)).'?track_id='.$object->track_id; $message_customer.='' . $langs->trans('TicketNewEmailBodyInfosTrackUrlCustomer') . ' : '.$url_public_ticket.'
'; $message_customer.=''.$langs->trans('TicketEmailPleaseDoNotReplyToThisEmail').'
'; - - + + $from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKETS_NOTIFICATION_EMAIL_FROM.'>'; $replyto = $from; - + // Init to avoid errors $filepath = array(); $filename = array(); @@ -282,26 +277,26 @@ class InterfaceTicketEmail extends DolibarrTriggers } } $ok = 1; - + break; - + case 'TICKET_DELETE': dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); break; - + case 'TICKET_MODIFY': dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); break; - + case 'TICKET_MARK_READ': dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); break; - - case 'TICKET_CLOSED': + + case 'TICKET_CLOSE': dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); break; } - + return $ok; } diff --git a/htdocs/ticketsup/class/ticketsup.class.php b/htdocs/ticketsup/class/ticketsup.class.php index 58a05d37e54..9f0caead45a 100644 --- a/htdocs/ticketsup/class/ticketsup.class.php +++ b/htdocs/ticketsup/class/ticketsup.class.php @@ -892,6 +892,26 @@ class Ticketsup extends CommonObject if ($res < 0) $error++; } + if (!$error) { + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticketsup_logs"; + $sql .= " WHERE rowid=" . $this->id; + $resql = $this->db->query($sql); + } + if (!$error) { + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticketsup_mesgs"; + $sql .= " WHERE rowid=" . $this->id; + $resql = $this->db->query($sql); + } + + // Removed extrafields + if (!$error) { + $result = $this->deleteExtraFields(); + if ($result < 0) { + $error++; + dol_syslog(get_class($this) . "::delete error -3 " . $this->error, LOG_ERR); + } + } + if (!$error) { $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticketsup"; $sql .= " WHERE rowid=" . $this->id; @@ -904,15 +924,6 @@ class Ticketsup extends CommonObject } } - // Removed extrafields - if (!$error) { - $result = $this->deleteExtraFields(); - if ($result < 0) { - $error++; - dol_syslog(get_class($this) . "::delete error -3 " . $this->error, LOG_ERR); - } - } - // Commit or rollback if ($error) { foreach ($this->errors as $errmsg) { @@ -1385,13 +1396,13 @@ class Ticketsup extends CommonObject * @param User $user Object user * @param int $id_assign_user ID of user assigned * @param int $notrigger Disable trigger - * @return int <0 if KO, >0 if OK + * @return int <0 if KO, 0=Nothing done, >0 if OK */ public function assignUser($user, $id_assign_user, $notrigger = 0) { global $conf, $langs; - if ($id_assign_user > 0) { // no closed + if ($id_assign_user > 0) { $this->db->begin(); $sql = "UPDATE " . MAIN_DB_PREFIX . "ticketsup"; @@ -1401,7 +1412,10 @@ class Ticketsup extends CommonObject dol_syslog(get_class($this) . "::assignUser sql=" . $sql); $resql = $this->db->query($sql); - if ($resql) { + if ($resql) + { + $this->fk_user_assign = $id_assign_user; // May be used by trigger + if (!$notrigger) { // Call trigger $result=$this->call_trigger('TICKET_ASSIGNED', $user); @@ -1427,6 +1441,8 @@ class Ticketsup extends CommonObject return -1; } } + + return 0; } /** @@ -1756,27 +1772,30 @@ class Ticketsup extends CommonObject // Valid and close fichinter linked $this->fetchObjectLinked($this->id, $this->element, null, 'fichinter'); - foreach ($this->linkedObjectsIds['fichinter'] as $fichinter_id) { - $fichinter = new Fichinter($this->db); - $fichinter->fetch($fichinter_id); - if($fichinter->statut == 0) { - $result = $fichinter->setValid($user); - if (!$result) { - $this->errors[] = $fichinter->error; - $error++; - } - } - if ($fichinter->statut < 3) { - $result = $fichinter->setStatut(3); - if (!$result) { - $this->errors[] = $fichinter->error; - $error++; - } - } + if ($this->linkedObjectsIds) + { + foreach ($this->linkedObjectsIds['fichinter'] as $fichinter_id) { + $fichinter = new Fichinter($this->db); + $fichinter->fetch($fichinter_id); + if($fichinter->statut == 0) { + $result = $fichinter->setValid($user); + if (!$result) { + $this->errors[] = $fichinter->error; + $error++; + } + } + if ($fichinter->statut < 3) { + $result = $fichinter->setStatut(3); + if (!$result) { + $this->errors[] = $fichinter->error; + $error++; + } + } + } } // Call trigger - $result=$this->call_trigger('TICKET_CLOSED', $user); + $result=$this->call_trigger('TICKET_CLOSE', $user); if ($result < 0) { $error++; }