Gsup to sms et autres petites modifs.

Contribuer au projet de part vos connaissances: PHP, HTML, CSS, SQL, JS ....
Répondre
Ptitvincou
Gsup LEVEL 1
Messages : 28
Enregistré le : lun. 18 févr. 2013 18:23

Bonjour,

je vois que votre web application se développe bien !

je suis content de voir que vous prenez du temps pour intégrer nos contributions dans les releases !
bon malheureusement dans notre cas, tant de modifications personnelles qu'il faudrait que je passe pas mal de temps a ajouter mes bidouillages dans les nouvelles releases.

je sais qu'il s'agit la d'un gros travail mais peut être serait il favorable d'avoir un système de pluggin ...

Après la sélection des tickets pour modification en lot et les modifications du calendrier, je peux proposer a ceux qui le souhaite un système d'alerte par sms quand une intervention est "résolue".

il s'agit d'un systeme "payant" dans le sens ou j'utilise le systeme "mail to sms" d'OVH.

Pratiquement, quand le demandeur possède un numéro de portable (06 .. / 07 ..) et quand le statut est basculé sur "résolu", un email est envoyé a OVH qui le transforme en sms. (0.08€ / sms) .
Etant donné la fonction très spécifique et le cout induit, n'hesitez pas à me contacter si vous souhaitez le code en réponse et sur vincent point toitot at gmail point com
Avatar du membre
Flox
Administrateur du site
Messages : 8972
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

effectivement il s'agit la d'une fonctionnalité fort intéressante, est il possible de poster directement le code, afin que je crée un connecteur pour la prochaine version ?


Merci
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.4 | https://doc.gestsup.fr/
Ptitvincou
Gsup LEVEL 1
Messages : 28
Enregistré le : lun. 18 févr. 2013 18:23

ok, je vais ecrire un petit tuto, pour d'une part le code, et d'autre part le système de mail to sms et la souscription a ovh.

INintéressant ? :D
Avatar du membre
Flox
Administrateur du site
Messages : 8972
Enregistré le : jeu. 21 juin 2012 19:00

;) fautes de frappe je corrige....
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.4 | https://doc.gestsup.fr/
Ptitvincou
Gsup LEVEL 1
Messages : 28
Enregistré le : lun. 18 févr. 2013 18:23

Voici (enfin :? ) le code a ajouter dans la version 2,
Fonctionne avec email2sms, une solution ovh. google trouvera les tutos !
dans ticket.php et new_ticket.php

Code : Tout sélectionner

//#############vincent
	// Include statut changement 
	if ($_POST['state']!=$globalrow['state'] && $_POST['state']!='')
	{
		$q1= mysql_query("SELECT * FROM tstates where id = $globalrow[state]");
		$r1=mysql_fetch_array($q1); 
		$q2 = mysql_query("SELECT * FROM tstates where id = $_POST[state]");
		$r2=mysql_fetch_array($q2);
	
		

//// SMS ////
		// envoit sms si nouveau statut = résolu
		if($_POST['state'] == 3) //si nouveau statut = resolu
		{
			// on cherche les infos sur le demandeur
			$q3= mysql_query("SELECT * FROM tusers where id = $globalrow[user]");
			$r3=mysql_fetch_array($q3);
			if($r3['phone']!='') // si le demandeur dispose d'un numero de telephone
			{
				// on envoit un email a obh pour qu'il le transmette en sms
					require("components/PHPMailer_v5.1/class.phpmailer.php"); 
					$mail = new PHPMailer();
								$mail->CharSet = 'ISO-8859-1'; //UTF-8 possible if characters problems
								$mail->SetLanguage("fr", "components/PHPMailer_v5.1/language/");
								$mail->IsSMTP();                                      // set mailer to use SMTP
								
								$mail->From = "exemple@domaine.fr";
								$mail->FromName = "Gsup";
								$mail->AddAddress("email2sms@ovh.net", "SMS ovh");
								// TEST $mail->AddAddress("exemple@domaine.fr", "SMS ovh");
							    // TEST $mail->AddAddress("exemple@domaine.fr");                  // name is optional
								$mail->AddReplyTo("vincent_toitot@cafebrasilia.fr", "Gsup");

								// $mail->WordWrap = 50;                                 // set word wrap to 50 characters
								// $mail->AddAttachment("/var/tmp/file.tar.gz");         // add attachments
								// $mail->AddAttachment("/tmp/image.jpg", "new.jpg");    // optional name
								$mail->IsHTML(true);                                  // set email format to HTML

								//$mail->Subject = 'Account=sms-xxxxx;Login=xxxx; Password=xxxxx; From=Brasilia;To='.$r3['phone'];
					$mail->Subject = 'sms-xxxx-1:login:mdp:xxxxx:'.$r3['phone'].':::1';
								
								$text_resolu = ' -> résolu';
								//on compte le nombre de caractere dans le titre, le texte_resolu, pour ne pas depasser 160 avec le titre, le texte resolu et un bout de la resolution
								$nbre_caractere_title = strlen($globalrow['title']);
								$nbre_caractere_text_resolu = strlen($text_resolu);
								$caractere_restant = 160 - $nbre_caractere_title - $nbre_caractere_text_resolu - 5; //-5 pour les caractere separateurs

function Tronque_texte($texte,$max_caracteres,$option)
{
	// Test si la longueur du texte dépasse la limite
	if (strlen($texte)>$max_caracteres)
	{
	    // Séléction du maximum de caractères
	    $texte = substr($texte, 0, $max_caracteres);
	    // Récupération de la position du dernier espace (afin déviter de tronquer un mot)
	    $position_espace = strrpos($texte, " ");
	    $texte = substr($texte, 0, $position_espace);
	    // Ajout des "..."
	    $texte = $texte."...";
		if(isset($option))
		{
			$texte = $texte.' '.$option.'';
		}
	}
	return $texte;
}							
								$text_resolution = Tronque_texte($_POST['resolution'],$caractere_restant);
							//	$mail->Body    = $globalrow['title'].': '.$text_resolution.$text_resolu; //format html
							//	$mail->AltBody = $globalrow['title'].': '.$text_resolution.$text_resolu; //fotmat texte
								
								$mail->Body    = $globalrow['title'].$text_resolu; //format html
								$mail->AltBody = $globalrow['title'].$text_resolu; //fotmat texte

								if(!$mail->Send())
								{
								   echo "Message could not be sent. <p>";
								   echo "Mailer Error: " . $mail->ErrorInfo;
								   exit;
								}

								echo "<h3>SMS ENVOYE ! MERCI !</h3>";
								
							$messagesms= '+ SMS envoyé';
			}
			else
			{
				echo '<h1>Pas de téléphone</h1>';
			}
		}
			$_POST['resolution']="$_POST[resolution]
$today: Modification du statut de \"$r1[name]\" -> \"$r2[name]\". $messagesms";
	}

	//##################fin vincent
Ptitvincou
Gsup LEVEL 1
Messages : 28
Enregistré le : lun. 18 févr. 2013 18:23

pour la version 3.x

dans le fichier /core/ticket.php

apres

Code : Tout sélectionner

//threads insert close state
	if($_POST['state']=='3' && $globalrow['state']!='3')
	{
		$query = "INSERT INTO tthreads (ticket,date,author,type) VALUES ('$_GET[id]','$datetime', '$_SESSION[user_id]', 4)";
		$exec = mysql_query($query) or die('Erreur SQL !<br /><br />'.mysql_error());
Inserer:

Code : Tout sélectionner

		//####### vincent #######
		// RECHERCHE LES LIBELLES DES STATUTS 
		$q1= mysql_query("SELECT * FROM tstates where id = $globalrow[state]");
		$r1=mysql_fetch_array($q1); 
		$q2 = mysql_query("SELECT * FROM tstates where id = $_POST[state]");
		$r2=mysql_fetch_array($q2);

		//// SMS ////
		// envoit sms si nouveau statut = résolu
		if($_POST['state'] == 3) //si nouveau statut = resolu
		{
			// on cherche les infos sur le demandeur
			$q3= mysql_query("SELECT * FROM tusers where id = $globalrow[user]");
			$r3=mysql_fetch_array($q3);
			if($r3['phone']!='') // si le demandeur dispose d'un numero de telephone
			{
				// on envoit un email a obh pour qu'il le transmette en sms
					require("components/PHPMailer_v5.1/class.phpmailer.php"); 
					$mail = new PHPMailer();
								$mail->CharSet = 'ISO-8859-1'; //UTF-8 possible if characters problems
								$mail->SetLanguage("fr", "components/PHPMailer_v5.1/language/");
								$mail->IsSMTP();                                      // set mailer to use SMTP
								
								$mail->From = "vincent_toitot@cafebrasilia.fr";
								$mail->FromName = "Gsup";
								$mail->AddAddress("email2sms@ovh.net", "SMS ovh");
								// TEST $mail->AddAddress("exemple@domaine.fr", "SMS ovh");
							    //$mail->AddAddress("exemple@domaine.fr");                  // name is optional
								$mail->AddReplyTo("exemple@domaine.fr", "Gsup");

								// $mail->WordWrap = 50;                                 // set word wrap to 50 characters
								// $mail->AddAttachment("/var/tmp/file.tar.gz");         // add attachments
								// $mail->AddAttachment("/tmp/image.jpg", "new.jpg");    // optional name
								$mail->IsHTML(true);                                  // set email format to HTML

								//$mail->Subject = 'Account=sms-vxxx-1;Login=xxxx; Password=xxxx; From=Brasilia;To='.$r3['phone'];
								$mail->Subject = 'sms-vxxxx-1:login:mdp:Brasilia:'.$r3['phone'].':::1';
								
								$text_resolu = ' -> résolu';
								//on compte le nombre de caractere dans le titre, le texte_resolu, pour ne pas depasser 160 avec le titre, le texte resolu et un bout de la resolution
								$nbre_caractere_title = strlen($globalrow['title']);
								$nbre_caractere_text_resolu = strlen($text_resolu);
								$caractere_restant = 160 - $nbre_caractere_title - $nbre_caractere_text_resolu - 5; //-5 pour les caractere separateurs

											function Tronque_texte($texte,$max_caracteres,$option)
											{
												// Test si la longueur du texte dépasse la limite
												if (strlen($texte)>$max_caracteres)
												{
													// Séléction du maximum de caractères
													$texte = substr($texte, 0, $max_caracteres);
													// Récupération de la position du dernier espace (afin déviter de tronquer un mot)
													$position_espace = strrpos($texte, " ");
													$texte = substr($texte, 0, $position_espace);
													// Ajout des "..."
													$texte = $texte."...";
													if(isset($option))
													{
														$texte = $texte.' '.$option.'';
													}
												}
												return $texte;
											}							
								$text_resolution = Tronque_texte($_POST['resolution'],$caractere_restant);
							//	$mail->Body    = $globalrow['title'].': '.$text_resolution.$text_resolu; //format html
							//	$mail->AltBody = $globalrow['title'].': '.$text_resolution.$text_resolu; //fotmat texte
								
								$mail->Body    = $globalrow['title'].$text_resolu; //format html
								$mail->AltBody = $globalrow['title'].$text_resolu; //fotmat texte

								if(!$mail->Send())
								{
								   echo "Message could not be sent. <p>";
								   echo "Mailer Error: " . $mail->ErrorInfo;
								   exit;
								}								
			}
			else
			{
				echo '<h1>Pas de téléphone</h1>';
			}
		}
		$query = "INSERT INTO tthreads (ticket,date,author,type,text) VALUES ('$_GET[id]','$datetime', '$_SESSION[user_id]',0,'SMS ENVOYE')";
		$exec = mysql_query($query) or die('Erreur SQL !<br /><br />'.mysql_error());

//#######FIN VINCENT
cedricl
Gsup LEVEL 0
Messages : 3
Enregistré le : lun. 28 juil. 2014 15:48

super !!

merci Ptitvincou ;) ;)
Répondre