| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- <?php
- class document
- {
-
- static public function uploadFile(array $_temp){
- $tmp = file::record($_temp, DIR_DATAS_DOCS);
- if($tmp != FALSE){
- return $tmp;
- } else {
- return FALSE;
- }
- }
- static public function readFile(string $_id){
- return file::download($_id, DIR_DATAS_DOCS);
- }
- static public function deleteFile(float $_id){
- foreach (self::getFiles($_id) as $file) {
- db::query("DELETE FROM ". DB_T_DOCUMENT_FILES ." WHERE id_files = :id_files");
- db::bind(':id_files', $file["id"]);
- db::execute();
- file::delete($file["id"], DIR_DATAS_DOCS);
- }
- }
- static public function getTypes(){
- db::query("SELECT "
- . "* "
- . "FROM " . DB_T_TYPE_DOCUMENT);
- return db::resultset();
- }
- public static function delete(float $_id)
- {
- try {
- db::query("DELETE FROM ". DB_T_DOCUMENT_TAGS ." WHERE id_documents = :id_documents");
- db::bind(':id_documents', $_id);
- db::execute();
- self::deleteFile($_id);
-
- db::query("DELETE FROM " . DB_T_DOCUMENTS . " WHERE id = :id");
- db::bind(':id', $_id);
- db::execute();
-
- alert::recSuccess("Le document vient d'être supprimé");
- return TRUE;
- } catch (Exception $ex) {
- alert::recError("Erreur à la suppression du document");
- return FALSE;
- }
- }
- public static function lastAdd()
- {
- db::query("SELECT MAX(id) AS id FROM " . DB_T_DOCUMENTS);
- return db::single()["id"];
- }
- private static function addFile(float $_idDocument, string $_idFile)
- {
- db::query("INSERT INTO " . DB_T_DOCUMENT_FILES . " (id_documents, id_files) VALUES (:id_documents, :id_files)");
- db::bind(':id_documents', $_idDocument);
- db::bind(':id_files', $_idFile);
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- return FALSE;
- }
- }
- private static function addTags(float $_idDocument, string $_tags = NULL, float $_type)
- {
- db::query("DELETE FROM " . DB_T_DOCUMENT_TAGS . " WHERE id_documents = :id_documents AND id_type_tags = :id_type_tags");
- db::bind(':id_documents', $_idDocument);
- db::bind(':id_type_tags', $_type);
- db::execute();
-
- if($_tags != NULL){
- $tags = explode(",", $_tags);
- $sqlMaj = "";
- foreach ($tags as $tag) {
- $sqlMaj .= " (:id_documents, ".$tag.", :id_type_tags),";
- }
- $sqlMaj = substr($sqlMaj, 0, -1);
- db::query("INSERT INTO " . DB_T_DOCUMENT_TAGS . " (id_documents, id_tags, id_type_tags) VALUES" . $sqlMaj);
- db::bind(':id_documents', $_idDocument);
- db::bind(':id_type_tags', $_type);
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- return FALSE;
- }
- }
- }
-
- public static function add()
- {
- $file = core::getFiles("document-import");
- $md5 = md5_file($file["tmp_name"]);
- if(file::findM5($md5) == TRUE){
- alert::recError("Ce fichier a déjà été utilisé : " . $file["name"]);
- session::setTemp(core::getPost(), "document");
- } else {
- db::query("INSERT INTO " . DB_T_DOCUMENTS . " (id_type, titre, date, deadline, description, id_user) VALUES (:id_type, :titre, :date, :deadline, :description, :id_user)");
- db::bind(':id_type', core::getPost("id_type"));
- db::bind(':titre', core::getPost("titre"));
- db::bind(':date', core::getPost("date"));
- db::bind(':deadline', core::getPost("deadline"));
- db::bind(':description', core::getPost("description"));
- db::bind(':id_user', session::getId());
-
- try {
- db::execute();
- $lastId = db::lastInsertId();
- } catch (Exception $ex) {
- alert::recError("Erreur à l'enregistrement de la fiche : " . core::getPost("titre"));
- return FALSE;
- }
- try {
- $idFile = self::uploadFile($file);
- } catch (Exception $ex) {
- alert::recError("Erreur à l'enregistrement de la pièce jointe : " . $idFile);
- return FALSE;
- }
- try {
- self::addFile($lastId, $idFile);
- } catch (Exception $ex) {
- alert::recError("Erreur à l'enregistrement de la liaison : " . $idFile);
- return FALSE;
- }
- try {
- $tagsUser = tags::textToId(core::getPost("tagsUser"), 1);
- self::addTags($lastId, $tagsUser, 1);
- $tagsSupplier = tags::textToId(core::getPost("tagsSupplier"), 2);
- self::addTags($lastId, $tagsSupplier, 2);
-
- } catch (Exception $ex) {
- alert::recError("Erreur à l'enregistrement de la liaison : " . $idFile);
- return FALSE;
- }
- return $lastId;
- }
- }
- public static function update()
- {
- try {
- $tagsUser = tags::textToId(core::getPost("tagsUser"), 1);
- self::addTags(core::getPost("id"), $tagsUser, 1);
- $tagsSupplier = tags::textToId(core::getPost("tagsSupplier"), 2); echo $tagsSupplier;
- self::addTags(core::getPost("id"), $tagsSupplier, 2);
- } catch (Exception $ex) {
- alert::recError("Erreur à l'enregistrement de la liaison : " . core::getPost("id"));
- return FALSE;
- }
- if(core::ifPost("done") AND core::getPost("done") == TRUE){
- $sql = ", id_user_done = :id_user_done, date_done = CURRENT_TIMESTAMP ";
- } else {
- $sql = "";
- }
-
- db::query("UPDATE " . DB_T_DOCUMENTS . " SET "
- . "id_type = :id_type, "
- . "titre = :titre, "
- . "date = :date, "
- . "deadline = :deadline, "
- . "description = :description "
- . $sql
- . "WHERE id = :id");
-
- db::bind(':id_type', core::getPost("id_type"));
- db::bind(':titre', core::getPost("titre"));
- db::bind(':date', core::getPost("date"));
- db::bind(':deadline', core::getPost("deadline"));
- db::bind(':description', core::getPost("description"));
- db::bind(':id', core::getPost("id"));
- if(core::ifPost("done") AND core::getPost("done") == TRUE){
- db::bind(':id_user_done', session::getId());
- }
-
- try {
- db::execute();
- alert::recSuccess("Document mis à jour avec succès");
- return TRUE;
- } catch (Exception $ex) {
- alert::recError("Erreur de mise à jour du document : " . $ex);
- return FALSE;
- }
- }
- static public function printFile(string $_id) {
- $filePatch = file::download($_id, DIR_DATAS_DOCS);
-
- if (file_exists($filePatch) && is_readable($filePatch)) {
- $file_info = new finfo(FILEINFO_MIME_TYPE);
- $mime_type = $file_info->file($filePatch);
- header('Content-Type: ' . $mime_type);
- header('Content-Length: ' . filesize($filePatch));
- readfile($filePatch);
- } else {
- echo "Le fichier n'a pas été trouvé ou n'est pas lisible.";
- }
- }
- static public function getList(){
-
- }
- static public function get(float $_id){
- db::query("SELECT "
- . "" . DB_T_DOCUMENTS . ".id, "
- . "" . DB_T_DOCUMENTS . ".id_type, "
- . "" . DB_T_DOCUMENTS . ".titre, "
- . "" . DB_T_DOCUMENTS . ".date, "
- . "" . DB_T_DOCUMENTS . ".deadline, "
- . "" . DB_T_DOCUMENTS . ".description, "
- . "" . DB_T_DOCUMENTS . ".id_user_done, "
- . "" . DB_T_DOCUMENTS . ".date_done, "
- . "CONCAT(" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS doneUser "
- . "FROM " . DB_T_DOCUMENTS . " "
- . "LEFT JOIN " . DB_T_USER . " ON " . DB_T_USER . ".id = " . DB_T_DOCUMENTS . ".id_user_done "
- . "WHERE " . DB_T_DOCUMENTS . ".id = :id");
- db::bind(':id', $_id);
- $document = db::single();
- $document["tagsSupplier"] = self::getTags($_id, 2);
- $document["tagsUser"] = self::getTags($_id, 1);
- $files = self::getFiles($_id);
- return array("document" => $document, "files" => $files);
- }
- static public function getTags(float $_idDocument, float $_idTypeTags){
- db::query("SELECT "
- . "" . DB_T_TAGS . ".label "
- . "FROM " . DB_T_DOCUMENT_TAGS . " "
- . "INNER JOIN " . DB_T_TAGS . " ON " . DB_T_TAGS . ".id = " . DB_T_DOCUMENT_TAGS . ".id_tags "
- . "WHERE " . DB_T_DOCUMENT_TAGS . ".id_documents = :idDocument AND " . DB_T_DOCUMENT_TAGS . ".id_type_tags = :idTypeTags "
- . "ORDER BY " . DB_T_DOCUMENT_TAGS . ".creer");
- db::bind(':idDocument', $_idDocument);
- db::bind(':idTypeTags', $_idTypeTags);
- $tmp = db::resultset();
- if(isset($tmp[0])){
- $return = NULL;
- foreach ($tmp as $value) {
- $return .= $value["label"].",";
- }
-
- $return = substr($return, 0, -1);
- return $return;
- } else {
- return NULL;
- }
-
- }
- static public function getFiles(float $_idDocument){
- db::query("SELECT "
- . "" . DB_T_FILES . ".id, "
- . "" . DB_T_FILES . ".name, "
- . "" . DB_T_FILES . ".size, "
- . "" . DB_T_FILES . ".creer, "
- . "" . DB_T_FILES . ".id_user, "
- . "CONCAT(" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS user "
- . "FROM " . DB_T_DOCUMENT_FILES . " "
- . "INNER JOIN " . DB_T_FILES . " ON " . DB_T_FILES . ".id = " . DB_T_DOCUMENT_FILES . ".id_files "
- . "INNER JOIN " . DB_T_USER . " ON " . DB_T_USER . ".id = " . DB_T_FILES . ".id_user "
- . "WHERE " . DB_T_DOCUMENT_FILES . ".id_documents = :id "
- . "ORDER BY " . DB_T_FILES . ".creer");
- db::bind(':id', $_idDocument);
- $tmp = db::resultset();
- if(isset($tmp[0])){
- return $tmp;
- } else {
- return NULL;
- }
- }
- }
|