Clean code of module ticket

This commit is contained in:
Laurent Destailleur 2022-10-24 20:28:36 +02:00
parent 2e1e6120ce
commit 5a9901e484
4 changed files with 7 additions and 172 deletions

View File

@ -670,7 +670,7 @@ class FormTicket
/**
* Return html list of tickets type
*
* @param string|array $selected Id du type pre-selectionne
* @param string|array $selected Id of preselected field or array of Ids
* @param string $htmlname Nom de la zone select
* @param string $filtertype To filter on field type in llx_c_ticket_type (array('code'=>xx,'label'=>zz))
* @param int $format 0=id+libelle, 1=code+code, 2=code+libelle, 3=id+code
@ -685,7 +685,7 @@ class FormTicket
{
global $langs, $user;
$selected = is_array($selected) ? $selected : (!empty($selected) ? implode(',', $selected) : array());
$selected = is_array($selected) ? $selected : (!empty($selected) ? array($selected) : array());
$ticketstat = new Ticket($this->db);
dol_syslog(get_class($this) . "::select_types_tickets " . implode(';', $selected) . ", " . $htmlname . ", " . $filtertype . ", " . $format . ", " . $multiselect, LOG_DEBUG);

View File

@ -126,6 +126,8 @@ $permissiontoadd = $user->rights->ticket->write;
$actionobject = new ActionsTicket($db);
$upload_dir = $conf->ticket->dir_output;
$now = dol_now();
@ -682,7 +684,6 @@ if (empty($reshook)) {
include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; // Must be include, not include_once
// Actions to build doc
$upload_dir = $conf->ticket->dir_output;
$permissiontoadd = $user->rights->ticket->write;
include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
//var_dump($action);exit;

View File

@ -181,36 +181,6 @@ class Tickets extends DolibarrApi
$this->ticket->messages = $messages;
}
// History
$history = array();
$this->ticket->loadCacheLogsTicket();
if (is_array($this->ticket->cache_logs_ticket) && count($this->ticket->cache_logs_ticket) > 0) {
$num = count($this->ticket->cache_logs_ticket);
$i = 0;
$user_action = new User($this->db);
while ($i < $num) {
$userstring = '';
if ($this->ticket->cache_logs_ticket[$i]['fk_user_create'] > 0) {
$user_action->fetch($this->ticket->cache_logs_ticket[$i]['fk_user_create']);
$userstring = dolGetFirstLastname($user_action->firstname, $user_action->lastname);
}
// Now define messages
$history[] = array(
'id' => $this->ticket->cache_logs_ticket[$i]['id'],
'fk_user_author' => $this->ticket->cache_msgs_ticket[$i]['fk_user_author'],
'fk_user_action' => $this->ticket->cache_logs_ticket[$i]['fk_user_create'],
'fk_user_action_string' => $userstring,
'message' => $this->ticket->cache_logs_ticket[$i]['message'],
'datec' => $this->ticket->cache_logs_ticket[$i]['datec'],
);
$i++;
}
$this->ticket->history = $history;
}
if (!DolibarrApi::_checkAccessToResource('ticket', $this->ticket->id)) {
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
}

View File

@ -1580,144 +1580,6 @@ class Ticket extends CommonObject
}
}
/**
* Send notification of changes by email
*
* @param User $user User that create
* @param string $message Log message
* @return int <0 if KO, >0 if OK (number of emails sent)
*/
private function sendLogByEmail($user, $message)
{
global $conf, $langs;
$nb_sent = 0;
$langs->load('ticket');
// Retrieve email of all contacts (internal and external)
$contacts = $this->listeContact(-1, 'internal');
$contacts = array_merge($contacts, $this->listeContact(-1, 'external'));
/* If origin_email and no socid, we add email to the list * */
if (!empty($this->origin_email) && empty($this->fk_soc)) {
$array_ext = array(array('firstname' => '', 'lastname' => '', 'email' => $this->origin_email, 'libelle' => $langs->transnoentities('TicketEmailOriginIssuer'), 'socid' => "-1"));
$contacts = array_merge($contacts, $array_ext);
}
if (!empty($this->fk_soc)) {
$this->fetch_thirdparty($this->fk_soc);
$array_company = array(array('firstname' => '', 'lastname' => $this->client->name, 'email' => $this->client->email, 'libelle' => $langs->transnoentities('Customer'), 'socid' => $this->client->id));
$contacts = array_merge($contacts, $array_company);
}
// foreach contact send email with notification message
if (count($contacts) > 0) {
foreach ($contacts as $key => $info_sendto) {
$tmpmessage = '';
$subject = '['.$conf->global->MAIN_INFO_SOCIETE_NOM.'] '.$langs->transnoentities('TicketNotificationEmailSubject', $this->track_id);
$tmpmessage .= $langs->transnoentities('TicketNotificationEmailBody', $this->track_id)."\n\n";
$tmpmessage .= $langs->transnoentities('Title').' : '.$this->subject."\n";
$recipient_name = dolGetFirstLastname($info_sendto['firstname'], $info_sendto['lastname'], '-1');
$recipient = (!empty($recipient_name) ? $recipient_name : $info_sendto['email']).' ('.strtolower($info_sendto['libelle']).')';
$tmpmessage .= $langs->transnoentities('TicketNotificationRecipient').' : '.$recipient."\n";
$tmpmessage .= "\n";
$tmpmessage .= '* '.$langs->transnoentities('TicketNotificationLogMessage').' *'."\n";
$tmpmessage .= dol_html_entity_decode($message, ENT_QUOTES | ENT_HTML5)."\n";
if ($info_sendto['source'] == 'internal') {
$url_internal_ticket = dol_buildpath('/ticket/card.php', 2).'?track_id='.$this->track_id;
$tmpmessage .= "\n".$langs->transnoentities('TicketNotificationEmailBodyInfosTrackUrlinternal').' : <a href="'.$url_internal_ticket.'">'.$this->track_id.'</a>'."\n";
} else {
$url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE.'/view.php' : dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$this->track_id;
$tmpmessage .= "\n".$langs->transnoentities('TicketNewEmailBodyInfosTrackUrlCustomer').' : <a href="'.$url_public_ticket.'">'.$this->track_id.'</a>'."\n";
}
$tmpmessage .= "\n";
$tmpmessage .= $langs->transnoentities('TicketEmailPleaseDoNotReplyToThisEmail')."\n";
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKET_NOTIFICATION_EMAIL_FROM.'>';
$replyto = $from;
// Init to avoid errors
$filepath = array();
$filename = array();
$mimetype = array();
$tmpmessage = dol_nl2br($tmpmessage);
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
}
include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
$sendtocc = '';
$deliveryreceipt = 0;
$mailfile = new CMailFile($subject, $info_sendto['email'], $from, $tmpmessage, $filepath, $mimetype, $filename, $sendtocc, '', $deliveryreceipt, 0);
if ($mailfile->error || !empty($mailfile->errors)) {
setEventMessages($mailfile->error, $mailfile->errors, 'errors');
} else {
$result = $mailfile->sendfile();
if ($result > 0) {
$nb_sent++;
}
}
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
}
}
setEventMessages($langs->trans('TicketNotificationNumberEmailSent', $nb_sent), null, 'mesgs');
}
return $nb_sent;
}
/**
* Charge la liste des actions sur le ticket
*
* @return int Number of lines loaded, 0 if already loaded, <0 if KO
*/
public function loadCacheLogsTicket()
{
global $langs;
if (is_array($this->cache_logs_ticket) && count($this->cache_logs_ticket)) {
return 0;
}
// Cache deja charge
// TODO Read the table llx_actioncomm
/*
$sql = "SELECT rowid, fk_user_create, datec, message";
$sql .= " FROM " . MAIN_DB_PREFIX . "ticket_logs";
$sql .= " WHERE fk_track_id ='" . $this->db->escape($this->track_id) . "'";
$sql .= " ORDER BY datec DESC";
$resql = $this->db->query($sql);
if ($resql) {
$num = $this->db->num_rows($resql);
$i = 0;
while ($i < $num) {
$obj = $this->db->fetch_object($resql);
$this->cache_logs_ticket[$i]['id'] = $obj->rowid;
$this->cache_logs_ticket[$i]['fk_user_create'] = $obj->fk_user_create;
$this->cache_logs_ticket[$i]['datec'] = $this->db->jdate($obj->datec);
$this->cache_logs_ticket[$i]['message'] = $obj->message;
$i++;
}
return $num;
} else {
$this->error = "Error " . $this->db->lasterror();
dol_syslog(get_class($this) . "::loadCacheLogsTicket " . $this->error, LOG_ERR);
return -1;
}*/
return 0;
}
/**
* Add message into database
*
@ -2869,9 +2731,11 @@ class Ticket extends CommonObject
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
}
$upload_dir_tmp = $conf->user->dir_output."/".$user->id;
include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
$trackid = "tic".$this->id;
$mailfile = new CMailFile($subject, $receiver, $from, $message, $filepath, $mimetype, $filename, $sendtocc, '', $deliveryreceipt, -1, '', '', $trackid, '', 'ticket');
$mailfile = new CMailFile($subject, $receiver, $from, $message, $filepath, $mimetype, $filename, $sendtocc, '', $deliveryreceipt, -1, '', '', $trackid, '', 'ticket', '', $upload_dir_tmp);
if ($mailfile->error) {
setEventMessages($mailfile->error, null, 'errors');
} else {