|
|
@@ -16,8 +16,15 @@ class document
|
|
|
return file::download($_id, DIR_DATAS_DOCS);
|
|
|
}
|
|
|
|
|
|
- static public function deleteFile(string $_id){
|
|
|
- return file::delete($_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(){
|
|
|
@@ -27,15 +34,25 @@ class document
|
|
|
return db::resultset();
|
|
|
}
|
|
|
|
|
|
- public static function delete(int $_id)
|
|
|
+ public static function delete(float $_id)
|
|
|
{
|
|
|
- $tmp = self::get($_id);
|
|
|
-
|
|
|
- db::query("DELETE FROM " . DB_T_DOCUMENTS . " WHERE id = :id");
|
|
|
- db::bind(':id', $_id);
|
|
|
- db::execute();
|
|
|
+ try {
|
|
|
+ db::query("DELETE FROM ". DB_T_DOCUMENT_TAGS ." WHERE id_documents = :id_documents");
|
|
|
+ db::bind(':id_documents', $_id);
|
|
|
+ db::execute();
|
|
|
|
|
|
- return self::deleteFile($tmp["id_file"]);
|
|
|
+ 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()
|
|
|
@@ -43,54 +60,111 @@ class document
|
|
|
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()
|
|
|
{
|
|
|
- /**
|
|
|
- *
|
|
|
- * @var string $idFile
|
|
|
- */
|
|
|
-
|
|
|
- $file = core::getFiles("document-import");
|
|
|
- $idFile = self::uploadFile($file);
|
|
|
-
|
|
|
- $tagsUser = tags::textToId(core::getPost("tagsUser"), 1);
|
|
|
- $tagsSupplier = tags::textToId(core::getPost("tagsSupplier"), 2);
|
|
|
-
|
|
|
- if($idFile != NULL){
|
|
|
- db::query("INSERT INTO " . DB_T_DOCUMENTS . " (id_type, id_file, titre, date, deadline, description, tagsUser, tagsSupplier) VALUES (:id_type, :id_file, :titre, :date, :deadline, :description, :tagsUser, :tagsSupplier)");
|
|
|
- db::bind(':id_type', core::getPost("id_type"));
|
|
|
- db::bind(':id_file', $idFile);
|
|
|
- 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(':tagsUser', $tagsUser);
|
|
|
- db::bind(':tagsSupplier', $tagsSupplier);
|
|
|
+ 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 {
|
|
|
+ $file = core::getFiles("document-import");
|
|
|
+ $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);
|
|
|
|
|
|
- try {
|
|
|
- db::execute();
|
|
|
- alert::recSuccess("Document enregistré avec succès");
|
|
|
- return TRUE;
|
|
|
- } catch (Exception $ex) {
|
|
|
- file::delete($idFile, DIR_DATAS_DOCS);
|
|
|
- alert::recError("Erreur à l'enregistrement du document : " . core::getPost("titre"));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
- } else {
|
|
|
- file::delete($idFile, DIR_DATAS_DOCS);
|
|
|
- alert::recError("Erreur à l'enregistrement de la pièce jointe : " . $file["tmp_name"]);
|
|
|
+ } catch (Exception $ex) {
|
|
|
+ alert::recError("Erreur à l'enregistrement de la liaison : " . $idFile);
|
|
|
return FALSE;
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public static function update()
|
|
|
{
|
|
|
- $tagsUser = tags::textToId(core::getPost("tagsUser"), 1);
|
|
|
- $tagsSupplier = tags::textToId(core::getPost("tagsSupplier"), 2);
|
|
|
+ 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, ";
|
|
|
+ $sql = ", id_user_done = :id_user_done, date_done = CURRENT_TIMESTAMP ";
|
|
|
} else {
|
|
|
$sql = "";
|
|
|
}
|
|
|
@@ -100,10 +174,8 @@ class document
|
|
|
. "titre = :titre, "
|
|
|
. "date = :date, "
|
|
|
. "deadline = :deadline, "
|
|
|
- . "description = :description, "
|
|
|
+ . "description = :description "
|
|
|
. $sql
|
|
|
- . "tagsUser = :tagsUser, "
|
|
|
- . "tagsSupplier = :tagsSupplier "
|
|
|
. "WHERE id = :id");
|
|
|
|
|
|
db::bind(':id_type', core::getPost("id_type"));
|
|
|
@@ -111,8 +183,6 @@ class document
|
|
|
db::bind(':date', core::getPost("date"));
|
|
|
db::bind(':deadline', core::getPost("deadline"));
|
|
|
db::bind(':description', core::getPost("description"));
|
|
|
- db::bind(':tagsUser', $tagsUser);
|
|
|
- db::bind(':tagsSupplier', $tagsSupplier);
|
|
|
db::bind(':id', core::getPost("id"));
|
|
|
|
|
|
if(core::ifPost("done") AND core::getPost("done") == TRUE){
|
|
|
@@ -124,7 +194,7 @@ class document
|
|
|
alert::recSuccess("Document mis à jour avec succès");
|
|
|
return TRUE;
|
|
|
} catch (Exception $ex) {
|
|
|
- alert::recError("Erreur de mise à jour du document");
|
|
|
+ alert::recError("Erreur de mise à jour du document : " . $ex);
|
|
|
return FALSE;
|
|
|
}
|
|
|
}
|
|
|
@@ -152,27 +222,73 @@ class document
|
|
|
db::query("SELECT "
|
|
|
. "" . DB_T_DOCUMENTS . ".id, "
|
|
|
. "" . DB_T_DOCUMENTS . ".id_type, "
|
|
|
- . "" . DB_T_DOCUMENTS . ".id_file, "
|
|
|
. "" . DB_T_DOCUMENTS . ".titre, "
|
|
|
. "" . DB_T_DOCUMENTS . ".date, "
|
|
|
. "" . DB_T_DOCUMENTS . ".deadline, "
|
|
|
. "" . DB_T_DOCUMENTS . ".description, "
|
|
|
- . "" . DB_T_DOCUMENTS . ".tagsUser, "
|
|
|
- . "" . DB_T_DOCUMENTS . ".tagsSupplier, "
|
|
|
. "" . DB_T_DOCUMENTS . ".id_user_done, "
|
|
|
. "" . DB_T_DOCUMENTS . ".date_done, "
|
|
|
- . "CONCAT(" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS doneUser, "
|
|
|
- . "" . DB_T_FILES . ".name, "
|
|
|
- . "CONCAT(ROUND((" . DB_T_FILES . ".size / 1024 / 1024), 2), ' Mo') AS size "
|
|
|
+ . "CONCAT(" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS doneUser "
|
|
|
. "FROM " . DB_T_DOCUMENTS . " "
|
|
|
- . "INNER JOIN " . DB_T_FILES . " ON " . DB_T_FILES . ".id = " . DB_T_DOCUMENTS . ".id_file "
|
|
|
. "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);
|
|
|
- $row = db::single();
|
|
|
- $row["tagsUser"] = tags::idToTtext($row["tagsUser"]);
|
|
|
- $row["tagsSupplier"] = tags::idToTtext($row["tagsSupplier"]);
|
|
|
- return $row;
|
|
|
+ $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;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|