2
0

document.class.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. class document
  3. {
  4. static public function uploadFile(array $_temp){
  5. $tmp = file::record($_temp, DIR_DATAS_DOCS);
  6. if($tmp != FALSE){
  7. return $tmp;
  8. } else {
  9. return FALSE;
  10. }
  11. }
  12. static public function readFile(string $_id){
  13. return file::download($_id, DIR_DATAS_DOCS);
  14. }
  15. static public function deleteFile(string $_id){
  16. return file::delete($_id, DIR_DATAS_DOCS);
  17. }
  18. static public function getTypes(){
  19. db::query("SELECT "
  20. . "* "
  21. . "FROM " . DB_T_TYPE_DOCUMENT);
  22. return db::resultset();
  23. }
  24. public static function delete(int $_id)
  25. {
  26. $tmp = self::get($_id);
  27. db::query("DELETE FROM " . DB_T_DOCUMENTS . " WHERE id = :id");
  28. db::bind(':id', $_id);
  29. db::execute();
  30. return self::deleteFile($tmp["id_file"]);
  31. }
  32. public static function lastAdd()
  33. {
  34. db::query("SELECT MAX(id) AS id FROM " . DB_T_DOCUMENTS);
  35. return db::single()["id"];
  36. }
  37. public static function add()
  38. {
  39. /**
  40. *
  41. * @var string $idFile
  42. */
  43. $file = core::getFiles("document-import");
  44. $idFile = self::uploadFile($file);
  45. $tagsUser = tags::textToId(core::getPost("tagsUser"));
  46. if($idFile != NULL){
  47. db::query("INSERT INTO " . DB_T_DOCUMENTS . " (id_type, id_file, titre, date, deadline, description, tagsUser) VALUES (:id_type, :id_file, :titre, :date, :deadline, :description, :tagsUser)");
  48. db::bind(':id_type', core::getPost("id_type"));
  49. db::bind(':id_file', $idFile);
  50. db::bind(':titre', core::getPost("titre"));
  51. db::bind(':date', core::getPost("date"));
  52. db::bind(':deadline', core::getPost("deadline"));
  53. db::bind(':description', core::getPost("description"));
  54. db::bind(':tagsUser', $tagsUser);
  55. try {
  56. db::execute();
  57. alert::recSuccess("Document enregistré avec succès");
  58. return TRUE;
  59. } catch (Exception $ex) {
  60. file::delete($idFile, DIR_DATAS_DOCS);
  61. alert::recError("Erreur à l'enregistrement du document : " . core::getPost("titre"));
  62. return FALSE;
  63. }
  64. } else {
  65. file::delete($idFile, DIR_DATAS_DOCS);
  66. alert::recError("Erreur à l'enregistrement de la pièce jointe : " . $file["tmp_name"]);
  67. return FALSE;
  68. }
  69. }
  70. public static function update()
  71. {
  72. $tagsUser = tags::textToId(core::getPost("tagsUser"));
  73. if(core::ifPost("done") AND core::getPost("done") == TRUE){
  74. $sql = "id_user_done = :id_user_done, date_done = CURRENT_TIMESTAMP, ";
  75. } else {
  76. $sql = "";
  77. }
  78. db::query("UPDATE " . DB_T_DOCUMENTS . " SET "
  79. . "id_type = :id_type, "
  80. . "titre = :titre, "
  81. . "date = :date, "
  82. . "deadline = :deadline, "
  83. . "description = :description, "
  84. . $sql
  85. . "tagsUser = :tagsUser "
  86. . "WHERE id = :id");
  87. db::bind(':id_type', core::getPost("id_type"));
  88. db::bind(':titre', core::getPost("titre"));
  89. db::bind(':date', core::getPost("date"));
  90. db::bind(':deadline', core::getPost("deadline"));
  91. db::bind(':description', core::getPost("description"));
  92. db::bind(':tagsUser', $tagsUser);
  93. db::bind(':id', core::getPost("id"));
  94. if(core::ifPost("done") AND core::getPost("done") == TRUE){
  95. db::bind(':id_user_done', session::getId());
  96. }
  97. try {
  98. db::execute();
  99. alert::recSuccess("Document mis à jour avec succès");
  100. return TRUE;
  101. } catch (Exception $ex) {
  102. alert::recError("Erreur de mise à jour du document");
  103. return FALSE;
  104. }
  105. }
  106. static public function printFile(string $_id) {
  107. $filePatch = file::download($_id, DIR_DATAS_DOCS);
  108. if (file_exists($filePatch) && is_readable($filePatch)) {
  109. $file_info = new finfo(FILEINFO_MIME_TYPE);
  110. $mime_type = $file_info->file($filePatch);
  111. header('Content-Type: ' . $mime_type);
  112. header('Content-Length: ' . filesize($filePatch));
  113. readfile($filePatch);
  114. } else {
  115. echo "Le fichier n'a pas été trouvé ou n'est pas lisible.";
  116. }
  117. }
  118. static public function getList(){
  119. }
  120. static public function get(float $_id){
  121. db::query("SELECT "
  122. . "" . DB_T_DOCUMENTS . ".id, "
  123. . "" . DB_T_DOCUMENTS . ".id_type, "
  124. . "" . DB_T_DOCUMENTS . ".id_file, "
  125. . "" . DB_T_DOCUMENTS . ".titre, "
  126. . "" . DB_T_DOCUMENTS . ".date, "
  127. . "" . DB_T_DOCUMENTS . ".deadline, "
  128. . "" . DB_T_DOCUMENTS . ".description, "
  129. . "" . DB_T_DOCUMENTS . ".tagsUser, "
  130. . "" . DB_T_DOCUMENTS . ".id_user_done, "
  131. . "" . DB_T_DOCUMENTS . ".date_done, "
  132. . "CONCAT(" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS doneUser, "
  133. . "" . DB_T_FILES . ".name, "
  134. . "CONCAT(ROUND((" . DB_T_FILES . ".size / 1024 / 1024), 2), ' Mo') AS size "
  135. . "FROM " . DB_T_DOCUMENTS . " "
  136. . "INNER JOIN " . DB_T_FILES . " ON " . DB_T_FILES . ".id = " . DB_T_DOCUMENTS . ".id_file "
  137. . "LEFT JOIN " . DB_T_USER . " ON " . DB_T_USER . ".id = " . DB_T_DOCUMENTS . ".id_user_done "
  138. . "WHERE " . DB_T_DOCUMENTS . ".id = :id");
  139. db::bind(':id', $_id);
  140. $row = db::single();
  141. $row["tagsUser"] = tags::idToTtext($row["tagsUser"]);
  142. return $row;
  143. }
  144. }