[Intégré 3.1.42] tracer tous les envois de mails

Décrivez les améliorations que vous souhaiteriez pour les prochaines versions.
Répondre
JoshuaSign_
Gsup LEVEL 1
Messages : 19
Enregistré le : lun. 6 mai 2019 16:17

Bonjour,

J'ai constaté que tous les envois de mails envoyés par GestSup ne sont pas systématiquement indiqués dans les threads d'un ticket sous la forme d'un "petit drapeau".
Je pense particuliairement à ceux qui sont automatiquement envoyés (lorsque les paramètres 'Envoi de mail automatique' sont cochés) : à la création, la cloture ou apres l'ajouts d'une descriptions, ...

Je souhaitais être sur de garder une trace qu'un mail a été envoyé au client, que ce soit automatiquement ou volontairement par le biais du bouton 'Envoyer un mail' du ticket.
J'ai vu une demande sur ce sujet il me semble, mais je ne la retrouve plus.

Pour faire cela je propose de déplacer les lignes 25 à 36 du fichier preview_mail.php :

Code : Tout sélectionner

	if($mail_send_error==false)
        {
                //trace mail in thread
                $qry=$db->prepare("INSERT INTO `tthreads` (`ticket`,`date`,`author`,`text`,`type`) VALUES (:ticket,:date,:author,:text,:type)");
                $qry->execute(array(
                        'ticket' => $_GET['id'],
                        'date' => $datetime,
                        'author' => $_SESSION['user_id'],
                        'text' => '',
                        'type' => 3
                        ));
        }
dans le fichier core/mail.php apres l'instruction '$mail->SmtpClose();' qui doit se trouver pres de la ligne 580.

Ainsi on est sur d'avoir la trace de tout ce qui 'sort' de GestSup.

EDIT:
J'ai oublié de préciser qu'il faut idéalement changer la ligne 'author' comme ceci :

Code : Tout sélectionner

'author' => isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0,
Lorsque le mail de notification d'ouverture est envoyé, user_id vaut 0.
D'autre part, dans le ticket il sera affiché en tant que 'Aucun', on peut paufiner en modifiant le fichier thread.php pour indiquer quelques chose de plus parlant comme 'système'.
Pour cela il suffit d'ajouter un test à la ligne 246 :

Code : Tout sélectionner

//compress text for mobile display
if($mobile==1){echo '<i class="icon-envelope"></i> '.$date_thread.': <b>'.T_('Envoi de mail').'</b>';}
else {
	if($row['author']>0){
		echo '<i class="icon-envelope"></i> '.$date_thread.': <b>'.T_('Envoi de mail').'</b> <span style="font-size: x-small;">('.T_('Effectué par').'  '.$author['firstname'].' '.$author['lastname'].')</span>';
	} else {
		echo '<i class="icon-envelope"></i> '.$date_thread.': <b>'.T_('Envoi de mail').'</b> <span style="font-size: x-small;">('.T_('Effectué par').'  '.T_('le système').')</span>';
	}
}


Cdlt.
Josh_
GestSup 3.1.38 - Debian 8.11 - Apache/2.4.10 - Php 5.6.40-0+deb8u2 - MySQL 5.5.62-0+deb8u1
Avatar du membre
Flox
Administrateur du site
Messages : 9030
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

merci pour votre partage, la modification sera disponible dans la version 3.1.42.

Bonne journée.
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.6 | https://doc.gestsup.fr/
Répondre