Browse Source

Documentation des class 1

stany.ferer 3 months ago
parent
commit
7dcb78f0ae

+ 136 - 0
core/class/access.class.php

@@ -1,7 +1,23 @@
 <?php
+/**
+ * Classe `access`
+ *
+ * Cette classe gère les droits d'accès des utilisateurs dans le système. Elle inclut des fonctionnalités pour :
+ * - Vérifier si un utilisateur a accès à une ressource spécifique.
+ * - Gérer les listes blanches et les accès hors ligne.
+ * - Récupérer et manipuler les types d'accès et les rôles des utilisateurs.
+ * - Enregistrer et mettre à jour les droits d'accès dans la base de données.
+ * - Générer des menus déroulants et des tableaux pour la gestion des accès.
+ */
 
 class access
 {
+    /**
+     * Vérifie si un élément est accessible.
+     *
+     * @param string $_element L'élément à vérifier.
+     * @return bool TRUE si l'accès est autorisé, FALSE sinon.
+     */
     public static function check(string $_element)
     {
         // Eléments autorisé sans authentification
@@ -18,16 +34,34 @@ class access
         }
     }
 
+    /**
+     * Vérifie si un élément est accessible hors ligne.
+     *
+     * @param string $_string L'élément à vérifier.
+     * @return bool TRUE si l'accès est autorisé hors ligne, FALSE sinon.
+     */
     public static function checkAccessOffLine(string $_string)
     {
         return in_array($_string, OFF_LINE);
     }
 
+    /**
+     * Vérifie si un élément est dans la liste blanche.
+     *
+     * @param string $_string L'élément à vérifier.
+     * @return bool TRUE si l'élément est dans la liste blanche, FALSE sinon.
+     */
     public static function checkAccessWhite(string $_string)
     {
         return in_array($_string, WHITE_ACCESS);
     }
 
+    /**
+     * Récupère la liste des accès pour un type d'utilisateur donné.
+     *
+     * @param int|null $_idType L'ID du type d'utilisateur (optionnel).
+     * @return array|bool La liste des accès ou FALSE en cas d'erreur.
+     */
     public static function getAccessList(?int $_idType = NULL)
     {
         ($_idType == NULL) ? $idType = session::getType() : $idType = $_idType;
@@ -61,6 +95,12 @@ class access
         }
     }
 
+    /**
+     * Récupère les types d'utilisateurs.
+     *
+     * @param bool $_expect TRUE pour exclure les contrôleurs, FALSE sinon.
+     * @return array|bool Les types d'utilisateurs ou FALSE en cas d'erreur.
+     */
     public static function getTypesUsers(bool $_expect = FALSE)
     {
         $except = ($_expect == FALSE) ? NULL : " WHERE " . DB_T_TYPE_USER . ".id != 2"; // Sauf les contrôleurs
@@ -74,12 +114,25 @@ class access
         }
     }
 
+    /**
+     * Vérifie si une exception d'accès est limitée.
+     *
+     * @param string $_exception L'exception à vérifier.
+     * @return bool TRUE si l'exception est limitée, FALSE sinon.
+     */
     public static function ifLimitAccessException(string $_exception)
     {
         $accessList = self::getAccessList(session::getType());
         return in_array($_exception, $accessList["exception"]) ? TRUE : FALSE;
     }
 
+    /**
+     * Vérifie si un accès est autorisé.
+     *
+     * @param string $_accessAsk L'accès à vérifier.
+     * @param int|null $_idType L'ID du type d'utilisateur (optionnel).
+     * @return bool TRUE si l'accès est autorisé, FALSE sinon.
+     */
     public static function ifAccesss(string $_accessAsk, ?int $_idType = NULL)
     {
         if (session::isConnect() == FALSE and self::checkAccessOffLine($_accessAsk)) {
@@ -105,6 +158,13 @@ class access
         }
     }
 
+    /**
+     * Vérifie si un accès générique est autorisé.
+     *
+     * @param string $_string L'accès à vérifier.
+     * @param array $_access_list La liste des accès.
+     * @return string|bool Le chemin générique si autorisé, FALSE sinon.
+     */
     private static function checkGenericAccess(string $_string, array $_access_list)
     {
         $string = explode("-", $_string)[0];
@@ -112,6 +172,12 @@ class access
         return ($check == TRUE) ? $string : FALSE;
     }
 
+    /**
+     * Sépare les accès à partir d'une chaîne.
+     *
+     * @param string $_string La chaîne à traiter.
+     * @return array Les accès séparés.
+     */
     private static function splitAccess(string $_string)
     {
         $return = array();
@@ -122,11 +188,24 @@ class access
         return $return;
     }
 
+    /**
+     * Ajoute des accès à un tableau existant.
+     *
+     * @param string $_string Les accès à ajouter.
+     * @param array $_array Le tableau existant.
+     * @return array Le tableau mis à jour.
+     */
     private static function addInArray(string $_string, array $_array)
     {
         return array_unique(array_merge(self::splitAccess($_string), $_array));
     }
 
+    /**
+     * Récupère la liste des types d'utilisateurs, avec des exceptions optionnelles.
+     *
+     * @param array|null $_idExceptions Les IDs à exclure (optionnel).
+     * @return array|bool La liste des types ou FALSE en cas d'erreur.
+     */
     public static function getListTypeUser(?array $_idExceptions = NULL )
     {
         $return = array();
@@ -144,6 +223,12 @@ class access
         }
     }
 
+    /**
+     * Affiche une ligne de tableau pour les accès.
+     *
+     * @param array $valueAccess Les données d'accès.
+     * @return void
+     */
     public static function printRenderAccessRow(array $valueAccess){
         if (!is_null($valueAccess["exception"])) { 
             $tooltip = '<span class="ms-2" data-bs-toggle="tooltip" title="Possibilité d\'accès partiel avec les éléments cachés suivants : ' . htmlspecialchars($valueAccess["exception"]) . '"><i class="bi bi-info-circle-fill" style="color:#ffc107;"></i></span>';
@@ -172,6 +257,13 @@ class access
         echo '</tr>';
     }
 
+    /**
+     * Génère un menu déroulant pour les accès.
+     *
+     * @param array|null $_access Les données d'accès (optionnel).
+     * @param string|null $_exception L'exception associée (optionnel).
+     * @return string Le HTML du menu déroulant.
+     */
     private static function getSelectAccess(?array $_access = NULL, ?string $_exception = NULL){
         if (!is_null($_exception)) {
             $options = [
@@ -207,6 +299,13 @@ class access
         return $return;
     }
 
+    /**
+     * Complète les accès avec des valeurs par défaut.
+     *
+     * @param string $_idAccess L'ID de l'accès.
+     * @param array|null $_access Les données d'accès existantes (optionnel).
+     * @return array Les accès complétés.
+     */
     private static function completeIdemAccess(string $_idAccess, ?array $_access = NULL){
         $roles = self::getListTypeUser([2]); // Tous les types sauf les contrôleurs
         foreach ($roles as $keyRole => $valueRole) {
@@ -225,6 +324,11 @@ class access
         return $return;
     }
 
+    /**
+     * Récupère la liste complète des accès.
+     *
+     * @return array La liste complète des accès.
+     */
     public static function finalCompletAccess(){
         $access = access::getTypesAccessRecording();
         $return = [];
@@ -237,6 +341,11 @@ class access
         return $return;
     }
 
+    /**
+     * Récupère les types d'accès.
+     *
+     * @return array|bool Les types d'accès ou FALSE en cas d'erreur.
+     */
     private static function getTypesAccess(){
         db::query("SELECT "
             . DB_T_ACCESS . ".id, "
@@ -262,6 +371,12 @@ class access
         }
     }
 
+    /**
+     * Génère un libellé pour un accès.
+     *
+     * @param array $_array Les données de l'accès.
+     * @return string Le libellé généré.
+     */
     private static function getTitleLabel(array $_array){
         if ($_array["show"] == 1 AND $_array["add"] == 0) {
             return "Accès à <strong>" . $_array["label"] . "</strong> en lecture";
@@ -272,6 +387,11 @@ class access
         }
     }
 
+    /**
+     * Récupère les types d'accès pour l'enregistrement.
+     *
+     * @return array Les types d'accès.
+     */
     public static function getTypesAccessRecording(){
         $return = [];
         foreach (self::getTypesAccess() as $valueAccess) {
@@ -294,6 +414,11 @@ class access
         return $return;
     }
 
+    /**
+     * Récupère les accès par rôle.
+     *
+     * @return array Les accès par rôle.
+     */
     public static function getAccessByRole(){
         $getAccessByRole = self::getTypesAccessRecording();
         $allTypeRole = self::getTypesUsers();
@@ -316,6 +441,12 @@ class access
         return $return;
     }
 
+    /**
+     * Récupère l'ID d'une exception pour un accès donné.
+     *
+     * @param int $_idAccess L'ID de l'accès.
+     * @return array|bool Les données de l'exception ou FALSE en cas d'erreur.
+     */
     private static function getIdException(int $_idAccess){
         db::query("SELECT "
             . DB_T_ACCESS_EXCEPTION . ".id, "
@@ -331,6 +462,11 @@ class access
         }
     }
 
+    /**
+     * Enregistre les accès dans la base de données.
+     *
+     * @return bool TRUE si l'enregistrement a réussi, FALSE sinon.
+     */
     public static function recordAccess(){
         $post = core::getPost();
         $data = [];

+ 114 - 10
core/class/alert.class.php

@@ -1,7 +1,22 @@
 <?php
 
+/**
+ * Classe `alert`
+ *
+ * Cette classe gère les alertes dans le système. Elle permet de :
+ * - Enregistrer des messages de succès, d'avertissement et d'erreur dans la session.
+ * - Récupérer et afficher les messages enregistrés.
+ * - Gérer les onglets actifs et les erreurs liées aux champs de formulaire.
+ * - Afficher les alertes sous forme de toasts avec des styles personnalisés.
+ */
 class alert
 {
+    /**
+     * Enregistre un message de succès dans la session.
+     *
+     * @param string $_string Le message de succès à enregistrer.
+     * @return void
+     */
     public static function recSuccess(string $_string)
     {
         if (empty($_SESSION["alert"]["success"])) {
@@ -10,6 +25,12 @@ class alert
         array_push($_SESSION["alert"]["success"], $_string);
     }
 
+    /**
+     * Enregistre un message d'avertissement dans la session.
+     *
+     * @param string $_string Le message d'avertissement à enregistrer.
+     * @return void
+     */
     public static function recWarning(string $_string)
     {
         if (empty($_SESSION["alert"]["warning"])) {
@@ -18,6 +39,12 @@ class alert
         array_push($_SESSION["alert"]["warning"], $_string);
     }
 
+    /**
+     * Enregistre un message d'erreur dans la session.
+     *
+     * @param string $_string Le message d'erreur à enregistrer.
+     * @return void
+     */
     public static function recError(string $_string)
     {
         if (empty($_SESSION["alert"]["error"])) {
@@ -26,11 +53,22 @@ class alert
         array_push($_SESSION["alert"]["error"], $_string);
     }
 
+    /**
+     * Enregistre un onglet actif dans la session.
+     *
+     * @param string $_string L'onglet actif à enregistrer.
+     * @return void
+     */
     public static function recTab(string $_string)
     {
         $_SESSION["alert"]["tab"] = $_string;
     }
 
+    /**
+     * Récupère les messages de succès enregistrés.
+     *
+     * @return array|bool Les messages de succès ou FALSE s'il n'y en a pas.
+     */
     public static function getSuccess()
     {
         if (!empty($_SESSION["alert"]["success"])) {
@@ -40,6 +78,11 @@ class alert
         }
     }
 
+    /**
+     * Récupère les messages d'avertissement enregistrés.
+     *
+     * @return array|bool Les messages d'avertissement ou FALSE s'il n'y en a pas.
+     */
     public static function getWarning()
     {
         if (!empty($_SESSION["alert"]["warning"])) {
@@ -49,6 +92,11 @@ class alert
         }
     }
 
+    /**
+     * Récupère les messages d'erreur enregistrés.
+     *
+     * @return array|bool Les messages d'erreur ou FALSE s'il n'y en a pas.
+     */
     public static function getError()
     {
         if (!empty($_SESSION["alert"]["error"])) {
@@ -58,29 +106,55 @@ class alert
         }
     }
 
+    /**
+     * Récupère l'onglet actif enregistré.
+     *
+     * @return string|bool L'onglet actif ou FALSE s'il n'y en a pas.
+     */
     public static function getTab()
     {
         return (isset($_SESSION["alert"]["tab"])) ? $_SESSION["alert"]["tab"] : FALSE;
     }
 
+    /**
+     * Vérifie s'il y a des messages de succès enregistrés.
+     *
+     * @return bool TRUE s'il y a des messages de succès, FALSE sinon.
+     */
     public static function ifSuccess()
     {
         return (empty($_SESSION["alert"]["success"])) ? FALSE : TRUE;
     }
 
+    /**
+     * Vérifie s'il y a des messages d'erreur enregistrés.
+     *
+     * @return bool TRUE s'il y a des messages d'erreur, FALSE sinon.
+     */
     public static function ifError()
     {
         return (empty($_SESSION["alert"]["error"])) ? FALSE : TRUE;
     }
 
+    /**
+     * Vérifie s'il y a un onglet actif enregistré.
+     *
+     * @return bool TRUE s'il y a un onglet actif, FALSE sinon.
+     */
     public static function ifTab()
     {
         return (empty($_SESSION["alert"]["tab"])) ? FALSE : TRUE;
     }
 
+    /**
+     * Génère le HTML pour afficher une liste de messages.
+     *
+     * @param array|null $_array La liste des messages à afficher.
+     * @return string|null Le HTML généré ou NULL si aucun message.
+     */
     public static function printAlert(?array $_array = NULL)
     {
-        if($_array == NULL){
+        if ($_array == NULL) {
             return NULL;
         }
         $return = NULL;
@@ -90,6 +164,12 @@ class alert
         return $return;
     }
 
+    /**
+     * Enregistre un message d'erreur lié à un champ de formulaire.
+     *
+     * @param string $_string Le champ de formulaire en erreur.
+     * @return void
+     */
     public static function recErrorInput(string $_string)
     {
         if (empty($_SESSION["alert"]["input"])) {
@@ -98,54 +178,78 @@ class alert
         array_push($_SESSION["alert"]["input"], $_string);
     }
 
+    /**
+     * Vérifie si un champ de formulaire est en erreur.
+     *
+     * @param string $_string Le champ de formulaire à vérifier.
+     * @return bool TRUE si le champ est en erreur, FALSE sinon.
+     */
     public static function ifErrorInput(string $_string)
     {
         return (in_array($_string, $_SESSION["alert"]["input"])) ? TRUE : FALSE;
     }
 
+    /**
+     * Affiche une alerte sous forme de toast.
+     *
+     * @param string $_idAlert L'ID de l'alerte.
+     * @param string $_style Le style CSS de l'alerte.
+     * @param string $_icon L'icône de l'alerte.
+     * @param array|null $_texte Le texte de l'alerte.
+     * @return void
+     */
     private static function printToast(string $_idAlert, string $_style, string $_icon, ?array $_texte = NULL)
     {
         $text = ($_texte != NULL) ? self::printAlert($_texte) : NULL;
-        
+
         echo '  <div  id="' . $_idAlert . '" class="toast hide" role="alert" aria-live="assertive" aria-atomic="true" data-delay="' . TIME_TOAST_ALERT . '" style="margin-top:10px; ' . $_style . '">
                     <div class="toast-header">' . $_icon . '</div><div class="toast-body" id="' . $_idAlert . 'Txt">' . $text . '</div>
                 </div>';
     }
 
+    /**
+     * Affiche toutes les alertes enregistrées.
+     *
+     * @return void
+     */
     public static function show()
     {
-        
         historique::recordLogs();
 
-        echo '<div class="position-fixed bottom-0 right-0 p-3" style="z-index: 5; right: 5px; bottom: 0;">'; 
+        echo '<div class="position-fixed bottom-0 right-0 p-3" style="z-index: 5; right: 5px; bottom: 0;">';
 
         $idAlert = "printToastSuccess";
-        $texte1 = (self::getSuccess()) ?  self::getSuccess() : NULL;
+        $texte1 = (self::getSuccess()) ? self::getSuccess() : NULL;
         $style = 'background:#d4edda;';
         $icon = icon::getFont(["type" => "info", "color" => "green", "size" => "18px"]) . ' <strong style="color:green; margin-left:5px;" class="mr-auto">Succès</strong>';
         self::printToast($idAlert, $style, $icon, $texte1);
 
         $idAlert = "printToastWarning";
-        $texte2 = (self::getWarning()) ?  self::getWarning() : NULL;
+        $texte2 = (self::getWarning()) ? self::getWarning() : NULL;
         $style = 'background:#fff3cd;';
         $icon = icon::getFont(["type" => "warning", "color" => "orange", "size" => "18px"]) . ' <strong style="color:orange; margin-left:5px;" class="mr-auto">Attention</strong>';
         self::printToast($idAlert, $style, $icon, $texte2);
 
         $idAlert = "printToastError";
-        $texte3 = (self::getError()) ?  self::getError() : NULL;
+        $texte3 = (self::getError()) ? self::getError() : NULL;
         $style = 'background:#f8d7da;';
         $icon = icon::getFont(["type" => "alert", "color" => "red", "size" => "18px"]) . ' <strong style="color:red; margin-left:5px;" class="mr-auto">Erreur</strong>';
         self::printToast($idAlert, $style, $icon, $texte3);
 
         echo '</div>';
 
-        echo ($texte1 == NULL) ?  '' : '<script>$("#printToastSuccess").toast("show");</script>';
-        echo ($texte2 == NULL) ?  '' : '<script>$("#printToastWarning").toast("show");</script>';
-        echo ($texte3 == NULL) ?  '' : '<script>$("#printToastError").toast("show");</script>';
+        echo ($texte1 == NULL) ? '' : '<script>$("#printToastSuccess").toast("show");</script>';
+        echo ($texte2 == NULL) ? '' : '<script>$("#printToastWarning").toast("show");</script>';
+        echo ($texte3 == NULL) ? '' : '<script>$("#printToastError").toast("show");</script>';
 
         self::destroyAlert();
     }
 
+    /**
+     * Supprime toutes les alertes enregistrées.
+     *
+     * @return void
+     */
     public static function destroyAlert()
     {
         unset($_SESSION["alert"]);

+ 51 - 3
core/class/backup.class.php

@@ -1,7 +1,23 @@
 <?php
-
+/**
+ * Classe `backup`
+ *
+ * Cette classe gère les opérations de sauvegarde et de restauration des données.
+ *
+ * Fonctionnalités principales :
+ * - Création de sauvegardes incluant la base de données et les fichiers.
+ * - Restauration des sauvegardes à partir de fichiers ZIP.
+ * - Gestion des fichiers de sauvegarde (scan, suppression, récupération du dernier fichier).
+ *
+ * @package Core\Class
+ */
 class backup
 {
+    /**
+     * Crée un fichier de sauvegarde (backup) contenant la base de données et les fichiers.
+     *
+     * @return bool TRUE si la sauvegarde a été créée avec succès, FALSE en cas d'erreur.
+     */
     public static function create()
     {
         try {
@@ -21,6 +37,12 @@ class backup
         }
     }
 
+    /**
+     * Restaure un fichier de sauvegarde (backup).
+     *
+     * @param string $_zip Le chemin du fichier ZIP à restaurer.
+     * @return bool TRUE si la restauration a réussi, FALSE en cas d'erreur.
+     */
     public static function restore(string $_zip)
     {
         $tmpZip = str_replace(DIR_BACKUP, DIR_TEMP, $_zip);
@@ -43,6 +65,12 @@ class backup
         return FALSE;
     }
 
+    /**
+     * Crée un dump de la base de données MySQL.
+     *
+     * @param string $_dir Le répertoire où le dump sera enregistré.
+     * @return string|bool Le nom du fichier de dump ou FALSE en cas d'erreur.
+     */
     public static function dumpMysql(string $_dir)
     {
         $backupFile = DB_NAME . ".Mysql";
@@ -55,9 +83,14 @@ class backup
         }
     }
 
+    /**
+     * Restaure une base de données MySQL à partir d'un fichier de dump.
+     *
+     * @param string $_backupFile Le chemin du fichier de dump à restaurer.
+     * @return bool TRUE si la restauration a réussi, FALSE en cas d'erreur.
+     */
     public static function dumpMysqlRestore(string $_backupFile)
     {
-        // Importer les données dans la nouvelle base
         $importCommand = "mysql -h " . escapeshellarg(DB_HOST) . " -u " . escapeshellarg(DB_USER) . " -p" . escapeshellarg(DB_PASS) . " " . DB_NAME . " < " . escapeshellarg($_backupFile);
         system($importCommand, $importResult);
         if ($importResult !== 0) {
@@ -68,6 +101,11 @@ class backup
         return true;
     }
 
+    /**
+     * Scanne le dossier des sauvegardes pour récupérer les fichiers disponibles.
+     *
+     * @return array Un tableau contenant les informations des fichiers de sauvegarde.
+     */
     public static function scanFolder()
     {
         $tempArray = array();
@@ -86,6 +124,11 @@ class backup
         return $tempArray;
     }
 
+    /**
+     * Récupère le dernier fichier de sauvegarde disponible.
+     *
+     * @return string Le nom du dernier fichier de sauvegarde.
+     */
     public static function last()
     {
         $return = [];
@@ -96,6 +139,12 @@ class backup
         return array_values($return)[0]["file"];
     }
 
+    /**
+     * Supprime un fichier de sauvegarde.
+     *
+     * @param string $_nameBackup Le nom du fichier de sauvegarde à supprimer.
+     * @return bool TRUE si la suppression a réussi, FALSE en cas d'erreur.
+     */
     public static function delete(string $_nameBackup)
     {
         if(file_exists("/" . DIR_BACKUP . "/" . $_nameBackup)){
@@ -107,5 +156,4 @@ class backup
             return FALSE;
         }
     }
-
 }

+ 198 - 28
core/class/banque.class.php

@@ -1,18 +1,38 @@
 <?php
-
+/**
+ * Classe `banque`
+ *
+ * Cette classe gère les opérations liées aux comptes bancaires, telles que la création,
+ * la mise à jour, la suppression, et la gestion des lignes associées.
+ *
+ * Fonctionnalités principales :
+ * - Gestion des comptes bancaires (ajout, mise à jour, suppression).
+ * - Gestion des lignes associées aux comptes (ajout, suppression, récupération).
+ * - Importation et traitement des fichiers CSV pour les comptes bancaires.
+ * - Génération de menus et affichage de formulaires pour les comptes.
+ *
+ * @package Core\Class
+ */
 class banque
 {
-
+    /**
+     * Récupère tous les comptes bancaires.
+     *
+     * @return array|bool La liste des comptes ou FALSE en cas d'erreur.
+     */
     public static function getAll()
     {
-        db::query("SELECT "
-            . "* "
-            . "FROM " . DB_T_BANQUE_COMPTES );
-            return db::resultset();
+        db::query("SELECT * FROM " . DB_T_BANQUE_COMPTES);
+        return db::resultset();
     }
 
-    public static function update(){
-        
+    /**
+     * Met à jour un compte bancaire.
+     *
+     * @return bool TRUE si la mise à jour a réussi, FALSE en cas d'erreur.
+     */
+    public static function update()
+    {
         if(core::ifPost("solde")){
                 $sql = ", solde = :solde, solde_date = :solde_date, import = :import ";
             } else {
@@ -49,8 +69,14 @@ class banque
             }
     }
 
-    public static function delete(int $_id){
-        
+    /**
+     * Supprime un compte bancaire.
+     *
+     * @param int $_id L'ID du compte à supprimer.
+     * @return bool TRUE si la suppression a réussi, FALSE en cas d'erreur.
+     */
+    public static function delete(int $_id)
+    {
         db::query("DELETE FROM " . DB_T_BANQUE_COMPTES
                 . " WHERE id = :id");
                 db::bind(':id', $_id);
@@ -64,8 +90,14 @@ class banque
             }
     }
 
-    public static function reset(int $_id){
-        
+    /**
+     * Réinitialise les lignes d'un compte bancaire.
+     *
+     * @param int $_id L'ID du compte à réinitialiser.
+     * @return bool TRUE si la réinitialisation a réussi, FALSE en cas d'erreur.
+     */
+    public static function reset(int $_id)
+    {
         db::query("DELETE FROM " . DB_T_BANQUE_LIGNES
                 . " WHERE id_compte = :id");
                 db::bind(':id', $_id);
@@ -79,8 +111,13 @@ class banque
             }
     }
 
-    public static function add(){
-        
+    /**
+     * Ajoute un nouveau compte bancaire.
+     *
+     * @return int|bool L'ID du compte créé ou FALSE en cas d'erreur.
+     */
+    public static function add()
+    {
         db::query("INSERT INTO " . DB_T_BANQUE_COMPTES . " (label, compte, commentaire, solde, solde_date, icon, import) VALUES (:label, :compte, :commentaire, :solde, :solde_date, :icon, :import)");
         db::bind(':label', core::getPost("label"));
         db::bind(':compte', core::getPost("compte"));
@@ -100,14 +137,27 @@ class banque
             }
     }
 
-    public static function menu(){
+    /**
+     * Génère le menu des comptes bancaires.
+     *
+     * @return void
+     */
+    public static function menu()
+    {
         banque::getAll();
         foreach (self::getAll() as $value) {
             core::elementMenu("compte-" . $value["id"], "/compte-" . $value["id"] . ".html", $value["label"], NULL, $value["icon"]);
         }
     }
 
-    public static function printFormCompte(?array $_array = NULL) {
+    /**
+     * Affiche le formulaire pour ajouter ou modifier un compte bancaire.
+     *
+     * @param array|null $_array Les données du compte (optionnel).
+     * @return void
+     */
+    public static function printFormCompte(?array $_array = NULL)
+    {
         if($_array == NULL){
             $_array = ["id" => "add", "label" => NULL, "compte" => NULL, "solde" => NULL, "solde_date" => NULL, "icon" => NULL, "commentaire" => NULL];
             $txtSubmit = "Enregistrer un nouveau compte";
@@ -171,6 +221,12 @@ class banque
         echo "</div>";
     }
 
+    /**
+     * Compte le nombre de lignes associées à un compte bancaire.
+     *
+     * @param int|string $_id L'ID du compte ou "add" pour un nouveau compte.
+     * @return int Le nombre de lignes associées.
+     */
     public static function countLines(int|string $_id)
     {
         if($_id == "add"){
@@ -185,7 +241,13 @@ class banque
             $nb = db::single()["nb"];
             return (!empty($nb)) ? $nb : 0;
     }
-    
+
+    /**
+     * Récupère la dernière ligne enregistrée pour un compte bancaire.
+     *
+     * @param int $_id L'ID du compte.
+     * @return array|bool Les données de la dernière ligne ou FALSE en cas d'erreur.
+     */
     public static function lastArrayRecord(int $_id)
     {
         db::query("SELECT "
@@ -197,7 +259,13 @@ class banque
             db::bind(':id', $_id);
             return db::single();
     }
-    
+
+    /**
+     * Récupère la date de la dernière ligne enregistrée pour un compte bancaire.
+     *
+     * @param int $_id L'ID du compte.
+     * @return string|null La date de la dernière ligne ou NULL si aucune ligne.
+     */
     public static function lastRecord(int $_id)
     {
         db::query("SELECT "
@@ -210,7 +278,13 @@ class banque
             $last = db::single();
             return (!empty($last["creer"])) ? $last["creer"] : NULL;
     }
-    
+
+    /**
+     * Récupère les informations initiales d'un compte bancaire.
+     *
+     * @param int $_id L'ID du compte.
+     * @return array Les informations initiales du compte.
+     */
     public static function getInitial(int $_id)
     {
         $tmp = self::getInitialCompte($_id );
@@ -227,6 +301,12 @@ class banque
         return $return;
     }
 
+    /**
+     * Récupère les informations d'un compte bancaire.
+     *
+     * @param int $_id L'ID du compte.
+     * @return array|bool Les informations du compte ou FALSE en cas d'erreur.
+     */
     public static function getInitialCompte(int $_id)
     {
         db::query("SELECT "
@@ -236,7 +316,13 @@ class banque
             db::bind(':id', $_id);
             return db::single();
     }
-    
+
+    /**
+     * Récupère les lignes associées à un compte bancaire.
+     *
+     * @param int $_id L'ID du compte.
+     * @return array|bool Les lignes du compte ou FALSE en cas d'erreur.
+     */
     public static function getLignes(int $_id)
     {
         db::query("SELECT "
@@ -253,6 +339,12 @@ class banque
             return db::resultset();
     }
 
+    /**
+     * Récupère l'état actuel d'un compte bancaire.
+     *
+     * @param int $_id L'ID du compte.
+     * @return array|bool L'état du compte ou FALSE en cas d'erreur.
+     */
     public static function getEtatCompte(int $_id)
     {
         db::query("SELECT "
@@ -265,6 +357,11 @@ class banque
             return db::single();
     }
 
+    /**
+     * Récupère l'historique des fichiers CSV importés.
+     *
+     * @return array|bool L'historique des fichiers ou FALSE en cas d'erreur.
+     */
     public static function getHistoriqueCSV()
     {
         db::query("SELECT "
@@ -279,6 +376,13 @@ class banque
         return db::resultset();
     }
 
+    /**
+     * Ajoute un fichier CSV à l'historique.
+     *
+     * @param string $_md5 Le hash MD5 du fichier.
+     * @param int $_id_compte L'ID du compte associé.
+     * @return bool TRUE si l'ajout a réussi, FALSE en cas d'erreur.
+     */
     public static function addMd5CSV(string $_md5, int $_id_compte)
     {
         db::query("INSERT INTO " . DB_T_BANQUE_CSV . " (md5, id_compte) VALUES (:md5, :id_compte)");
@@ -293,6 +397,12 @@ class banque
         }
     }
 
+    /**
+     * Vérifie si un fichier CSV a déjà été importé.
+     *
+     * @param string $_md5 Le hash MD5 du fichier.
+     * @return bool TRUE si le fichier existe, FALSE sinon.
+     */
     public static function findMd5(string $_md5)
     {
         db::query("SELECT "
@@ -309,7 +419,15 @@ class banque
             return db::single()["id"];
     }
 
-    public static function recordLigne(array $_array, int $_id){
+    /**
+     * Enregistre une ligne dans un compte bancaire.
+     *
+     * @param array $_array Les données de la ligne.
+     * @param int $_id L'ID du compte.
+     * @return bool TRUE si l'enregistrement a réussi, FALSE sinon.
+     */
+    public static function recordLigne(array $_array, int $_id)
+    {
         if(self::findMd5($_array["md5"]) == FALSE){
             
             db::query("INSERT INTO " . DB_T_BANQUE_LIGNES . " (id_compte, date, label, debit, credit, solde, md5) VALUES (:id_compte, :date, :label, :debit, :credit, :solde, :md5)");
@@ -332,7 +450,15 @@ class banque
         return FALSE;
     }
 
-    public static function recordLignes(array $_array, int $_id){
+    /**
+     * Enregistre plusieurs lignes dans un compte bancaire.
+     *
+     * @param array $_array Les données des lignes.
+     * @param int $_id L'ID du compte.
+     * @return int Le nombre de lignes enregistrées.
+     */
+    public static function recordLignes(array $_array, int $_id)
+    {
         $z = 0;
         foreach ($_array as $values) {
             if(self::recordLigne($values, $_id) == TRUE){
@@ -342,7 +468,14 @@ class banque
         return $z;
     }
 
-    public static function readCompte(array $_temp) {
+    /**
+     * Lit un fichier CSV pour un compte bancaire.
+     *
+     * @param array $_temp Les informations du fichier temporaire.
+     * @return array|bool Les données du fichier ou FALSE en cas d'erreur.
+     */
+    public static function readCompte(array $_temp)
+    {
         $data = [];
 
         if (!file_exists($_temp['tmp_name']) || !is_readable($_temp['tmp_name'])) {
@@ -394,7 +527,15 @@ class banque
         return $data;
     }
 
-    public static function transformerChaineEnNombre(string $_chaine, bool $_negatif = FALSE) {
+    /**
+     * Convertit une chaîne en nombre.
+     *
+     * @param string $_chaine La chaîne à convertir.
+     * @param bool $_negatif Indique si le nombre est négatif.
+     * @return float Le nombre converti.
+     */
+    public static function transformerChaineEnNombre(string $_chaine, bool $_negatif = FALSE)
+    {
         // Supprimer les tirets "-"
         if($_negatif == 0) {
             $chaine = str_replace('-', '', $_chaine);
@@ -411,7 +552,14 @@ class banque
         return $nombre;
     }
 
-    public static function convertToMySqlDate($date) {
+    /**
+     * Convertit une date au format dd/mm/yyyy en format MySQL (yyyy-mm-dd).
+     *
+     * @param string $date La date à convertir.
+     * @return string|bool La date convertie ou FALSE si la conversion échoue.
+     */
+    public static function convertToMySqlDate($date)
+    {
         // Crée un objet DateTime à partir de la date au format dd/mm/yyyy
         $dateTime = DateTime::createFromFormat('d/m/Y', $date);
         
@@ -424,15 +572,37 @@ class banque
         return $dateTime->format('Y-m-d');
     }
 
-    public static function getEuro(float $_decimal){
+    /**
+     * Formate un nombre décimal en euros.
+     *
+     * @param float $_decimal Le nombre à formater.
+     * @return string Le nombre formaté en euros.
+     */
+    public static function getEuro(float $_decimal)
+    {
         return number_format($_decimal, 2, ',', '.') . " €";
     }
 
-    public static function fileName(string $_compte){
+    /**
+     * Génère un nom de fichier à partir d'un numéro de compte.
+     *
+     * @param string $_compte Le numéro de compte.
+     * @return string Le nom de fichier généré.
+     */
+    public static function fileName(string $_compte)
+    {
         return str_replace(' ', '', $_compte);
     }
 
-    public static function numberAccountCreditMutuel(string $_compte, string $_fileName){
+    /**
+     * Vérifie si un numéro de compte correspond à un fichier Crédit Mutuel.
+     *
+     * @param string $_compte Le numéro de compte.
+     * @param string $_fileName Le nom du fichier.
+     * @return bool TRUE si le fichier correspond, FALSE sinon.
+     */
+    public static function numberAccountCreditMutuel(string $_compte, string $_fileName)
+    {
         $tmpCompte = str_replace(' ', '', $_compte);
         $compte = substr($tmpCompte, 5);
         return (str_contains($_fileName, $compte)) ? TRUE : FALSE;

+ 90 - 10
core/class/blacklist.class.php

@@ -1,25 +1,79 @@
 <?php
+/**
+ * Classe `blacklist`
+ *
+ * Cette classe gère la mise en liste noire des adresses IP en fonction des tentatives
+ * répétées d'accès à des ressources protégées. Elle permet de :
+ * - Suivre les tentatives d'accès via un fichier de log.
+ * - Blacklister les adresses IP après un certain nombre de tentatives.
+ * - Vérifier si une adresse IP est blacklistée.
+ * - Gérer les extensions d'URL interdites.
+ */
 
 class blacklist {
 
+    /**
+     * Fichier de log des tentatives.
+     *
+     * @var string
+     */
     private static $log_file = '../blacklist/ip_attempts.log';
+
+    /**
+     * Fichier contenant les IP blacklistées.
+     *
+     * @var string
+     */
     private static $blacklist_file = '../blacklist/ip.txt';
+
+    /**
+     * Nombre maximum de tentatives autorisées avant blacklist.
+     *
+     * @var int
+     */
     private static $max_attempts = 5;
+
+    /**
+     * Fenêtre de temps pour les tentatives (en secondes).
+     *
+     * @var int
+     */
     private static $time_window = 10 * 60; // 10 minutes en secondes
 
+    /**
+     * Exécute la vérification de la blacklist.
+     *
+     * @return array|null Retourne un tableau d'erreur ou NULL si aucune action n'est nécessaire.
+     */
     public static function execute() {
         return self::check();
     }
 
+    /**
+     * Vérifie si l'adresse IP est une IPv4 valide.
+     *
+     * @return bool TRUE si l'adresse IP est valide, FALSE sinon.
+     */
     public static function isValidIPv4() {
-        $isDev = (strpos($_SERVER['HTTP_HOST'], 'local.') === 0); // Vérifie c'est une URL local de développement
+        $isDev = (strpos($_SERVER['HTTP_HOST'], 'local.') === 0); // Vérifie si c'est une URL locale de développement
         return $isDev ? TRUE : filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== FALSE;
     }
 
-    private static function getFullUrl() { $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
+    /**
+     * Récupère l'URL complète de la requête.
+     *
+     * @return string L'URL complète.
+     */
+    private static function getFullUrl() {
+        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
         return $protocol . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
     }
-    
+
+    /**
+     * Vérifie si l'extension de l'URL est blacklistée.
+     *
+     * @return bool TRUE si l'extension est blacklistée, FALSE sinon.
+     */
     private static function isBlacklistExtention() {
         $uri = $_SERVER['REQUEST_URI'];
         $blackListExtention = ['php'];
@@ -27,7 +81,12 @@ class blacklist {
         return in_array(strtolower($extension), $blackListExtention);
     }
 
-    private static function readBlacklist(){ // Charger les tentatives existantes
+    /**
+     * Lit les tentatives existantes depuis le fichier de log.
+     *
+     * @return array Un tableau des tentatives.
+     */
+    private static function readBlacklist() {
         $attempts = [];
         if (file_exists(self::$log_file)) {
             $lines = file(self::$log_file, FILE_IGNORE_NEW_LINES);
@@ -39,7 +98,13 @@ class blacklist {
         return $attempts;
     }
 
-    private static function checkBlacklist(string $_ip){ // Vérifier si l'IP est déjà blacklistée
+    /**
+     * Vérifie si une IP est déjà blacklistée.
+     *
+     * @param string $_ip L'adresse IP à vérifier.
+     * @return bool TRUE si l'IP est blacklistée, FALSE sinon.
+     */
+    private static function checkBlacklist(string $_ip) {
         $blacklisted = FALSE;
         if (file_exists(self::$blacklist_file)) {
             $blacklisted_ips = file(self::$blacklist_file, FILE_IGNORE_NEW_LINES);
@@ -48,10 +113,21 @@ class blacklist {
         return $blacklisted;
     }
 
-    private static function addBlacklist(string $_ip){ // Ajouter une nouvelle tentative
+    /**
+     * Ajoute une tentative pour une IP dans le fichier de log.
+     *
+     * @param string $_ip L'adresse IP à ajouter.
+     * @return void
+     */
+    private static function addBlacklist(string $_ip) {
         file_put_contents(self::$log_file, "$_ip," . date('Y-m-d H:i:s') . ", " . $_SERVER["REQUEST_METHOD"] . "," . self::getFullUrl() . "\n", FILE_APPEND);
     }
-    
+
+    /**
+     * Vérifie si une IP doit être blacklistée et effectue les actions nécessaires.
+     *
+     * @return array|null Retourne un tableau d'erreur ou NULL si aucune action n'est nécessaire.
+     */
     private static function check() {
         if (self::isBlacklistExtention()) {
             $now = time();
@@ -89,12 +165,16 @@ class blacklist {
         }
     }
 
-    public static function itIs(){ // Est-il blacklisté
-        if(self::checkBlacklist($_SERVER['REMOTE_ADDR'])){
+    /**
+     * Vérifie si l'utilisateur actuel est blacklisté.
+     *
+     * @return void
+     */
+    public static function itIs() {
+        if (self::checkBlacklist($_SERVER['REMOTE_ADDR'])) {
             header("Location: /noAccess.php");
             exit();
         }
         return NULL;
     }
-
 }

+ 34 - 12
core/class/button.class.php

@@ -1,7 +1,28 @@
 <?php
 
+/**
+ * Classe `button`
+ *
+ * Cette classe permet de générer des boutons HTML avec des options de confirmation.
+ */
 class button
 {
+    /**
+     * Génère un bouton HTML avec une boîte de confirmation.
+     *
+     * @param array|null $_array Les options pour configurer le bouton (valeur, texte, titre, styles, etc.).
+     * - `value` (string) : Le texte affiché sur le bouton (par défaut : "Valider").
+     * - `title` (string) : Le titre de la boîte de confirmation (par défaut : "Confirmation").
+     * - `text` (string) : Le texte de la boîte de confirmation (par défaut : "Vous êtes certain de vouloir poursuivre ?").
+     * - `confirm` (string) : Le texte du bouton de confirmation (par défaut : "Continuer").
+     * - `cancel` (string) : Le texte du bouton d'annulation (par défaut : "Annuler").
+     * - `type` (string) : Le type du bouton (par défaut : "submit").
+     * - `class` (string) : Les classes CSS du bouton (par défaut : "btn btn-primary btn-lg").
+     * - `style` (string) : Les styles CSS du bouton (par défaut : "width: 100%").
+     * - `id` (string) : L'ID HTML du bouton (optionnel).
+     * - `add` (string) : Des attributs supplémentaires à ajouter au bouton (optionnel).
+     * @return void
+     */
     public static function confirm(?array $_array = NULL)
     {
         $config = array(
@@ -16,7 +37,7 @@ class button
             "add" => ""
         );
 
-        if($_array != NULL){
+        if ($_array != NULL) {
             (!empty($_array["value"])) ? $config["value"] = $_array["value"] : NULL;
             (!empty($_array["text"])) ? $config["text"] = $_array["text"] : NULL;
             (!empty($_array["title"])) ? $config["title"] = $_array["title"] : NULL;
@@ -30,18 +51,19 @@ class button
         }
         
         $print = "<input ";
-        $print .= 'class="' . $config["class"] .'" ';
-        $print .= 'style="' . $config["style"] .'" ';
-        $print .= 'type="' . $config["type"] .'" ';
-        $print .= 'value="' . $config["value"] .'" ';
-        $print .= 'data-confirm="' . $config["text"] .'" ';
-        $print .= 'data-confirm-title="' . $config["title"] .'" ';
-        $print .= 'data-confirm-button-confirm="' . $config["confirm"] .'" ';
-        $print .= 'data-confirm-button-cancel="' . $config["cancel"] .'" ';
-        if(!empty($_array["id"])) { $print .= 'id="' . $config["id"] .'" '; }
-        $print .= ' ' . $config["add"] .'>';
+        $print .= 'class="' . $config["class"] . '" ';
+        $print .= 'style="' . $config["style"] . '" ';
+        $print .= 'type="' . $config["type"] . '" ';
+        $print .= 'value="' . $config["value"] . '" ';
+        $print .= 'data-confirm="' . $config["text"] . '" ';
+        $print .= 'data-confirm-title="' . $config["title"] . '" ';
+        $print .= 'data-confirm-button-confirm="' . $config["confirm"] . '" ';
+        $print .= 'data-confirm-button-cancel="' . $config["cancel"] . '" ';
+        if (!empty($_array["id"])) {
+            $print .= 'id="' . $config["id"] . '" ';
+        }
+        $print .= ' ' . $config["add"] . '>';
 
         echo $print;
     }
-
 }

+ 23 - 0
core/class/cache.class.php

@@ -1,7 +1,24 @@
 <?php 
 
+/**
+ * Classe `cache`
+ *
+ * Cette classe fournit des outils pour gérer les fichiers avec des informations de mise à jour basées sur leur date de modification.
+ *
+ * Fonctionnalités principales :
+ * - Génération d'un chemin de fichier avec un paramètre de version basé sur la date de modification.
+ * - Affichage direct du chemin de fichier versionné.
+ *
+ * @package Core\Class
+ */
 class cache
 {
+    /**
+     * Récupère le chemin d'un fichier avec un paramètre de version basé sur sa date de modification.
+     *
+     * @param string $_file Le chemin du fichier.
+     * @return string Le chemin du fichier avec le paramètre de version.
+     */
     public static function getFileWithTime(string $_file){
         if (file_exists($_file)) {
             return $_file . "?v=" . date("YmdHis", filemtime($_file));
@@ -10,6 +27,12 @@ class cache
         }
     }
 
+    /**
+     * Affiche le chemin d'un fichier avec un paramètre de version basé sur sa date de modification.
+     *
+     * @param string $_file Le chemin du fichier.
+     * @return void
+     */
     public static function printFileWithTime(string $_file){
         echo self::getFileWithTime($_file);
     }

+ 56 - 3
core/class/chart.class.php

@@ -1,11 +1,27 @@
 <?php
 
-// Documentation
-// https://www.chartjs.org/docs/2.6.0/
-
+/**
+ * Classe `chart`
+ *
+ * Cette classe fournit des outils pour générer des graphiques interactifs en utilisant la bibliothèque Chart.js.
+ * Documentation officielle : https://www.chartjs.org/
+ *
+ * Fonctionnalités principales :
+ * - Génération de différents types de graphiques (barres, lignes, secteurs, etc.).
+ * - Gestion des données et des configurations pour les graphiques.
+ * - Génération de scripts JavaScript pour intégrer les graphiques dans une page web.
+ *
+ * @package Core\Class
+ */
 class chart
 {
 
+    /**
+     * Affiche un élément canvas HTML pour un graphique et génère le script JavaScript correspondant.
+     *
+     * @param array $_config Configuration du graphique (id, dimensions, type, données, etc.).
+     * @return void
+     */
     public static function printCanvas(array $_config)
     {
         $id = $_config["id"];
@@ -38,6 +54,13 @@ class chart
         }
     }
 
+    /**
+     * Construit les données nécessaires pour un graphique à partir des données fournies.
+     *
+     * @param array $_data Données brutes pour le graphique.
+     * @param array|null $_config Configuration optionnelle des couleurs et styles.
+     * @return array Données formatées pour le graphique.
+     */
     private static function constructData(array $_data, ?array $_config = NULL)
     {
         $label = $nb = $backgroundColor = $borderColor = "";
@@ -128,6 +151,12 @@ class chart
         return array("label" => $label, "nb" => $nb, "backgroundColor" => $backgroundColor, "borderColor" => $borderColor);
     }
 
+    /**
+     * Génère le script JavaScript pour un graphique de type "pie".
+     *
+     * @param array $_config Configuration du graphique.
+     * @return string Script JavaScript pour le graphique.
+     */
     private static function javascriptPie(array $_config)
     {
 
@@ -151,6 +180,12 @@ class chart
             </script>';
     }
 
+    /**
+     * Génère le script JavaScript pour un graphique de type "doughnut".
+     *
+     * @param array $_config Configuration du graphique.
+     * @return string Script JavaScript pour le graphique.
+     */
     private static function javascriptDoughnut(array $_config)
     {
 
@@ -174,6 +209,12 @@ class chart
             </script>';
     }
 
+    /**
+     * Génère le script JavaScript pour un graphique de type "bar".
+     *
+     * @param array $_config Configuration du graphique.
+     * @return string Script JavaScript pour le graphique.
+     */
     private static function javascriptBar(array $_config)
     {
 
@@ -197,6 +238,12 @@ class chart
             </script>';
     }
 
+    /**
+     * Construit les données nécessaires pour un graphique de type "line".
+     *
+     * @param array $_data Données brutes pour le graphique.
+     * @return array Données formatées pour le graphique.
+     */
     private static function constructDataLine(array $_data)
     {
         $return["labels"] = $return["data"] = NULL;
@@ -207,6 +254,12 @@ class chart
         return $return;
     }
 
+    /**
+     * Génère le script JavaScript pour un graphique de type "line".
+     *
+     * @param array $_config Configuration du graphique.
+     * @return string Script JavaScript pour le graphique.
+     */
     private static function javascriptLine(array $_config)
     {
 

+ 31 - 1
core/class/clients.class.php

@@ -1,8 +1,25 @@
 <?php
-
+/**
+ * Classe `clients`
+ *
+ * Cette classe gère les opérations liées aux clients, telles que la récupération,
+ * l'insertion et la mise à jour des informations des clients.
+ *
+ * Fonctionnalités principales :
+ * - Récupération de la liste des clients.
+ * - Ajout de nouveaux clients.
+ * - Mise à jour des informations des clients existants.
+ *
+ * @package Core\Class
+ */
 class clients
 {
 
+    /**
+     * Récupère tous les clients.
+     *
+     * @return array|bool La liste des clients ou FALSE en cas d'erreur.
+     */
     public static function getAll() {
         db::query("SELECT "
             . "* "
@@ -11,6 +28,12 @@ class clients
         return db::resultset();
     }
 
+    /**
+     * Insère un nouveau client dans la base de données.
+     *
+     * @param string $_client Le nom du client à insérer.
+     * @return bool TRUE si l'insertion a réussi, FALSE en cas d'erreur.
+     */
     public static function insert(string $_client) {
         db::query("INSERT INTO " . DB_T_CLIENTS . " (label) VALUES (:label)");
         db::bind(':label', $_client);
@@ -23,6 +46,13 @@ class clients
         }
     }
 
+    /**
+     * Met à jour les informations d'un client existant.
+     *
+     * @param float $_id L'ID du client à mettre à jour.
+     * @param string $_tag Le nouveau nom du client.
+     * @return bool TRUE si la mise à jour a réussi, FALSE en cas d'erreur.
+     */
     public static function maj(float $_id, string $_tag) {
         db::query("UPDATE " . DB_T_CLIENTS . " SET label = :label WHERE id = :id; ");
         db::bind(':label', $_tag);

+ 285 - 1
core/class/core.class.php

@@ -1,7 +1,26 @@
 <?php
-
+/**
+ * Classe `core`
+ *
+ * Cette classe fournit des outils utilitaires pour diverses opérations courantes dans l'application.
+ *
+ * Fonctionnalités principales :
+ * - Gestion des données GET, POST et FILES.
+ * - Manipulation des dates et des formats.
+ * - Gestion des configurations de l'application.
+ * - Génération d'éléments d'interface utilisateur (menus, badges, etc.).
+ * - Outils divers pour le traitement des chaînes, des fichiers et des données.
+ *
+ * @package Core\Class
+ */
 class core
 {
+    /**
+     * Vérifie si une variable GET est définie.
+     *
+     * @param string|null $_string Le nom de la variable GET (optionnel).
+     * @return bool TRUE si la variable est définie, FALSE sinon.
+     */
     public static function ifGet(?string $_string = NULL)
     {
         if($_string == NULL){
@@ -15,6 +34,12 @@ class core
         }
     }
 
+    /**
+     * Vérifie si une variable POST est définie.
+     *
+     * @param string|null $_string Le nom de la variable POST (optionnel).
+     * @return bool TRUE si la variable est définie, FALSE sinon.
+     */
     public static function ifPost(?string $_string = NULL)
     {
         if($_string == NULL){
@@ -28,6 +53,12 @@ class core
         }
     }
 
+    /**
+     * Vérifie si une variable FILES est définie.
+     *
+     * @param string|null $_string Le nom de la variable FILES (optionnel).
+     * @return bool TRUE si la variable est définie, FALSE sinon.
+     */
     public static function ifFiles(?string $_string = NULL)
     {
         if ($_string == NULL) {
@@ -41,6 +72,12 @@ class core
         }
     }
 
+    /**
+     * Récupère une variable GET.
+     *
+     * @param string|null $_string Le nom de la variable GET (optionnel).
+     * @return mixed La valeur de la variable GET ou NULL si non définie.
+     */
     public static function getGet(?string $_string = NULL)
     {
         if ($_string == NULL) {
@@ -54,6 +91,12 @@ class core
         }
     }
 
+    /**
+     * Récupère une variable POST.
+     *
+     * @param string|null $_string Le nom de la variable POST (optionnel).
+     * @return mixed La valeur de la variable POST ou NULL si non définie.
+     */
     public static function getPost(?string $_string = NULL)
     {
         if ($_string == NULL) {
@@ -67,6 +110,12 @@ class core
         }
     }
 
+    /**
+     * Récupère une variable FILES.
+     *
+     * @param string|null $_string Le nom de la variable FILES (optionnel).
+     * @return mixed La valeur de la variable FILES ou NULL si non définie.
+     */
     public static function getFiles(?string $_string = NULL)
     {
         if ($_string == NULL) {
@@ -80,6 +129,14 @@ class core
         }
     }
 
+    /**
+     * Vérifie si une chaîne est présente dans un tableau.
+     *
+     * @param array $_array Le tableau à vérifier.
+     * @param string $_string La chaîne à rechercher.
+     * @param int|null $_exact Indique si la correspondance doit être exacte (1 pour oui, NULL pour non).
+     * @return bool TRUE si la chaîne est trouvée, FALSE sinon.
+     */
     public static function isInArrayString(array $_array, string $_string, ?int $_exact = NULL)
     {
         foreach ($_array as $value) {
@@ -92,6 +149,13 @@ class core
         return FALSE;
     }
 
+    /**
+     * Génère un attribut "checked" pour une case à cocher.
+     *
+     * @param bool $_val Indique si la case doit être cochée.
+     * @param int $_echo Indique si le résultat doit être affiché (1) ou retourné (0).
+     * @return string|null L'attribut "checked" ou NULL.
+     */
     public static function checkboxSelecter(bool $_val, $_echo = 1)
     {
         $tmp = ($_val == TRUE) ? "checked" : "";
@@ -102,6 +166,11 @@ class core
         }
     }
 
+    /**
+     * Récupère toutes les configurations de l'application.
+     *
+     * @return array|bool Les configurations ou FALSE en cas d'erreur.
+     */
     public static function getAllConfig()
     {
         db::query("SELECT "
@@ -111,6 +180,12 @@ class core
         return db::resultset();
     }
 
+    /**
+     * Récupère une configuration spécifique de l'application.
+     *
+     * @param string $_name Le nom de la configuration.
+     * @return mixed La valeur de la configuration.
+     */
     public static function getConfig(string $_name)
     {
         db::query("SELECT value FROM " . DB_T_CONFIG . " WHERE name = :name");
@@ -118,6 +193,13 @@ class core
         return db::single()["value"];
     }
 
+    /**
+     * Met à jour une configuration de l'application.
+     *
+     * @param string $_name Le nom de la configuration.
+     * @param string $_value La nouvelle valeur de la configuration.
+     * @return bool TRUE si la mise à jour a réussi, FALSE sinon.
+     */
     public static function updateConfig(string $_name, string $_value)
     {
         db::query("UPDATE " . DB_T_CONFIG . " SET "
@@ -134,6 +216,12 @@ class core
         }
     }
 
+    /**
+     * Supprime les accents d'une chaîne de caractères.
+     *
+     * @param string $_data La chaîne à traiter.
+     * @return string La chaîne sans accents.
+     */
     public static function cleanAccent(string $_data)
     {
         $search  = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ');
@@ -142,6 +230,13 @@ class core
         return strtoupper($return);
     }
 
+    /**
+     * Convertit une date MySQL en format français.
+     *
+     * @param string $_datetime La date au format MySQL.
+     * @param bool $_hour Indique si l'heure doit être incluse.
+     * @return string La date au format français.
+     */
     public static function convertDate(string $_datetime, bool $_hour = TRUE)
     {
         $pieces = explode(" ", $_datetime);
@@ -156,6 +251,12 @@ class core
         }
     }
 
+    /**
+     * Retourne la date actuelle au format français.
+     *
+     * @param string|null $_timestampMysql Le timestamp MySQL (optionnel).
+     * @return string|DateTime La date au format français ou un objet DateTime.
+     */
     public static function dateFr(?string $_timestampMysql = NULL)
     {
         if ($_timestampMysql == NULL) {
@@ -166,6 +267,12 @@ class core
         }
     }
 
+    /**
+     * Convertit un timestamp en date.
+     *
+     * @param int|null $_timestamp Le timestamp à convertir (optionnel).
+     * @return string|null La date au format MySQL ou NULL si aucun timestamp n'est fourni.
+     */
     public static function dateFromTimestamp(?int $_timestamp = NULL)
     {
         if ($_timestamp == NULL) {
@@ -175,11 +282,24 @@ class core
         }
     }
 
+    /**
+     * Extrait la date sans l'heure d'une chaîne datetime.
+     *
+     * @param string $_datetime La chaîne datetime.
+     * @return string La date sans l'heure.
+     */
     public static function dateWhithoutHours(string $_datetime)
     {
         return explode(" ", $_datetime)[0];
     }
 
+    /**
+     * Formate une taille de fichier en unités lisibles.
+     *
+     * @param float $_size La taille en octets.
+     * @param int $_decimalplaces Le nombre de décimales à inclure.
+     * @return string La taille formatée.
+     */
     public static function formatFileSize(float $_size, int $_decimalplaces = 0)
     {
         $sizes = array('O', 'Ko', 'Mo', 'Go', 'To');
@@ -189,6 +309,12 @@ class core
         return round($_size, $_decimalplaces) . ' ' . $sizes[$i];
     }
 
+    /**
+     * Formate un montant en euros.
+     *
+     * @param float $_amount Le montant à formater.
+     * @return string Le montant formaté en euros.
+     */
     public static  function formatEuro($_amount) {
         $amount = (float)$_amount;
         $formattedAmount = number_format($amount, 2, ',', ' ');
@@ -196,6 +322,12 @@ class core
     }
     
 
+    /**
+     * Vérifie si une chaîne ne contient que des caractères alphabétiques.
+     *
+     * @param string $_string La chaîne à vérifier.
+     * @return bool TRUE si la chaîne contient uniquement des lettres, FALSE sinon.
+     */
     public static function checkStringOnly(string $_string)
     {
         if (!ctype_alpha($_string)) {
@@ -205,6 +337,16 @@ class core
         }
     }
 
+    /**
+     * Génère un élément de menu.
+     *
+     * @param string $_id L'identifiant de l'élément de menu.
+     * @param string $_href L'URL de destination.
+     * @param string $_titre Le titre de l'élément de menu.
+     * @param string|null $_style Le style CSS à appliquer (optionnel).
+     * @param string|null $_icon L'icône à afficher (optionnel).
+     * @return void
+     */
     public static function elementMenu(string $_id, string $_href, string $_titre, ?string $_style = NULL, ?string $_icon = NULL)
     {
         if (access::ifAccesss($_id)) {
@@ -215,6 +357,16 @@ class core
         }
     }
 
+    /**
+     * Génère un élément de menu avec un lien.
+     *
+     * @param string $_id L'identifiant de l'élément de menu.
+     * @param string $_href L'URL de destination.
+     * @param string $_titre Le titre de l'élément de menu.
+     * @param string|null $_style Le style CSS à appliquer (optionnel).
+     * @param string $_target La cible du lien (par défaut "_blank").
+     * @return void
+     */
     public static function elementMenuLink(string $_id, string $_href, string $_titre, ?string $_style = NULL, string $_target = "_blank")
     {
         if (access::ifAccesss($_id)) {
@@ -225,6 +377,15 @@ class core
         }
     }
 
+    /**
+     * Génère un en-tête de section.
+     *
+     * @param string $_id L'identifiant de l'en-tête.
+     * @param string $_titre Le titre de l'en-tête.
+     * @param string|null $_style Le style CSS à appliquer (optionnel).
+     * @param string|null $_collapse L'identifiant de la section à réduire/étendre (optionnel).
+     * @return void
+     */
     public static function elementMenuH6(string $_id, string $_titre, ?string $_style = NULL, ?string $_collapse = NULL)
     {
         if (access::ifAccesss($_id)) {
@@ -235,6 +396,12 @@ class core
         }
     }
 
+    /**
+     * Génère une fil d'Ariane (breadcrumb).
+     *
+     * @param array $_arbo Les éléments de la fil d'Ariane.
+     * @return string Le code HTML de la fil d'Ariane.
+     */
     public static function filAriane(array $_arbo)
     {
 
@@ -295,6 +462,14 @@ class core
         return $return;
     }
 
+    /**
+     * Calcule un pourcentage.
+     *
+     * @param int|null $_nombre Le nombre partiel.
+     * @param int|null $_total Le nombre total.
+     * @param int $_pourcentage Le pourcentage à calculer (par défaut 100).
+     * @return int Le pourcentage calculé.
+     */
     public static function caculPourcentage(?int $_nombre, ?int $_total, int $_pourcentage = 100)
     {
         if ($_nombre == NULL) return 0;
@@ -302,11 +477,22 @@ class core
         return round($resultat);
     }
 
+    /**
+     * Encode une chaîne en UTF-8.
+     *
+     * @param string $_data La chaîne à encoder.
+     * @return string La chaîne encodée en UTF-8.
+     */
     public static function encodeUTF8(string $_data)
     {
         return (mb_detect_encoding($_data) != "UTF-8") ? mb_convert_encoding($_data, 'UTF-8', mb_list_encodings()) : $_data;
     }
 
+    /**
+     * Vérifie la connexion à Internet.
+     *
+     * @return bool TRUE si connecté, FALSE sinon.
+     */
     public static function testConnexionInternet()
     {
         $hosts = ['1.1.1.1', '1.0.0.1', '8.8.8.8', '8.8.4.4'];
@@ -319,12 +505,22 @@ class core
         return FALSE;
     }
 
+    /**
+     * Retourne la date et l'heure actuelles au format texte.
+     *
+     * @return string La date et l'heure au format texte.
+     */
     public static function printDateTxt()
     {
         $date = new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::NONE);
         return $date->format(time()) . " à " . date("H:i:s");
     }
 
+    /**
+     * Réinitialise les données dans la base de données.
+     *
+     * @return void
+     */
     public static function resetDatas()
     {
         db::query("TRUNCATE " . DB_T_TEMP_SALARIES);
@@ -361,16 +557,34 @@ class core
         file::cleanAllFiles(SFTP_LOCAL);
     }
 
+    /**
+     * Encode une chaîne en base64 pour une utilisation dans une URL.
+     *
+     * @param string $val La chaîne à encoder.
+     * @return string La chaîne encodée en base64.
+     */
     public static function base64_url_encode(string $val)
     {
         return strtr(base64_encode($val), '+/=', '-_,');
     }
 
+    /**
+     * Décode une chaîne base64 encodée pour une utilisation dans une URL.
+     *
+     * @param string $val La chaîne à décoder.
+     * @return string La chaîne décodée.
+     */
     public static function base64_url_decode(string $val)
     {
         return base64_decode(strtr($val, '-_,', '+/='));
     }
 
+    /**
+     * Convertit un texte en UTF-8 si nécessaire.
+     *
+     * @param string $_texte Le texte à convertir.
+     * @return string Le texte converti en UTF-8.
+     */
     public static function convertirEnUtf8(string $_texte)
     {
         if (!mb_detect_encoding($_texte, 'UTF-8', TRUE)) {
@@ -380,6 +594,13 @@ class core
         }
     }
 
+    /**
+     * Imprime une option sélectionnée dans un formulaire.
+     *
+     * @param string|null $_string La valeur de l'option.
+     * @param mixed $_value La valeur à comparer.
+     * @return void
+     */
     public static function printFormSelectOption(?string $_string = NULL, $_value)
     {
         if ($_string != NULL and $_string == $_value) {
@@ -387,6 +608,12 @@ class core
         }
     }
 
+    /**
+     * Récupère la valeur d'un formulaire.
+     *
+     * @param string|null $_string La valeur à récupérer.
+     * @return string|null La valeur récupérée ou NULL.
+     */
     public static function getFormValue(?string $_string = NULL)
     {
         if ($_string != NULL) {
@@ -394,6 +621,12 @@ class core
         }
     }
 
+    /**
+     * Imprime la valeur d'un formulaire.
+     *
+     * @param string|null $_string La valeur à imprimer.
+     * @return void
+     */
     public static function printFormValue(?string $_string = NULL)
     {
         if ($_string != NULL) {
@@ -401,6 +634,15 @@ class core
         }
     }
 
+    /**
+     * Convertit des octets entre différentes unités.
+     *
+     * @param float $val La valeur à convertir.
+     * @param string $type_val L'unité d'origine.
+     * @param string $type_wanted L'unité cible.
+     * @param bool $_float Indique si le résultat doit être un flottant.
+     * @return string La valeur convertie avec l'unité cible.
+     */
     public static function convertBytes(float $val, string $type_val = "o", string $type_wanted = "Mo", bool $_float = FALSE)
     {
         $tab_val = array("o", "ko", "Mo", "Go", "To", "Po", "Eo");
@@ -418,6 +660,11 @@ class core
         return round(($val), 2) . $type_wanted_print;
     }
 
+    /**
+     * Récupère la taille de la base de données.
+     *
+     * @return array Les informations sur la taille de la base de données.
+     */
     public static function getSizeDataBase(){
         db::query("SELECT
                     table_schema AS nameDB, 
@@ -427,6 +674,15 @@ class core
         return db::single();
     }
 
+    /**
+     * Génère une barre de progression avec des avertissements.
+     *
+     * @param float $_num La valeur actuelle.
+     * @param float $_max La valeur maximale.
+     * @param string $_label L'étiquette de la barre de progression.
+     * @param string $_icon L'icône à afficher.
+     * @return void
+     */
     public static function progressBarWarning(float $_num, float $_max, string $_label, string $_icon){
         $changeUnit = 1073741824;
         $valueUnitNum = $_num >= $changeUnit ? "Go" : "Mo";
@@ -449,10 +705,21 @@ class core
                 </div>';
     }
 
+    /**
+     * Génère un badge d'alerte si nécessaire.
+     *
+     * @param bool $_alerte Indique si l'alerte doit être affichée.
+     * @return string|null Le code HTML du badge ou NULL.
+     */
     static public function printBadgeGeneral(bool $_alerte){
         return $_alerte == TRUE ? '<span class="position-absolute start-100 translate-middle p-1 bg-danger border border-light rounded-circle"></span>' : NULL;
     }
 
+    /**
+     * Vérifie les alertes pour les documents.
+     *
+     * @return array Les informations sur les alertes.
+     */
     static public function ifbadge()
     {
         $return = [];
@@ -466,6 +733,12 @@ class core
         return $return;
     }
 
+    /**
+     * Génère un menu de navigation.
+     *
+     * @param array $_navInfos Les informations de navigation.
+     * @return void
+     */
     static public function menu(array $_navInfos){
         $badge = self::ifbadge();
         echo '<a href="/" style="box-shadow: none; background-color:'. $_navInfos["color"] .';" class="navbar-brand">' . $_navInfos["title"] . '</a>' . debug::getBadges();
@@ -488,6 +761,11 @@ class core
         echo '</div>';
     }
 
+    /**
+     * Récupère l'adresse IP de l'utilisateur.
+     *
+     * @return string L'adresse IP de l'utilisateur.
+     */
     static public function getUserIP() {
         $ip = 'Inconnue';
     
@@ -510,6 +788,12 @@ class core
         return $ip;
     }
 
+    /**
+     * Aplatit un tableau multidimensionnel.
+     *
+     * @param array|null $_array Le tableau à aplatir (optionnel).
+     * @return array|null Le tableau aplati ou NULL.
+     */
     static public function extractArrayInArray(?array $_array = NULL){
         if($_array != NULL){
             foreach ($_array as $item) {

+ 40 - 1
core/class/cron.class.php

@@ -1,11 +1,32 @@
 <?php
-
+/**
+ * Classe `cron`
+ *
+ * Cette classe gère les tâches planifiées (cron jobs) pour l'application.
+ *
+ * Fonctionnalités principales :
+ * - Vérification de l'exécution en environnement local.
+ * - Gestion des paramètres d'alertes email.
+ * - Envoi d'emails pour les documents assignés.
+ *
+ * @package Core\Class
+ */
 class cron
 {
+    /**
+     * Vérifie si le script est exécuté en local.
+     *
+     * @return bool TRUE si exécuté en local, FALSE sinon.
+     */
     public static function ifLocalHost(){
         return $_SERVER['SERVER_ADDR'] === $_SERVER['REMOTE_ADDR'] ? TRUE : FALSE;
     }
 
+    /**
+     * Envoie des emails pour les documents assignés.
+     *
+     * @return void
+     */
     public static function sendMailAssignDocument(){
         foreach (document::assignMailDocument() as $assign) {
             if(self::checkParameter($assign["id"])){
@@ -14,6 +35,12 @@ class cron
         }
     }
 
+    /**
+     * Insère les paramètres d'alertes email pour un utilisateur.
+     *
+     * @param array|null $_array Les paramètres d'alertes (heures et jours).
+     * @return bool TRUE si l'insertion a réussi, FALSE sinon.
+     */
     public static function insertParameter(array $_array = NULL){
 
         $userId = session::getId();
@@ -48,6 +75,12 @@ class cron
         
     }
 
+    /**
+     * Récupère les paramètres d'alertes email pour un utilisateur.
+     *
+     * @param float|null $_id L'ID de l'utilisateur (optionnel).
+     * @return array|null Les paramètres d'alertes ou NULL si aucun paramètre.
+     */
     public static function getParameter(float $_id = NULL){
         $userId = is_null($_id) ? session::getId() : $_id;
 
@@ -71,6 +104,12 @@ class cron
         
     }
 
+    /**
+     * Vérifie si les paramètres d'alertes sont valides pour un utilisateur.
+     *
+     * @param float $_id L'ID de l'utilisateur.
+     * @return bool TRUE si les paramètres sont valides, FALSE sinon.
+     */
     public static function checkParameter(float $_id){
         $data = self::getParameter($_id);
         $jourSemaineOriginal = date('w');

+ 0 - 7
core/class/csv.class.php

@@ -1,7 +0,0 @@
-<?php
-
-class csv
-{
-
-    
-}

+ 94 - 1
core/class/db.class.php

@@ -1,11 +1,30 @@
 <?php
-
+/**
+ * Classe `db`
+ *
+ * Cette classe gère la connexion à la base de données et fournit des méthodes pour exécuter des requêtes SQL.
+ *
+ * Fonctionnalités principales :
+ * - Gestion de la connexion à la base de données avec PDO.
+ * - Préparation et exécution de requêtes SQL.
+ * - Gestion des transactions.
+ * - Récupération des résultats des requêtes.
+ * - Gestion des erreurs SQL.
+ *
+ * @package Core\Class
+ */
 class db
 {
     private static PDO $dbh;
     private static string $error = '';
     private static PDOStatement $stmt;
 
+    /**
+     * Établit une connexion à la base de données si elle n'existe pas déjà.
+     *
+     * @return void
+     * @throws Exception En cas d'erreur de connexion.
+     */
     private static function connect(): void
     {
         if (isset(self::$dbh)) {
@@ -26,18 +45,37 @@ class db
         }
     }
 
+    /**
+     * Récupère la version du serveur de base de données.
+     *
+     * @return string La version du serveur.
+     */
     public static function version(): string
     {
         self::connect();
         return self::$dbh->getAttribute(PDO::ATTR_SERVER_VERSION);
     }
 
+    /**
+     * Prépare une requête SQL.
+     *
+     * @param string $query La requête SQL à préparer.
+     * @return void
+     */
     public static function query(string $query): void
     {
         self::connect();
         self::$stmt = self::$dbh->prepare($query);
     }
 
+    /**
+     * Lie une valeur à un paramètre dans la requête préparée.
+     *
+     * @param string $param Le nom du paramètre.
+     * @param mixed $value La valeur à lier.
+     * @param int|null $type Le type de la valeur (optionnel).
+     * @return void
+     */
     public static function bind(string $param, mixed $value = null, ?int $type = null): void
     {
         if (is_null($type)) {
@@ -51,6 +89,11 @@ class db
         self::$stmt->bindValue($param, $value, $type);
     }
 
+    /**
+     * Exécute la requête préparée.
+     *
+     * @return bool TRUE si l'exécution a réussi, FALSE sinon.
+     */
     public static function execute(): bool
     {
         self::connect();
@@ -65,53 +108,98 @@ class db
         return self::$stmt->execute();
     }
 
+    /**
+     * Récupère tous les résultats de la requête sous forme de tableau associatif.
+     *
+     * @return array Les résultats de la requête.
+     */
     public static function resultset(): array
     {
         self::execute();
         return self::$stmt->fetchAll(PDO::FETCH_ASSOC);
     }
 
+    /**
+     * Récupère un seul résultat de la requête sous forme de tableau associatif.
+     *
+     * @return array|false Le résultat de la requête ou FALSE si aucun résultat.
+     */
     public static function single(): array|false
     {
         self::execute();
         return self::$stmt->fetch(PDO::FETCH_ASSOC);
     }
 
+    /**
+     * Récupère le nombre de lignes affectées par la dernière requête.
+     *
+     * @return int Le nombre de lignes affectées.
+     */
     public static function rowCount(): int
     {
         return self::$stmt->rowCount();
     }
 
+    /**
+     * Récupère l'ID de la dernière ligne insérée.
+     *
+     * @return string L'ID de la dernière ligne insérée.
+     */
     public static function lastInsertId(): string
     {
         self::connect();
         return self::$dbh->lastInsertId();
     }
 
+    /**
+     * Démarre une transaction.
+     *
+     * @return bool TRUE si la transaction a démarré avec succès, FALSE sinon.
+     */
     public static function beginTransaction(): bool
     {
         self::connect();
         return self::$dbh->beginTransaction();
     }
 
+    /**
+     * Valide une transaction.
+     *
+     * @return bool TRUE si la transaction a été validée avec succès, FALSE sinon.
+     */
     public static function endTransaction(): bool
     {
         self::connect();
         return self::$dbh->commit();
     }
 
+    /**
+     * Annule une transaction.
+     *
+     * @return bool TRUE si la transaction a été annulée avec succès, FALSE sinon.
+     */
     public static function cancelTransaction(): bool
     {
         self::connect();
         return self::$dbh->rollBack();
     }
 
+    /**
+     * Affiche les paramètres de la requête pour le débogage.
+     *
+     * @return void
+     */
     public static function debugDumpParams(): void
     {
         self::connect();
         self::$stmt->debugDumpParams();
     }
 
+    /**
+     * Affiche les erreurs de la dernière requête SQL.
+     *
+     * @return void
+     */
     public static function queryError(): void
     {
         self::connect();
@@ -121,6 +209,11 @@ class db
         }
     }
 
+    /**
+     * Récupère le dernier message d'erreur de connexion.
+     *
+     * @return string Le message d'erreur.
+     */
     public static function getError(): string
     {
         return self::$error;

+ 166 - 2
core/class/document.class.php

@@ -1,8 +1,18 @@
 <?php
-
+/**
+ * Classe document
+ * 
+ * Cette classe gère les documents, y compris leur création, mise à jour, suppression,
+ * gestion des fichiers joints, et envoi d'emails liés aux documents.
+ */
 class document
 {
-    
+    /**
+     * Télécharge un fichier temporaire et l'enregistre dans le répertoire des données des documents.
+     *
+     * @param array $_temp Tableau contenant les informations du fichier temporaire.
+     * @return string|false Retourne le chemin du fichier enregistré ou FALSE en cas d'échec.
+     */
     static public function uploadFile(array $_temp){
         $tmp = file::record($_temp, DIR_DATAS_DOCS);
         if($tmp != FALSE){
@@ -12,10 +22,22 @@ class document
         }
     }
 
+    /**
+     * Lit un fichier spécifique à partir du répertoire des données des documents.
+     *
+     * @param string $_id Identifiant du fichier à lire.
+     * @return string Retourne le contenu du fichier.
+     */
     static public function readFile(string $_id){
         return file::download($_id, DIR_DATAS_DOCS);
     }
 
+    /**
+     * Supprime un fichier spécifique du répertoire des données des documents.
+     *
+     * @param string $_id Identifiant du fichier à supprimer.
+     * @return void
+     */
     static public function deleteFile(string $_id){
         db::query("DELETE FROM ". DB_T_DOCUMENT_FILES ." WHERE id_files = :id_files");
         db::bind(':id_files', $_id);
@@ -24,6 +46,12 @@ class document
         file::delete($_id, DIR_DATAS_DOCS);
     }
 
+    /**
+     * Supprime tous les fichiers associés à un document spécifique.
+     *
+     * @param float $_id Identifiant du document.
+     * @return void
+     */
     static public function deleteFiles(float $_id){
         foreach (self::getFiles($_id) as $file) {
 
@@ -35,6 +63,11 @@ class document
         }
     }
 
+    /**
+     * Récupère les types de documents disponibles.
+     *
+     * @return array Retourne un tableau associatif des types de documents.
+     */
     static public function getTypes(){
         db::query("SELECT "
             . "id, label "
@@ -47,6 +80,12 @@ class document
         return $return;
     }
 
+    /**
+     * Supprime un document spécifique et ses fichiers associés.
+     *
+     * @param float $_id Identifiant du document à supprimer.
+     * @return bool Retourne TRUE en cas de succès, FALSE en cas d'échec.
+     */
     public static function delete(float $_id)
     {
         try {
@@ -68,12 +107,25 @@ class document
         }
     }
 
+    /**
+     * Récupère l'identifiant du dernier document ajouté.
+     *
+     * @return int Identifiant du dernier document.
+     */
     public static function lastAdd()
     {
         db::query("SELECT MAX(id) AS id FROM " . DB_T_DOCUMENTS);
         return db::single()["id"];
     }
 
+    /**
+     * Ajoute un fichier à un document spécifique.
+     *
+     * @param float $_idDocument Identifiant du document.
+     * @param string $_idFile Identifiant du fichier.
+     * @param int|null $_principal Indique si le fichier est principal (1) ou non (0).
+     * @return bool Retourne TRUE en cas de succès, FALSE en cas d'échec.
+     */
     private static function addFile(float $_idDocument, string $_idFile, int $_principal = NULL)
     {
         db::query("INSERT INTO " . DB_T_DOCUMENT_FILES . " (id_documents, id_files, principal) VALUES (:id_documents, :id_files, :principal)");
@@ -91,6 +143,14 @@ class document
         }
     }
 
+    /**
+     * Ajoute des tags à un document spécifique.
+     *
+     * @param float $_idDocument Identifiant du document.
+     * @param string|null $_tags Liste des tags séparés par des virgules.
+     * @param float $_type Type des tags.
+     * @return bool Retourne TRUE en cas de succès, FALSE en cas d'échec.
+     */
     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");
@@ -120,6 +180,11 @@ class document
         }
     }
 
+    /**
+     * Récupère les tags orphelins (non associés à des documents).
+     *
+     * @return array Retourne un tableau des tags orphelins.
+     */
     public static function getOrphanTags(){
         db::query("SELECT
         " . DB_T_TAGS . ".id
@@ -129,6 +194,11 @@ class document
         return db::resultset();
     }
 
+    /**
+     * Supprime les tags orphelins de la base de données.
+     *
+     * @return void
+     */
     public static function cleanOrphanTags(){
         foreach (self::getOrphanTags() as $value) {
             db::query("DELETE FROM ". DB_T_TAGS ." WHERE id = :id");
@@ -137,6 +207,11 @@ class document
         }
     }
     
+    /**
+     * Ajoute un nouveau document avec ses fichiers et tags associés.
+     *
+     * @return int|false Retourne l'identifiant du document ajouté ou FALSE en cas d'échec.
+     */
     public static function add()
     {   
         session::setTemp(core::getPost(), "document");
@@ -203,6 +278,11 @@ class document
         }
     }
 
+    /**
+     * Met à jour un document existant, y compris ses fichiers et tags associés.
+     *
+     * @return bool Retourne TRUE en cas de succès, FALSE en cas d'échec.
+     */
     public static function update()
     {
         $file = core::getFiles("attachement-document");
@@ -299,6 +379,12 @@ class document
         }
     }
 
+    /**
+     * Imprime un fichier spécifique.
+     *
+     * @param string $_id Identifiant du fichier à imprimer.
+     * @return void
+     */
     static public function printFile(string $_id) {
         $filePatch = file::download($_id, DIR_DATAS_DOCS);
         
@@ -323,6 +409,12 @@ class document
         }
     }
 
+    /**
+     * Récupère un fichier spécifique.
+     *
+     * @param string $_id Identifiant du fichier à récupérer.
+     * @return void
+     */
     static public function getFile(string $_id) {
         $filePatch = file::download($_id, DIR_DATAS_DOCS);
         
@@ -337,6 +429,12 @@ class document
         }
     }
 
+    /**
+     * Récupère les informations d'un document spécifique.
+     *
+     * @param float $_id Identifiant du document.
+     * @return array Retourne un tableau contenant les informations du document et ses fichiers associés.
+     */
     static public function get(float $_id){
         db::query("SELECT "
             . "" . DB_T_DOCUMENTS . ".id, "
@@ -369,6 +467,13 @@ class document
         return array("document" => $document, "files" => $files);
     }
 
+    /**
+     * Récupère les tags associés à un document spécifique.
+     *
+     * @param float $_idDocument Identifiant du document.
+     * @param float $_idTypeTags Type des tags.
+     * @return string|null Retourne une chaîne de caractères contenant les tags ou NULL si aucun tag n'est trouvé.
+     */
     static public function getTags(float $_idDocument, float $_idTypeTags){
         db::query("SELECT "
             . "" . DB_T_TAGS . ".label "
@@ -394,6 +499,12 @@ class document
         
     }
 
+    /**
+     * Récupère les fichiers associés à un document spécifique.
+     *
+     * @param float $_idDocument Identifiant du document.
+     * @return array|null Retourne un tableau des fichiers ou NULL si aucun fichier n'est trouvé.
+     */
     static public function getFiles(float $_idDocument){
         db::query("SELECT "
             . "" . DB_T_FILES . ".id, "
@@ -431,6 +542,13 @@ class document
         }
     }
 
+    /**
+     * Définit un fichier comme principal pour un document spécifique.
+     *
+     * @param float $_idDocument Identifiant du document.
+     * @param string $_idFile Identifiant du fichier à définir comme principal.
+     * @return void
+     */
     static public function principalFile(float $_idDocument, string $_idFile){
         db::query("UPDATE " . DB_T_DOCUMENT_FILES . " SET principal = :principal WHERE id_documents = :id_documents");
         db::bind(':principal', 0);
@@ -444,6 +562,12 @@ class document
         db::execute();
     }
 
+    /**
+     * Récupère les documents assignés à un utilisateur spécifique.
+     *
+     * @param float|null $_id Identifiant de l'utilisateur (facultatif).
+     * @return array Retourne un tableau des documents assignés.
+     */
     static public function getAssign(float $_id = NULL){
 
         $idUser = is_null($_id) ? session::getId() : $_id;
@@ -486,6 +610,12 @@ class document
         return db::resultset();
     }
 
+    /**
+     * Affiche les pièces jointes d'un document sous forme de liste HTML.
+     *
+     * @param array $_attachs Tableau des pièces jointes.
+     * @return void
+     */
     static public function printAttachement(array $_attachs){
         $principal = $_attachs["principal"];
         echo '<ol class="list-group list-group-numbered">';
@@ -521,6 +651,12 @@ class document
         echo '</ol><br />';
     }
 
+    /**
+     * Récupère les documents assignés à un utilisateur en fonction de ses tags.
+     *
+     * @param array|null $_tags Tableau des tags de l'utilisateur.
+     * @return int|null Retourne le nombre de documents assignés ou NULL si aucun document n'est trouvé.
+     */
     static public function myAssign(?array $_tags = NULL){
 
         if($_tags == NULL){
@@ -545,11 +681,21 @@ class document
         return db::single()["nb"];
     }
     
+    /**
+     * Retourne une alerte pour les documents assignés.
+     *
+     * @return int|null Retourne le nombre de documents assignés ou NULL si aucun document n'est trouvé.
+     */
     static public function badgeAlert(){
         $return = self::myAssign(user::getIdTags(session::getId()));
         return $return > 0 ? $return : NULL;
     }
 
+    /**
+     * Récupère les utilisateurs assignés à un document pour l'envoi d'emails.
+     *
+     * @return array Retourne un tableau des utilisateurs assignés.
+     */
     static public function assignMailDocument(){
         db::query("SELECT "
                     . "" . DB_T_USER . ".id, "
@@ -562,6 +708,12 @@ class document
         return db::resultset();
     }
 
+    /**
+     * Envoie un email récapitulatif des documents assignés à un utilisateur.
+     *
+     * @param array $_data Données nécessaires pour l'envoi de l'email.
+     * @return void
+     */
     public static function sendEmailCronAssign(array $_data)
     {
         $list = self::getAssign($_data["id"]);
@@ -605,6 +757,12 @@ class document
         }
     }
 
+    /**
+     * Génère un template d'email pour les documents assignés.
+     *
+     * @param array $_data Données nécessaires pour générer le template.
+     * @return string|false Retourne le template généré ou FALSE en cas d'échec.
+     */
     public static function templateMail(array $_data)
     {
         $logo_url = empty($_data["logo_url"]) ? "https://" . DOMAIN_CMS . "/img/logo.png" : $_data["logo_url"];
@@ -649,6 +807,12 @@ class document
         return $template;
     }
 
+    /**
+     * Génère un tableau HTML pour les emails assignés.
+     *
+     * @param array $_array Tableau des données des documents.
+     * @return string Retourne le tableau HTML généré.
+     */
     private static function getMailArray(array $_array){
         $return = NULL;
         foreach ($_array as $value) {

+ 15 - 6
core/class/user.class.php

@@ -1,11 +1,20 @@
 <?php
 
-class user {
-    
-    public function __construct() {
-    }
-
-    public static function getUserById(int $_id) {
+/**
+ * Classe `user`
+ *
+ * Cette classe gère les utilisateurs et leurs actions.
+ */
+class user
+{
+    /**
+     * Récupère les informations d'un utilisateur.
+     *
+     * @param int $userId L'ID de l'utilisateur.
+     * @return array|bool Les informations de l'utilisateur ou FALSE en cas d'erreur.
+     */
+    public static function getUser(int $_id)
+    {
         // Récupération des données de l'excel au format Json
         db::query("SELECT "
                 . "" . DB_T_USER . ".id AS id, "

+ 0 - 9
core/class/view.class.php

@@ -1,9 +0,0 @@
-<?php
-
-class view {
-    
-    public function printPage(string $_view, array $_array){
-        
-    }
-    
-}

+ 24 - 2
core/class/xml.class.php

@@ -1,7 +1,29 @@
 <?php
 
-class xml{
-    public static function print(string $_string){
+/**
+ * Classe `xml`
+ *
+ * Cette classe fournit des outils pour manipuler et afficher des données XML de manière formatée.
+ *
+ * Fonctionnalités principales :
+ * - Affichage d'une chaîne XML formatée et colorée pour une meilleure lisibilité.
+ * - Application de styles CSS pour améliorer la présentation des données XML.
+ *
+ * @package Core\Class
+ */
+class xml
+{
+    /**
+     * Affiche une chaîne XML formatée et colorée.
+     *
+     * Cette méthode utilise DOMDocument pour formater le XML et applique des styles CSS
+     * pour une meilleure lisibilité dans un navigateur web.
+     *
+     * @param string $_string La chaîne XML à afficher.
+     * @return void
+     */
+    public static function print(string $_string)
+    {
         // Utiliser DOMDocument pour rendre le XML lisible
         $dom = new DOMDocument();
         $dom->preserveWhiteSpace = false;

+ 1 - 1
core/views/pages/cms.document.php

@@ -30,7 +30,7 @@ if (debug::isFile("debug")) {
     (!empty($files)) ? debug::log($files, "Données brutes files") : NULL;
 }
 
-$userTags = user::getUserById(session::getId())["tags"];
+$userTags = user::getUser(session::getId())["tags"];
 
 ?>
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">

+ 2 - 2
core/views/pages/cms.user.php

@@ -7,7 +7,7 @@ if(core::ifGet("add") AND access::ifAccesss("add-user")) {
 } else {
     
     if( core::ifGet("id") == FALSE OR  (core::ifGet("id") AND session::getId() == core::getGet("id"))){
-        $user = user::getUserById(session::getId());
+        $user = user::getUser(session::getId());
         $submit = "Modifier votre profil";
         $titre = "Votre fiche de profil";
         $protect = 1;
@@ -16,7 +16,7 @@ if(core::ifGet("add") AND access::ifAccesss("add-user")) {
         }
     } else {
         if(access::ifAccesss("add-user")){
-            $user = user::getUserById(core::getGet("id"));
+            $user = user::getUser(core::getGet("id"));
             if(is_array($user)){
                 $submit = "Modifier ce profil";
                 $titre = "Fiche de " . $user["prenom"] . " " . $user["nom"];