PageRenderTime 59ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/gespac/gestion_dossiers/post_dossiers.php

http://gespac.googlecode.com/
PHP | 272 lines | 159 code | 70 blank | 43 comment | 22 complexity | 40a499c7c43705a8862a578d79d71466 MD5 | raw file
  1. <?PHP
  2. session_start();
  3. /* fichier de creation / modification d'un dossier */
  4. // lib
  5. include_once ('../config/databases.php');
  6. include_once ('../../class/Sql.class.php');
  7. include_once ('../../class/Log.class.php');
  8. // on rיcupטre les paramטtres de l'url
  9. $action = $_GET['action'];
  10. // Cnx א la base
  11. $con_gespac = new Sql($host, $user, $pass, $gespac);
  12. $log = new Log ("../dump/log_sql.sql");
  13. /**************** INSERTION ********************/
  14. if ( $action == 'add' ) {
  15. $type = addslashes($_POST ['type']);
  16. $commentaire = addslashes($_POST ['commentaire']);
  17. $liste_mat = preg_replace("[^;]", "", $_POST ['liste_mat']); // On vire le premier ; dans la liste du matיriel
  18. $add_inter = $_POST ['add_inter'];
  19. $active_mailing = $_POST ['active_mailing'];
  20. $mailing = $active_mailing == "on" ? 1 : 0;
  21. $mat_hs = $_POST ['mat_hs'];
  22. $current_user = $con_gespac->QueryOne("SELECT user_id FROM users WHERE user_logon = '" . $_SESSION['login'] . "'");
  23. // On crיי le dossier
  24. $rq = "INSERT INTO dossiers (dossier_type, dossier_mat, dossier_mailing) VALUES ('$type', '$liste_mat', $mailing);";
  25. $con_gespac->Execute($rq);
  26. $log->Insert($rq);
  27. // On rיcupטre l'id du dernier dossier crיי
  28. $dossier = $con_gespac->GetLastID();
  29. // Si la case crיer l'intervention est cochיe
  30. $etat = $add_inter == "on" ? "intervention" : "ouverture";
  31. // On crיי une page dans le dossier
  32. $rq = "INSERT INTO dossiers_textes (dossier_id, txt_user, txt_texte, txt_etat) VALUES ($dossier, '$current_user', '$commentaire', '$etat');";
  33. $con_gespac->Execute($rq);
  34. $log->Insert($rq);
  35. echo "le dossier $dossier a יtי crיי.";
  36. // Si on veut changer l'יtat du matיriel
  37. if ( $mat_hs == "on" ) {
  38. $tab_liste_mat = explode(";", $liste_mat);
  39. $etat = addslashes($_POST ['CB_etats']);
  40. if ($etat <> "") {
  41. $gign = $_POST ['gign'];
  42. foreach ($tab_liste_mat as $mat) {
  43. if ($gign <> "") $espace = " ";
  44. $rq = "UPDATE materiels SET mat_etat='$etat $espace $gign' WHERE mat_id=$mat";
  45. $con_gespac->Execute($rq);
  46. $log->Insert($rq);
  47. }
  48. }
  49. }
  50. // Si on active le mailing
  51. if ( $mailing == 1) {
  52. echo $_SESSION['login'];
  53. //Rיcupיration du mail du compte ati (root)
  54. $mail_root = $con_gespac->QueryOne("SELECT clg_ati_mail FROM college");
  55. //Rיcupיration des comptes qui ont le grade ATI
  56. $req_comptes_ati = $con_gespac->QueryAll("SELECT user_nom, user_mail FROM users, grades WHERE grade_nom='ati' AND users.grade_id = grades.grade_id AND user_mailing=1");
  57. //on rיcupטre le mail et le nom du crיateur de l'intervention (si le mailing est activי)
  58. $req_mail_demandeur = $con_gespac->QueryRow("SELECT user_mail, user_nom FROM users WHERE user_id=$current_user AND user_mailing=1");
  59. $mail_demandeur = $req_mail_demandeur[0];
  60. $nom_demandeur = $req_mail_demandeur[1];
  61. echo '<br>'.$nom_demandeur.'<br>'.$mail_demandeur.'<br><br>';
  62. // CORPS DU MAIL
  63. $corps_mail = "Le dossier <b>$dossier</b> a יtי crיי. Vous pouvez le suivre en consultant la liste de vos dossiers sur votre interface GESPAC.<br><br>";
  64. $corps_mail .= "Le type du dossier est : <b>'$type'<br><br></b>";
  65. $corps_mail .= "L'יtat du dossier est actuellement : <b>'$etat'<br><br></b>";
  66. $corps_mail .= "Commentaire de l'utilisateur : <i>'$commentaire'</i><br><br>";
  67. $corps_mail .= "<i>Ce mail est envoyי automatiquement. Inutile d'y rיpondre, vous ne recevrez aucun mail en retour. Pour tout suivi du dossier, merci de vous connecter א <a href='http://gespac/gespac'>votre interface GESPAC.</a></i><br><br>";
  68. $corps_mail .= "L'יquipe GESPAC";
  69. $sujet_mail = '[GESPAC]Crיation du dossier n°'.$dossier.' par l\'utilisateur '.$nom_demandeur;
  70. $message = '<html><head><title>'.$sujet_mail.'</title></head><body>'.$corps_mail.'</body></html>';
  71. //Boucle pour rיcupיrer la liste des mails des ATIs
  72. foreach ( $req_comptes_ati as $record ) {
  73. $mail_nom = $record["user_nom"];
  74. $mail_ati = $record["user_mail"];
  75. if (empty($mail_ati)) { //le champ $mail_ati est vide
  76. $liste_mail_ati .= ''; //on ne concatטne rien dans la variable $liste_mail_ati
  77. } else { // si ce champ n'est pas vide
  78. $liste_mail_ati .= $mail_ati.','; //on colle א la variable la valeur de $mail_ati suivi d'une virgule
  79. }
  80. }
  81. // on concatטne les mails des ati avec le mail du destinataire. L'envoi en Cc nous met une erreur.
  82. $mail_destinataire = $liste_mail_ati.$mail_demandeur;
  83. //on cherche si il y a une virgule aprטs le sיparateur ','. Si c'est le cas, on remplace cette virgule par une seule virgule.
  84. $mail_destinataire = str_replace (",,", ",", $mail_destinataire);
  85. // Vיrification des doublons
  86. // on transforme la chaine $mail_prof en un tableau
  87. $verif_doublon_mail_destinataire = explode(',', $mail_destinataire);
  88. // Cette fonction va nous retourner un tableau complטtement dיdoublonnי !! Magique !
  89. $verif_doublon_mail_destinataire = array_unique($verif_doublon_mail_destinataire);
  90. // On reconstruit notre string א partir du tableau dיdoublonnי
  91. $mail_destinataire = implode(",", $verif_doublon_mail_destinataire);
  92. echo $mail_destinataire;
  93. $headers ='From: '.$mail_root."\n"; //c'est toujours le compte root qui envoie le mail
  94. $headers .='Reply-To: '.$mail_root."\n";
  95. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  96. $headers .='Content-Transfer-Encoding: 8bit';
  97. if (mail($mail_destinataire, $sujet_mail, $message, $headers))
  98. echo 'Le(s) mail(s) a (ont) bien יtי envoyי(s) !<br>';
  99. else
  100. echo 'Le(s) mail(s) n\'a (ont) pas יtי envoyי(s) !<br>';
  101. }
  102. }
  103. /**************** MODIFICATION ********************/
  104. if ( $action == 'modif' ) {
  105. $dossierid = $_POST['dossierid'];
  106. $etat = addslashes($_POST ['etat']);
  107. $commentaire = addslashes($_POST ['commentaire']);
  108. $mailing = $con_gespac->QueryOne("SELECT dossier_mailing FROM dossiers WHERE dossier_id = $dossierid");
  109. $current_user = $con_gespac->QueryOne("SELECT user_id FROM users WHERE user_logon = '" . $_SESSION['login'] . "'");
  110. // On crיי une page dans le dossier
  111. $rq = "INSERT INTO dossiers_textes (dossier_id, txt_user, txt_texte, txt_etat) VALUES ($dossierid, '$current_user', '$commentaire', '$etat');";
  112. $con_gespac->Execute($rq);
  113. $log->Insert($rq);
  114. // Si on active le mailing
  115. if ( $mailing == 1) {
  116. //Rיcupיration du mail du compte ati (root)
  117. $mail_root = $con_gespac->QueryOne("SELECT clg_ati_mail FROM college");
  118. //Rיcupיration des comptes qui ont le grade ATI et dont le mailing est actif au niveau utilisateur
  119. $req_comptes_ati = $con_gespac->QueryAll("SELECT user_nom, user_mail FROM users, grades WHERE grade_nom='ati' AND users.grade_id = grades.grade_id AND user_mailing=1");
  120. //Rיcupיration des noms et des mails des personnes qui ont participי au dossier et dont le mailing est actif au niveau utilisateur
  121. $req_comptes_participants = $con_gespac->QueryAll("SELECT user_nom, user_mail FROM users, dossiers_textes WHERE user_id = txt_user AND dossier_id=$dossierid AND user_mailing=1");
  122. //on rיcupטre le mail et le nom du crיateur de l'intervention (si le mailing est activי)
  123. /*$req_mail_demandeur = $con_gespac->QueryRow("SELECT user_mail, user_nom FROM users WHERE user_id=$current_user AND user_mailing=1");
  124. $mail_demandeur = $req_mail_demandeur["user_mail"];
  125. $nom_demandeur = $req_mail_demandeur["user_nom"];*/
  126. // CORPS DU MAIL
  127. $corps_mail = "Le dossier <b>$dossierid</b> a יtי modifiי. Vous pouvez le suivre en consultant la liste de vos dossiers sur votre interface GESPAC.<br><br>";
  128. $corps_mail .= "L'יtat du dossier est actuellement : <b>'$etat'<br><br></b>";
  129. $corps_mail .= "Commentaire de l'utilisateur : <i>'$commentaire'</i><br><br>";
  130. $corps_mail .= "<i>Ce mail est envoyי automatiquement. Inutile d'y rיpondre, vous ne recevrez aucun mail en retour. Pour tout suivi du dossier, merci de vous connecter א <a href='http://gespac/gespac'>votre interface GESPAC.</a></i><br><br>";
  131. $corps_mail .= "L'יquipe GESPAC";
  132. $sujet_mail = '[GESPAC]Modification du dossier n°'.$dossierid.' par l\'utilisateur '.$_SESSION['login'];
  133. $message = '<html><head><title>'.$sujet_mail.'</title></head><body>'.$corps_mail.'</body></html>';
  134. //Boucle pour rיcupיrer la liste des mails des ATIs
  135. foreach ( $req_comptes_ati as $record ) {
  136. $mail_nom = $record["user_nom"];
  137. $mail_ati = $record["user_mail"];
  138. if (empty($mail_ati)) { //le champ $mail_ati est vide
  139. $liste_mail_ati .= ''; //on ne concatטne rien dans la variable $liste_mail_ati
  140. } else { // si ce champ n'est pas vide
  141. $liste_mail_ati .= $mail_ati.','; //on colle א la variable la valeur de $mail_ati suivi d'une virgule
  142. }
  143. }
  144. //Boucle pour rיcupיrer la liste des mails des participants au dossier
  145. foreach ( $req_comptes_participants as $record ) {
  146. $nom_participant = $record["user_nom"];
  147. $mail_participant = $record["user_mail"];
  148. if (empty($mail_participant)) { //le champ $mail_ati est vide
  149. $liste_mail_participants .= ''; //on ne concatטne rien dans la variable $liste_mail_ati
  150. } else { // si ce champ n'est pas vide
  151. $liste_mail_participants .= $mail_participant.','; //on colle א la variable la valeur de $mail_ati suivi d'une virgule
  152. }
  153. }
  154. // on concatטne les mails des ati avec le mail du destinataire. L'envoi en Cc nous met une erreur.
  155. $mail_destinataire = $liste_mail_ati.$liste_mail_participants;
  156. //on cherche si il y a une virgule aprטs le sיparateur ','. Si c'est le cas, on remplace cette virgule par une seule virgule.
  157. $mail_destinataire = str_replace (",,", ",", $mail_destinataire);
  158. // Vיrification des doublons
  159. // on transforme la chaine $mail_prof en un tableau
  160. $verif_doublon_mail_destinataire = explode(',', $mail_destinataire);
  161. // Cette fonction va nous retourner un tableau complטtement dיdoublonnי !! Magique !
  162. $verif_doublon_mail_destinataire = array_unique($verif_doublon_mail_destinataire);
  163. // On reconstruit notre string א partir du tableau dיdoublonnי
  164. $mail_destinataire = implode(",", $verif_doublon_mail_destinataire);
  165. $headers ='From: '.$mail_root."\n"; //c'est toujours le compte root qui envoie le mail
  166. $headers .='Reply-To: '.$mail_root."\n";
  167. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  168. $headers .='Content-Transfer-Encoding: 8bit';
  169. if (mail($mail_destinataire, $sujet_mail, $message, $headers))
  170. echo 'Le(s) mail(s) a (ont) bien יtי envoyי(s) !';
  171. else
  172. echo 'Le(s) mail(s) n\'a (ont) pas יtי envoyי(s) !';
  173. }
  174. echo "Le dossier $dossierid a יtי modifiי.";
  175. }
  176. /**************** SUPPRESSION ********************/
  177. if ( $action == 'suppr' ) {
  178. $id = $_GET['id'];
  179. // Suppression des pages du dossier
  180. $req_suppr_pages = "DELETE FROM dossiers_textes WHERE dossier_id=$id";
  181. $con_gespac->Execute ( $req_suppr_pages );
  182. $log->Insert ( $req_suppr_pages );
  183. // Suppression du dossier
  184. $req_suppr_dossier = "DELETE FROM dossiers WHERE dossier_id=$id";
  185. $con_gespac->Execute ( $req_suppr_dossier );
  186. $log->Insert ( $req_suppr_dossier );
  187. //Insertion d'un log
  188. echo $log_texte = "Le dossier $id a יtי supprimי";
  189. $req_log_suppr_dossier = "INSERT INTO logs ( log_type, log_texte ) VALUES ( 'Suppression dossier', '$log_texte' );";
  190. $con_gespac->Execute ( $req_log_suppr_dossier );
  191. }
  192. ?>