Envoi de mail automatique lors de la création de ticket via mail2ticket à l'administrateur et au technicien

Contribuer au projet de part vos connaissances: PHP, HTML, CSS, SQL, JS ....
Répondre
loiccyber
Gsup LEVEL 1
Messages : 18
Enregistré le : sam. 23 juin 2018 01:48

Envoi de mail automatique lors de la création de ticket via mail2ticket à l'administrateur et au technicien

Message par loiccyber »

Bonjour,

Suite au sujet viewtopic.php?f=3&t=4140&p=11075#p11075 et viewtopic.php?f=1&t=4117 :

L'ajout du code suivant permet de prendre en compte la prise en compte de l'option d'envoi de mail : :
- A l'administrateur lors de l'ouverture d'un ticket par un utilisateur
- Au technicien lors de la modification d'un ticket par un utilisateur
dans le cas de l'utilisation de mal2ticket.php (via le menu administration ou les tâches planifiés)

Rajouter dans le mal2ticket.php
-juste après

Code : Tout sélectionner

						//update unread state
						$qry=$db->prepare("UPDATE `tincidents` SET `techread`=:techread WHERE `id`=:id");
						$qry->execute(array(
							'techread' => 0,
							'id' => $find_ticket_number
							));
Coller le code suivant :

Code : Tout sélectionner

				 		//AJOUT LLE 06/07/18
						//send mail to technician where user add thread in ticket
						if ($rparameters['mail_auto_tech_modify'])
						{
							//debug
							if($rparameters['debug']==1) {echo "<b>AUTO MAIL DETECT:</b>  FROM user TO tech  (Reason: mail_auto_tech_modify enable and user add thread in ticket.)<br> ";}
						
							//check if current user add this thread
							//if ($globalrow['user']==$user_id)
							//{
								//find user name
								$qry = $db->prepare("SELECT * FROM tusers WHERE id=:id");
								//$qry->execute(array('id' => $uid));
								$qry->execute(array('id' => $user_id));
								$userrow=$qry->fetch();
								$qry->closeCursor();
								
								$_GET['id']=$find_ticket_number;
																								
								$qry=$db->prepare("SELECT * FROM `tincidents` WHERE id=:id");
								$qry->execute(array('id' => $_GET['id']));
								$globalrow=$qry->fetch();
								$qry->closeCursor();
								
								//get user mail
								if($rparameters['mail_from_adr']=='')
								{
									if ($userrow['mail']!='') $from=$userrow['mail']; else $from=$rparameters['mail_cc'];
								} else {
									$from=$rparameters['mail_from_adr'];
								}
								//get tech mail 
								$qry = $db->prepare("SELECT * FROM tusers WHERE id=:id");
								$qry->execute(array('id' => $globalrow['technician']));
								$techrow=$qry->fetch();
								$qry->closeCursor();
								
								$to=$techrow['mail'];
								
								//check if tech have mail
								if($to) 
								{
									$object=T_('Votre ticket').' n°'.$_GET['id'].': '.$globalrow['title'].' '.T_('a été modifié par').' '.$userrow['lastname'].' '.$userrow['firstname'];
									//remove single quote in post data
									$title = str_replace("'", "", $globalrow['title']);
									//$resolution = str_replace("'", "", $globalrow['description']);
									$message = '
									'.T_('Le ticket').' n°'.$_GET['id'].' '.T_('à été modifié par l\'utilisateur').' '.$userrow['lastname'].' '.$userrow['firstname'].'.<br />
									<br />
									<u>'.T_('Objet').':</u><br />
									'.$title.'<br />		
									<br />	
									<u>'.T_('Ajout du commentaire').':</u><br />
									'.$message.'<br />
									<br />
									'.T_('Pour plus d\'informations vous pouvez consulter le ticket sur').' <a href="'.$rparameters['server_url'].'/index.php?page=ticket&id='.$_GET['id'].'">'.$rparameters['server_url'].'/index.php?page=ticket&id='.$_GET['id'].'</a>.
									';
									$send=1;
									require('core/message.php');
								} else {if($rparameters['debug']==1) {echo "technician mail is empty or no technician associated with this ticket";}}
							//}
						}

						//FIN AJOUT LLE 06/07/18
- et juste après :

Code : Tout sélectionner

						else //html case
						{
							//remove outlook string to avoid underline application problem
							$message=str_replace("text-decoration:underline;", "", $message);
							$message=preg_replace('/(<(base)\b[^>]*>)/is', "", $message); //remove base link
							$qry=$db->prepare("UPDATE `tincidents` SET `description`=:description WHERE `id`=:id");
							$qry->execute(array(
								'description' => $message,
								'id' => $c_ticket_number
								));
							
						}
Coller le code suivant :

Code : Tout sélectionner

						//----------AJOUT LLE du 06/07/18
						//send mail to admin where user open new ticket
						if($rparameters['mail_newticket']) 
						{
							
							//find user name
							$qry = $db->prepare("SELECT * FROM tusers WHERE id=:id");
							//$qry->execute(array('id' => $uid));
							$qry->execute(array('id' => $user_id));
							$userrow=$qry->fetch();
							$qry->closeCursor();
							
							$_GET['id']=$c_ticket_number;
							
							$qry=$db->prepare("SELECT * FROM `tincidents` WHERE id=:id");
							$qry->execute(array('id' => $_GET['id']));
							$globalrow=$qry->fetch();
							$qry->closeCursor();
							
							//mail parameters
							if($rparameters['mail_from_adr']=='')
							{
								if ($userrow['mail']!='') $from=$userrow['mail']; else $from=$rparameters['mail_cc'];
							} else {
								$from=$rparameters['mail_from_adr'];
							}
							
							if($rparameters['mail_newticket_address'])
							{
								//debug
								if($rparameters['debug']==1) {echo "<b>AUTO MAIL DETECT:</b>  FROM user TO tech OR parameter_cc (Reason: mail_newticket enable and user open ticket.<br> ";}
								$to=$rparameters['mail_newticket_address'];
								//$object=T_('Un nouveau ticket à été déclaré par ').$userrow['lastname'].' '.$userrow['firstname'].': '.$_POST['title'];
								$object=T_('Un nouveau ticket à été déclaré par ').$userrow['lastname'].' '.$userrow['firstname'].': '.$globalrow['title'];
								$message = '
								'.T_('Le ticket').' n°'.$_GET['id'].' '.T_('a été déclaré par l\'utilisateur').' '.$userrow['lastname'].' '.$userrow['firstname'].'.<br />
								<br />
								<u>'.T_('Objet').':</u><br />
								'.$globalrow['title'].'<br />		
								<br />	
								<u>'.T_('Description').':</u><br />
								'.$globalrow['description'].'<br />
								<br />
								'.T_('Pour plus d\'informations vous pouvez consulter le ticket sur').' <a href="'.$rparameters['server_url'].'/index.php?page=ticket&id='.$_GET['id'].'">'.$rparameters['server_url'].'/index.php?page=ticket&id='.$_GET['id'].'</a>.
								';
								$send=1;
								require('core/message.php');
							} else {
								//debug
								if($rparameters['debug']==1) {echo "<b>AUTO MAIL DETECT:</b> FROM user TO tech OR parameter_cc (Reason: mail_newticket enable and user open ticket, message not sent no administrator mail specified<br> ";}
							}	
						}

						//------------------FIN AJOUT LLE du 06/07/18
Rajout dans ./core/message.php en début de script :

Code : Tout sélectionner

//--------------------AJOUT LLE du 06/07/18
//Modification des appels de fonction mail php pour planification tâches planifiées
if ($send==1)
{
	require_once(__DIR__.'/../components/PHPMailer/src/PHPMailer.php');
	require_once(__DIR__.'/../components/PHPMailer/src/SMTP.php');
	require_once(__DIR__.'/../components/PHPMailer/src/Exception.php');
} else {
//----------FIN AJOUT LLE du 06/07/18	
require_once("components/PHPMailer/src/PHPMailer.php");
require_once("components/PHPMailer/src/SMTP.php");
require_once("components/PHPMailer/src/Exception.php");
//----------AJOUT LLE du 06/07/18
}
//----------FIN AJOUT LLE du 06/07/18
GestSup: 3.1.33 | Windows: 7 | Apache: 2.4.33 | MariaDB: 10.3.7 | PHP: 7.2.4
Répondre