liste_lieuxtravail.inc.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. <?php
  2. // --------
  3. // Sécurité
  4. // --------
  5. if (isValidConstant() != 1) {
  6. fermeSessionUtilisateur();
  7. }
  8. // ----------------------
  9. // Droit de l'utilisateur
  10. // ----------------------
  11. if ($_SESSION['gestion_site'] < 'Oui') {
  12. exit;
  13. }
  14. // ------------------------------
  15. // Caractéristiques du module
  16. // ------------------------------
  17. unset($module);
  18. $module = array(
  19. "titre" => "Gestion des lieux de travail",
  20. "urldest" => $SCRIPT_NAME . "?page=liste_lieuxtravail",
  21. "recherche" => array("engin" => false),
  22. "jeton" => $jeton,
  23. "opradmin" => "Ajouter un lieu de travail",
  24. "fenetre" => array(
  25. "nom" => "liste_lieuxtravail",
  26. "titre" => "titre",
  27. "largeur" => "750",
  28. "hauteur" => "420",
  29. "validation" => true,
  30. "champs" => array("lnolieutravail", "lnomlieutravail", "lnoemployeur", "lcontact", "ladresse", "lville", "lcodepostal", "ltelephone", "ltelecopieur", "lemail")
  31. ),
  32. "msgajoutbouton" => "Ajout d'une fiche d'un lieu de travail",
  33. "actionajoutbouton" => "Ajouter la fiche du lieu de travail",
  34. "msgmodifbouton" => "Modification de la fiche d'un lieu de travail",
  35. "actionmodifbouton" => "Modifier la fiche du lieu de travail",
  36. "nombre_a_afficher" => array(
  37. 0 => array("refid" => 15, "valeur" => 15),
  38. 1 => array("refid" => 30, "valeur" => 30),
  39. 2 => array("refid" => 45, "valeur" => 45),
  40. 3 => array("refid" => 60, "valeur" => 60),
  41. 4 => array("refid" => 120, "valeur" => 120)
  42. ),
  43. "lientri" => true,
  44. "entete" => array(
  45. 1 => array("# Lieu" => "reflieutravail", "largeur" => "45px"),
  46. 2 => array("Lieu" => "nomlieutravail", "largeur" => "200px"),
  47. 3 => array("Attaché à/au" => "nomemployeur", "largeur" => "125px"),
  48. 4 => array("Contact" => "nomcontact", "largeur" => "200px"),
  49. 5 => array("Adresse" => "(adresse+ville+codepostal)", "largeur" => "165px"),
  50. 6 => array("Téléphone" => "numtel", "largeur" => "90px"),
  51. 7 => array("Télécopieur" => "numfax", "largeur" => "90px"),
  52. 8 => array("Adresse @" => "email", "largeur" => "200px")
  53. //9 => array("<img alt=\"Pdf\" src=\"images/icones/icones_20.png\">" => "-1", "largeur" => "22px")
  54. ),
  55. "msg" => array(
  56. "maj_ok" => "Modification effectuée avec succès.",
  57. "maj_echec" => "L'opération de mise à jour du lieu de travail a échouée.",
  58. "employeur_invalide" => "Employeur introuvable ou inconnu."
  59. )
  60. );
  61. // ------------------
  62. // Requête sur le tri
  63. // ------------------
  64. $rtri = antiInjection($module["entete"][$tri][key($module["entete"][$tri])] . " " . $dir);
  65. // -----------------------
  66. // Opération de sauvegarde
  67. // -----------------------
  68. if (isset($action)) {
  69. $msg = "";
  70. $action = stripslashes(antiInjection($action));
  71. if ($action == "Modifier la fiche du lieu de travail" || $action == "Ajouter la fiche du lieu de travail") {
  72. $lnolieutravail = antiInjection(filter_input(INPUT_POST, 'lnolieutravail'));
  73. $lnomlieutravail = antiInjection($lnomlieutravail);
  74. $lnoemployeur = antiInjection(filter_input(INPUT_POST, 'lnoemployeur'));
  75. $lcontact = antiInjection($lcontact);
  76. $ladresse = antiInjection($ladresse);
  77. $lville = antiInjection($lville);
  78. $lcodepostal = antiInjection($lcodepostal);
  79. $ltelephone = antiInjection($ltelephone);
  80. $ltelecopieur = antiInjection($ltelecopieur);
  81. $lemail = antiInjection($lemail);
  82. $error = false;
  83. //Validations d'usage
  84. if (empty($lnomlieutravail)) {
  85. $module["resultatSQL"] = false;
  86. $module["message"] = "Le nom du lieu de travail est requis.";
  87. $error = true;
  88. } else if ($lnoemployeur === "" || intval($lnoemployeur) < 0) {
  89. $module["resultatSQL"] = false;
  90. $module["message"] = "L'employeur de l'utilisateur est requis.";
  91. $error = true;
  92. } else if (empty($lcontact)) {
  93. $module["resultatSQL"] = false;
  94. $module["message"] = "Le nom de la personne contact est requis";
  95. $error = true;
  96. } else if ($ladresse === "") {
  97. $module["resultatSQL"] = false;
  98. $module["message"] = "L'adresse du lieu de travail est requis.";
  99. $error = true;
  100. } else if ($lville === "") {
  101. $module["resultatSQL"] = false;
  102. $module["message"] = "Le nom de la ville est requis.";
  103. $error = true;
  104. } else if (preg_match("/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/", $lcodepostal) !== 1) {
  105. $module["resultatSQL"] = false;
  106. $module["message"] = "Le code postal est requis et doit être valide.";
  107. $error = true;
  108. } else if (!isValidPhone($ltelephone)) {
  109. $module["resultatSQL"] = false;
  110. $module["message"] = "Le numéro de téléphone est requis et doit être valide.";
  111. $error = true;
  112. } else if (!empty($ltelecopieur) && !isValidPhone($ltelecopieur)) {
  113. $module["resultatSQL"] = false;
  114. $module["message"] = "Le numéro de télécopieur doit être valide.";
  115. $error = true;
  116. } else if (!filter_var($lemail, FILTER_VALIDATE_EMAIL)) {
  117. $module["resultatSQL"] = false;
  118. $module["message"] = "L'adresse courriel est requise et doit être valide.";
  119. $error = true;
  120. }
  121. if (!$error) {
  122. unset($sqlparam, $result);
  123. $lnoemployeur = antiInjection($lnoemployeur);
  124. $sqlparam["table"][] = "employeurs";
  125. $sqlparam["where"][] = "refemployeur='$lnoemployeur'";
  126. $result = executerRequeteSql($sqlparam);
  127. if (!isset($result)) {
  128. $module["resultatSQL"] = false;
  129. $module["message"] = $module["msg"]["employeur_invalide"];
  130. } else {
  131. unset($sqlparam, $result);
  132. if ($action == "Modifier la fiche du lieu de travail") {
  133. $sqlparam["type"] = "UPDATE";
  134. $sqlparam["where"][] = sprintf("reflieutravail = %d", $lnolieutravail);
  135. } else {
  136. $sqlparam["type"] = "INSERT";
  137. $sqlparam["champs"]["reflieutravail"] = sprintf("%d", $lnolieutravail);
  138. }
  139. $sqlparam["table"][] = "lieuxtravail";
  140. $sqlparam["champs"]["nomlieutravail"] = "'" . sprintf("%s", $lnomlieutravail) . "'";
  141. $sqlparam["champs"]["refemployeur"] = sprintf("%d", $lnoemployeur);
  142. $sqlparam["champs"]["nomcontact"] = "'" . sprintf("%s", $lcontact) . "'";
  143. $sqlparam["champs"]["adresse"] = "'" . sprintf("%s", $ladresse) . "'";
  144. $sqlparam["champs"]["ville"] = "'" . sprintf("%s", $lville) . "'";
  145. $sqlparam["champs"]["codepostal"] = "'" . sprintf("%s", $lcodepostal) . "'";
  146. $sqlparam["champs"]["numtel"] = "'" . sprintf("%s", $ltelephone) . "'";
  147. $sqlparam["champs"]["numfax"] = "'" . sprintf("%s", $ltelecopieur) . "'";
  148. $sqlparam["champs"]["email"] = "'" . sprintf("%s", $lemail) . "'";
  149. // TODO - Mettre une valeur pour le champ «vide» même s'il n'est pas utilisé.
  150. // TODO - Champ possiblement à retirer.
  151. $sqlparam["champs"]["dept"] = "'vide'";
  152. $result = executerRequeteSql($sqlparam);
  153. if (isset($result)) {
  154. //unset($lnolieutravail);
  155. unset($lnomlieutravail);
  156. unset($lnoemployeur);
  157. unset($lcontact);
  158. unset($ladresse);
  159. unset($lville);
  160. unset($lcodepostal);
  161. unset($ltelephone);
  162. unset($ltelecopieur);
  163. unset($lemail);
  164. $lnolieutravail = sprintf("%d", $lnolieutravail); //$result[0]["reflieutravail"];
  165. $lnomlieutravail = '';
  166. $lnoemployeur = '';
  167. $lcontact = '';
  168. $ladresse = '';
  169. $lville = '';
  170. $lcodepostal = '';
  171. $ltelephone = '';
  172. $ltelecopieur = '';
  173. $lemail = '';
  174. $module["resultatSQL"] = true;
  175. $module["message"] = $module["msg"]["maj_ok"];
  176. } else {
  177. $module["resultatSQL"] = false;
  178. $module["message"] = $module["msg"]["maj_echec"];
  179. }
  180. }
  181. }
  182. }
  183. } else {
  184. unset($lnolieutravail);
  185. unset($lnomlieutravail);
  186. unset($lcontact);
  187. unset($ladresse);
  188. unset($lville);
  189. unset($lcodepostal);
  190. unset($ltelephone);
  191. unset($ltelecopieur);
  192. unset($lnoemployeur);
  193. unset($lemail);
  194. $lnolieutravail = 0;
  195. $lnomlieutravail = '';
  196. $lnom = '';
  197. $lcontact = '';
  198. $ladresse = '';
  199. $lville = '';
  200. $lcodepostal = '';
  201. $ltelephone = '';
  202. $ltelecopieur = '';
  203. $lnoemployeur = '';
  204. $lemail = '';
  205. }
  206. $i = 0;
  207. unset($sqlparam);
  208. $sqlparam["table"][] = "lieuxtravail";
  209. $sqlparam["table"][] = "employeurs";
  210. $sqlparam["join"][] = "employeurs.refemployeur = lieuxtravail.refemployeur";
  211. $sqlparam["champs"][] = "lieuxtravail.reflieutravail";
  212. $sqlparam["champs"][] = "lieuxtravail.nomlieutravail";
  213. $sqlparam["champs"][] = "employeurs.refemployeur";
  214. $sqlparam["champs"][] = "employeurs.nomemployeur";
  215. $sqlparam["champs"][] = "lieuxtravail.nomcontact";
  216. $sqlparam["champs"][] = "lieuxtravail.adresse";
  217. $sqlparam["champs"][] = "lieuxtravail.ville";
  218. $sqlparam["champs"][] = "lieuxtravail.codepostal";
  219. $sqlparam["champs"][] = "lieuxtravail.numtel";
  220. $sqlparam["champs"][] = "lieuxtravail.numfax";
  221. $sqlparam["champs"][] = "lieuxtravail.email";
  222. $sqlparam["compte"] = "lieuxtravail.reflieutravail";
  223. $sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . ", " . $nombreaffiche;
  224. $sqlparam["ordre"][] = $rtri;
  225. $result = executerRequeteSql($sqlparam);
  226. $module["compte"] = $result[0]["compte"];
  227. print preparerModule($module);
  228. //Liste principale
  229. if (isset($result)) {
  230. $i = ($nopage - 1) * $nombreaffiche + 1;
  231. unset($style);
  232. $style = "border:1px solid #cfcfcf; font-family:arial, helvetica, sans-serif;; font-size:9pt; margin-left:5px; margin-right:5px; padding-right:10px;overflow-x:hidden; white-space:nowrap;";
  233. //Boucle de lecture
  234. foreach ($result as $clef => $champs) {
  235. $telephone = ($champs["numtel"] != "") ? $champs["numtel"] : " ";
  236. $telecopieur = ($champs["numfax"] != "") ? $champs["numfax"] : " ";
  237. $email = ($champs["email"]) ? $champs["email"] : " ";
  238. print "<tr>\n";
  239. print "<td style='$style'>" . $i . "</td>";
  240. print "<td class='detail_liste' style='width:" . $module["entete"][1]["largeur"] . "px;'title=\"" . $champs["reflieutravail"] . "\">" . $champs["reflieutravail"] . "</td>";
  241. print "<td class='detail_liste' style='width:" . $module["entete"][2]["largeur"] . "px;' title=\"" . htmlentities($champs["nomlieutravail"]) . "\">";
  242. print "<div style='overflow:hidden; white-space:nowrap; width:200px;'>" . htmlentities($champs["nomlieutravail"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>";
  243. print "<td class='detail_liste' style=' width:" . $module["entete"][3]["largeur"] . "px;' title=\"" . $champs["nomemployeur"] . "\">";
  244. print "<div style='overflow:hidden; white-space:nowrap; width:125px;'>" . htmlentities($champs["nomemployeur"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>";
  245. print "<td class='detail_liste' style='width:" . $module["entete"][4]["largeur"] . "px;' title=\"" . $champs["nomcontact"] . "\">";
  246. print "<div style='overflow:hidden; white-space:nowrap; width:200px;'>" . htmlentities($champs["nomcontact"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>";
  247. print "<td class='detail_liste' style='width:" . $module["entete"][5]["largeur"] . "px;' title=\"" . $champs["adresse"] . " " . $champs["ville"] . " " . $champs["codepostal"] . "\">";
  248. print "<div style='overflow:hidden; white-space:nowrap; width:165px;'>" . htmlentities($champs["adresse"] . " " . $champs["ville"] . " " . $champs["codepostal"]) . "</div></td>\n";
  249. print "<td class='detail_liste' style='width:" . $module["entete"][6]["largeur"] . "px;' title=\"" . $telephone . "\">";
  250. print htmlentities($telephone, ENT_SUBSTITUTE, "UTF-8") . "</td>\n";
  251. print "<td class='detail_liste' style='width:" . $module["entete"][7]["largeur"] . "px;' title=\"" . $telecopieur . "\">";
  252. print htmlentities($telecopieur, ENT_SUBSTITUTE, "UTF-8") . "</td>\n";
  253. print "<td class='detail_liste' style='width:" . $module["entete"][8]["largeur"] . "px;' title=\"" . $email . "\">";
  254. print "<div style='overflow:hidden; white-space:nowrap; width:200px;'>" . htmlentities($email, ENT_SUBSTITUTE, "UTF-8") . "</div></td>\n";
  255. print "<td class='detail_liste' style='width:30x;'>\n";
  256. print "<form action='' name='sous_formulaire$i'>";
  257. print prepareBoutonModifier(array($champs["reflieutravail"], $champs["nomlieutravail"], $champs["refemployeur"], $champs["nomcontact"],
  258. $champs["adresse"], $champs["ville"], $champs["codepostal"], $champs["numtel"],
  259. $champs["numfax"], $champs["email"]));
  260. print "</form>";
  261. print "</td>\n";
  262. print "</tr>\n";
  263. $i++;
  264. }
  265. print"</table>";
  266. ?>
  267. <script type='text/javascript'>
  268. function ValidationFormulaire()
  269. {
  270. var msgNom = "Nom de l'employeur requis.";
  271. var msgEmployeur = "Employeur requis.";
  272. var msgPersonne = "Nom de la personne contact requis.";
  273. var msgAdresse = "Adresse requise.";
  274. var msgVille = "Nom de la ville requise.";
  275. var msgCodePostal = "Code postal requis et valide.";
  276. var msgTel1 = "Numéro de téléphone requis et valide.";
  277. var msgTel2 = "Numéro de télécopieur requis et valide.";
  278. var msgEmail = "Adresse de courriel valide requise";
  279. var frm = document.frmModif;
  280. if (frm.lnomlieutravail.value === "") {
  281. jAlert(msgNom);
  282. return false;
  283. } else if (frm.lnoemployeur.selectedIndex === 0) {
  284. jAlert(msgEmployeur);
  285. return false;
  286. } else if (frm.lcontact.value === "") {
  287. jAlert(msgPersonne);
  288. return false;
  289. } else if (frm.ladresse.value === "") {
  290. jAlert(msgAdresse);
  291. return false;
  292. } else if (frm.lville.value === "") {
  293. jAlert(msgVille);
  294. return false;
  295. } else if (!isPostCode(frm.lcodepostal.value.trim())) {
  296. jAlert(msgCodePostal);
  297. frm.lcodepostal.focus();
  298. return false;
  299. } else if (!isTelephone(frm.ltelephone.value)) {
  300. jAlert(msgTel1);
  301. frm.ltelephone.focus();
  302. return false;
  303. } else if (frm.ltelecopieur.value !== "" && !isTelephone(frm.ltelecopieur.value)) {
  304. jAlert(msgTel2);
  305. frm.ltelecopieur.focus();
  306. return false;
  307. } else if (!isCourrielValide(frm.lemail.value)) {
  308. jAlert(msgEmail);
  309. frm.lemail.focus();
  310. return false;
  311. }
  312. closeRemote();
  313. return true;
  314. }
  315. function modifpres() {
  316. var frm = document.frmModif;
  317. var valeurTexte = remove(frm.lcontact.value, "Madame ");
  318. valeurTexte = remove(valeurTexte, "Monsieur ");
  319. if (frm.lpresentation.selectedIndex > 0) {
  320. frm.lcontact.value = frm.lpresentation.value + " " + valeurTexte;
  321. }
  322. }
  323. // Mise en place des masques de saisie
  324. $(document).ready(function () {
  325. $("#ltelephone").mask("(999) 999-9999");
  326. $("#ltelecopieur").mask("(999) 999-9999");
  327. $("#frmModif").validate();
  328. });
  329. </script>
  330. <?php
  331. // Pagination
  332. print "<table style='width:1200px; margin:auto;'>";
  333. print "<tr><td style='vertical-align:bottom;'>";
  334. print $seqpage;
  335. print "</td>";
  336. print "<td style='width:320px; text-align:right;'>";
  337. //Haut de page
  338. if ($nombreaffiche > 15) {
  339. print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
  340. print "<a name='baspage'>";
  341. }
  342. print "</td></tr>";
  343. print "</table>";
  344. print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);
  345. //Lieu de travail
  346. print "</tr>";
  347. print "<tr>";
  348. print "<td>Nom du lieu de travail : </td>";
  349. print "<td>";
  350. // Clef de l'enregistrement du lieu de travail.
  351. print sprintf("<input type='hidden' id='lnolieutravail' name='lnolieutravail' value='%d'>", $lnolieutravail);
  352. print "<INPUT TYPE='text' id='lnomlieutravail' NAME='lnomlieutravail' Value='" . $lnomlieutravail . "' SIZE='50' MAXLENGTH='50' >";
  353. print "</td>";
  354. print "</tr>";
  355. //Employeur
  356. print "<tr>";
  357. print "<td>Employeur : </td>";
  358. print "<td>";
  359. unset($result2);
  360. $result2 = getEmployeurs();
  361. unset($param);
  362. $param["form"] = "frmModif";
  363. $param["nom"] = "lnoemployeur";
  364. $param["etq"] = "";
  365. if ($_SESSION['gestion_site'] >= 'Oui') {
  366. $param["defaut"] = (isset($ListeEmployeurs) ? $ListeEmployeurs : '');
  367. } else {
  368. $param["defaut"] = $_SESSION["employeur"];
  369. }
  370. $param["donnees"] = $result2;
  371. $param["menu"] = true;
  372. $param["evt"] = " ";
  373. print formListbox2($param);
  374. print "</td>
  375. </tr>";
  376. print "<tr>";
  377. print "<td>Personne contact : </td>";
  378. print "<td>";
  379. print "<select name='lpresentation' onblur=\"javascript:modifpres()\" onclick=\"javascript:modifpres()\">";
  380. print "<option>-----</option>";
  381. print "<option>Madame</option>";
  382. print "<option>Monsieur</option>";
  383. print "</select>";
  384. print "<INPUT TYPE='text' NAME='lcontact' id='lcontact' Value='$lcontact' SIZE='50' MAXLENGTH='50' >";
  385. print "</td>";
  386. print "</tr>";
  387. print "<tr>";
  388. print "<td>Adresse : </td>";
  389. print "<td>";
  390. print "<INPUT TYPE='text' NAME='ladresse' id='ladresse' Value='$ladresse' SIZE='50' MAXLENGTH='50' >";
  391. print "</td>";
  392. print "</tr>";
  393. print "<tr>";
  394. print "<td>Ville : </td>";
  395. print "<td>";
  396. print "<INPUT TYPE='text' NAME='lville' id='lville' Value='$lville' SIZE='30' MAXLENGTH='30' ><br>";
  397. print "</td>";
  398. print "</tr>";
  399. print "<tr>";
  400. print "<td>Code postal : </td>";
  401. print "<td>";
  402. print "<INPUT TYPE='text' id='lcodepostal' NAME='lcodepostal' Value='$lcodepostal' SIZE='7' MAXLENGTH='7' >";
  403. print "</td>";
  404. print "</tr>";
  405. print "<tr>";
  406. print "<td>Téléphone : </td>";
  407. print "<td>";
  408. print "<INPUT TYPE='text'NAME='ltelephone' Value='$ltelephone' id='ltelephone' SIZE='14' MAXLENGTH='14' >";
  409. print "</td>";
  410. print "</tr>";
  411. print "<tr>";
  412. print "<td>Télécopieur : </td>";
  413. print "<td>";
  414. print "<INPUT TYPE='text' NAME='ltelecopieur' Value='$ltelecopieur' id='ltelecopieur' SIZE='14' MAXLENGTH='14' >";
  415. print "</td>";
  416. print "</tr>";
  417. print "<tr>";
  418. print "<td>Adresse de courriel : </td>";
  419. print "<td>";
  420. print "<INPUT TYPE='text' NAME='lemail' id='lemail' Value='$lemail' SIZE='50' MAXLENGTH='50'>"; // class='required email'><br>";
  421. print "</td >";
  422. print "</tr>";
  423. print fenetreModaleFin($module["actionmodifbouton"]);
  424. }