2
0

cms.event-import-inscription.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. if (core::ifPost("from") AND core::getPost("from") == "event-import-inscription") {
  3. if (isset($_FILES[core::getPost("from")]['error']) AND $_FILES[core::getPost("from")]['error'] > 0) {
  4. switch ($_FILES[core::getPost("from")]['error']) {
  5. case 1: // UPLOAD_ERR_INI_SIZE
  6. alert::recError("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
  7. break;
  8. case 2: // UPLOAD_ERR_FORM_SIZE
  9. alert::recError("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
  10. break;
  11. case 3: // UPLOAD_ERR_PARTIAL
  12. alert::recError("L'envoi du fichier a été interrompu pendant le transfert !");
  13. break;
  14. case 4: // UPLOAD_ERR_NO_FILE
  15. alert::recError("Vous n'avez pas chargé de fichier");
  16. break;
  17. }
  18. } elseif ($_FILES[core::getPost("from")]['type'] != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
  19. alert::recError("Seuls les fichiers Excel au format xlsx sont acceptés (".$_FILES[core::getPost("from")]['type'].")");
  20. header("Location: /evenement-".core::getPost("event").".html");
  21. exit();
  22. } else {
  23. if (file_exists($_FILES[core::getPost("from")]['tmp_name'])) {
  24. $simpleXLSX = new simpleXLSX();
  25. $xlsx = $simpleXLSX->parse($_FILES[core::getPost("from")]['tmp_name']);
  26. $returnXlsx = $xlsx->rows();
  27. if( $returnXlsx[0][0] != "Matricule SALAR"
  28. OR $returnXlsx[0][1] != "Nom SALAR"
  29. OR $returnXlsx[0][2] != "Prénom SALAR"){
  30. alert::recError("Le fichier " . $_FILES[core::getPost("from")]['name'] . " n'est pas un fichier d'inscription à un évènement.");
  31. header("Location: /evenement-".core::getPost("event").".html");
  32. exit();
  33. }
  34. $nbSalaries = count($returnXlsx) - 1;
  35. foreach ($returnXlsx as $key => $ligne) {
  36. if($key > 0){
  37. $salarie = salaries::get_salarieByLoginId($ligne[0]);
  38. $titreEvenement = event::getInscriptionEvenementById(core::getPost("event"), $salarie["id"])["titre"];
  39. if(empty($titreEvenement) AND isset($salarie["id"])){
  40. db::query("INSERT INTO " . DB_T_EVENTS_INSCRITS . " (id_evenement, id_salarie, sel, id_user) VALUES (:id_evenement, :id_salarie, :sel, :id_user)");
  41. db::bind(':sel', md5(core::getPost("event")."-".time().rand(100000000000000, 999999999999999)));
  42. db::bind(':id_evenement', core::getPost("event"));
  43. db::bind(':id_salarie', $salarie["id"]);
  44. db::bind(':id_user', session::getId());
  45. try {
  46. db::execute();
  47. alert::recSuccess("Inscription de " . $salarie["prenom"] . " " . $salarie["nom"]);
  48. } catch (Exception $ex) {
  49. alert::recError($salarie["prenom"] . " " . $salarie["nom"] . " n'a pas pu être importé");
  50. }
  51. } elseif(empty($salarie["id"])){
  52. alert::recError($ligne[2]. " " .$ligne[1] . " (" .$ligne[0] . ") n'est pas présent dans la base RH");
  53. }
  54. }
  55. }
  56. header("Location: /evenement-".core::getPost("event").".html");
  57. exit();
  58. } else {
  59. alert::recError("Erreur lors du chargement du fichier : " . $_FILES[core::getPost("from")]['name']);
  60. }
  61. }
  62. header("Location: /evenement-".core::getPost("event").".html");
  63. exit();
  64. } else {
  65. header('HTTP/1.0 401 Unauthorized');
  66. exit();
  67. }