cms.proweb-import-dossiers.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. $name["json"] = "dossiers-proweb";
  3. $name["files"] = "proweb-import-dossiers";
  4. $name["returnKo"] = "proweb-dossiers-upload";
  5. $name["returnOk"] = "proweb-dossiers";
  6. if (core::ifPost("from") AND core::getPost("from") == $name["files"]) {
  7. if (isset($_FILES[$name["files"]]['error']) AND $_FILES[$name["files"]]['error'] > 0) {
  8. switch ($_FILES[$name["files"]]['error']) {
  9. case 1: // UPLOAD_ERR_INI_SIZE
  10. alert::recError("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
  11. break;
  12. case 2: // UPLOAD_ERR_FORM_SIZE
  13. alert::recError("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
  14. break;
  15. case 3: // UPLOAD_ERR_PARTIAL
  16. alert::recError("L'envoi du fichier a été interrompu pendant le transfert !");
  17. break;
  18. case 4: // UPLOAD_ERR_NO_FILE
  19. alert::recError("Vous n'avez pas chargé de fichier");
  20. break;
  21. }
  22. } elseif ($_FILES[$name["files"]]['type'] != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
  23. alert::recError("Seuls les fichiers Excel au format xlsx sont acceptés");
  24. header("Location: /".$name["returnKo"] . ".html");
  25. exit();
  26. } else {
  27. if (file_exists($_FILES[$name["files"]]['tmp_name'])) {
  28. $fileType = ($_FILES[$name["files"]]['type'] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ? "xlsx" : "csv";
  29. $simpleXLSX = new simpleXLSX();
  30. $dataExcel = $simpleXLSX->parse($_FILES[$name["files"]]['tmp_name']);
  31. $returnData = $dataExcel->rows();
  32. if(prowebDossiers::checkExcel($returnData) == FALSE){
  33. header("Location: /".$name["returnKo"] . ".html");
  34. exit();
  35. }
  36. $md5File = file::record($_FILES[$name["files"]]);
  37. if($md5File == FALSE){
  38. header("Location: /proweb-dossiers-historique-excel.html");
  39. exit();
  40. }
  41. if(prowebDossiers::add($returnData)){
  42. alert::recSuccess("L'importation a été réalisé avec succès");
  43. json::create($name["json"]);
  44. $nbDossiers = count($returnData) - 1;
  45. $json = json_encode($returnData);
  46. db::query("INSERT INTO " . DB_T_EXCEL_PROWEB_DOSSIERS . " (json, nbDossiers, md5, dateData, id_user) VALUES (:json, :nbDossiers, :md5, :dateData, :id_user)");
  47. db::bind(':nbDossiers', $nbDossiers);
  48. db::bind(':dateData', $_POST["date"]);
  49. db::bind(':md5', $md5File);
  50. db::bind(':json', base64_encode($json));
  51. db::bind(':id_user', session::getId());
  52. try {
  53. db::execute();
  54. json::create("excel-proweb-dossiers");
  55. } catch (Exception $ex) {
  56. alert::recError("Erreur sur l'archivage du fichier Excel " . $_FILES[$name["files"]]['name']);
  57. header("Location: /proweb-dossiers-historique-excel.html");
  58. exit();
  59. }
  60. historique::recRef("/dossiers-proweb.html");
  61. historique::add(array(
  62. "idType" => historique::getIdRef("ACTION"),
  63. "idUser" => session::getId(),
  64. "idPage" => historique::getIdRef("/dossiers-proweb.html"),
  65. "log" => "Import du fichier " . $_FILES[$name["files"]]['name']
  66. ));
  67. alert::recSuccess("Le fichier " . $_FILES[$name["files"]]['name'] . " a été importé avec succès");
  68. header("Location: /".$name["returnOk"] . ".html");
  69. } else {
  70. header("Location: /".$name["returnKo"] . ".html");
  71. exit();
  72. }
  73. }
  74. }
  75. } else {
  76. header('HTTP/1.0 401 Unauthorized');
  77. exit();
  78. }