historique.class.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. /**
  3. * Classe historique
  4. *
  5. * Cette classe gère l'enregistrement et la récupération des logs historiques,
  6. * y compris les références, les types, les utilisateurs et les pages associées.
  7. */
  8. class historique
  9. {
  10. /**
  11. * Enregistre une référence historique dans la base de données.
  12. *
  13. * @param string $_name Nom de la référence.
  14. * @return void
  15. */
  16. public static function recRef(string $_name) {
  17. db::query("INSERT IGNORE INTO " . DB_T_HISTORIQUE_REF . " (name) VALUES (:name)");
  18. db::bind(':name', $_name);
  19. try {
  20. db::execute();
  21. } catch (Exception $ex) {
  22. alert::recError("Erreur lors de l'enregistrement de la référence historique");
  23. }
  24. }
  25. /**
  26. * Récupère l'identifiant d'une référence historique par son nom.
  27. *
  28. * @param string $_name Nom de la référence.
  29. * @return int Identifiant de la référence.
  30. */
  31. public static function getIdRef(string $_name) {
  32. db::query("SELECT id FROM " . DB_T_HISTORIQUE_REF . " WHERE name = :name");
  33. db::bind(':name', $_name);
  34. return db::single()["id"];
  35. }
  36. /**
  37. * Récupère tous les logs historiques.
  38. *
  39. * @return array Retourne un tableau des logs historiques.
  40. */
  41. public static function getAll() {
  42. db::query("SELECT "
  43. . "" . DB_T_HISTORIQUE . ".id, "
  44. . "" . DB_T_HISTORIQUE . ".idType ,"
  45. . "HISTO_TYPE.name AS type ,"
  46. . "" . DB_T_HISTORIQUE . ".idPage, "
  47. . "HISTO_PAGE.name AS page, "
  48. . "" . DB_T_HISTORIQUE . ".idUser ,"
  49. . "COALESCE(CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom), 'CMS System') AS 'user' ,"
  50. . "" . DB_T_HISTORIQUE . ".log, "
  51. . "" . DB_T_HISTORIQUE . ".addDate "
  52. . "FROM " . DB_T_HISTORIQUE . " "
  53. . "LEFT JOIN " . DB_T_USER . " ON " . DB_T_HISTORIQUE . ".idUser = " . DB_T_USER . ".id "
  54. . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_TYPE ON " . DB_T_HISTORIQUE . ".idType = HISTO_TYPE.id "
  55. . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_PAGE ON " . DB_T_HISTORIQUE . ".idPage = HISTO_PAGE.id ");
  56. return db::resultset();
  57. }
  58. /**
  59. * Récupère les logs historiques associés à une page spécifique.
  60. *
  61. * @param string $_idPage Identifiant de la page.
  62. * @return array Retourne un tableau des logs pour la page.
  63. */
  64. public static function getByPage(string $_idPage) {
  65. db::query("SELECT "
  66. . "" . DB_T_HISTORIQUE . ".id, "
  67. . "" . DB_T_HISTORIQUE . ".idType ,"
  68. . "HISTO_TYPE.name AS type ,"
  69. . "" . DB_T_HISTORIQUE . ".idPage, "
  70. . "HISTO_PAGE.name AS page, "
  71. . "" . DB_T_HISTORIQUE . ".idUser ,"
  72. . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' ,"
  73. . "" . DB_T_HISTORIQUE . ".log, "
  74. . "" . DB_T_HISTORIQUE . ".addDate "
  75. . "FROM " . DB_T_HISTORIQUE . " "
  76. . "INNER JOIN " . DB_T_USER . " ON " . DB_T_HISTORIQUE . ".idUser = " . DB_T_USER . ".id "
  77. . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_TYPE ON " . DB_T_HISTORIQUE . ".idType = HISTO_TYPE.id "
  78. . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_PAGE ON " . DB_T_HISTORIQUE . ".idPage = HISTO_PAGE.id "
  79. . "WHERE " . DB_T_HISTORIQUE . ".idPage = :idPage");
  80. db::bind(':idPage', $_idPage);
  81. return db::resultset();
  82. }
  83. /**
  84. * Récupère les logs historiques associés à un utilisateur spécifique.
  85. *
  86. * @param int $_idUser Identifiant de l'utilisateur.
  87. * @return array Retourne un tableau des logs pour l'utilisateur.
  88. */
  89. public static function getByUser(int $_idUser) {
  90. db::query("SELECT "
  91. . "" . DB_T_HISTORIQUE . ".id, "
  92. . "" . DB_T_HISTORIQUE . ".type ,"
  93. . "" . DB_T_HISTORIQUE . ".idPage, "
  94. . "" . DB_T_HISTORIQUE . ".idUser ,"
  95. . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' ,"
  96. . "" . DB_T_HISTORIQUE . ".log, "
  97. . "" . DB_T_HISTORIQUE . ".addDate "
  98. . "FROM " . DB_T_HISTORIQUE . " "
  99. . "WHERE " . DB_T_HISTORIQUE . ".idUser = :idUser");
  100. db::bind(':idUser', $_idUser);
  101. return db::resultset();
  102. }
  103. /**
  104. * Récupère les logs historiques associés à un type spécifique.
  105. *
  106. * @param string $_type Type de log.
  107. * @return array Retourne un tableau des logs pour le type.
  108. */
  109. public static function getByType(string $_type) {
  110. db::query("SELECT "
  111. . "" . DB_T_HISTORIQUE . ".id, "
  112. . "" . DB_T_HISTORIQUE . ".idType ,"
  113. . "HISTO_TYPE.name AS type ,"
  114. . "" . DB_T_HISTORIQUE . ".idPage, "
  115. . "HISTO_PAGE.name AS page, "
  116. . "" . DB_T_HISTORIQUE . ".idUser ,"
  117. . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' ,"
  118. . "" . DB_T_HISTORIQUE . ".log, "
  119. . "" . DB_T_HISTORIQUE . ".addDate "
  120. . "FROM " . DB_T_HISTORIQUE . " "
  121. . "INNER JOIN " . DB_T_USER . " ON " . DB_T_HISTORIQUE . ".idUser = " . DB_T_USER . ".id "
  122. . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_TYPE ON " . DB_T_HISTORIQUE . ".idType = HISTO_TYPE.id "
  123. . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_PAGE ON " . DB_T_HISTORIQUE . ".idPage = HISTO_PAGE.id "
  124. . "WHERE " . DB_T_HISTORIQUE . ".type = :type");
  125. db::bind(':type', $_type);
  126. return db::resultset();
  127. }
  128. /**
  129. * Enregistre les logs d'alertes dans l'historique si activé.
  130. *
  131. * @return void
  132. */
  133. public static function recordLogs(){
  134. if(session::isConnect() AND (alert::getSuccess() OR alert::getWarning() OR alert::getError())){
  135. if(alert::getSuccess() AND core::getConfig("LOG_SUCCESS") == 1){
  136. self::recordAlert("SUCCESS");
  137. }
  138. if(alert::getWarning() AND core::getConfig("LOG_WARNING") == 1){
  139. self::recordAlert("WARNING");
  140. }
  141. if(alert::getError() AND core::getConfig("LOG_ERROR") == 1){
  142. self::recordAlert("ERROR");
  143. }
  144. }
  145. }
  146. /**
  147. * Enregistre une alerte spécifique dans l'historique.
  148. *
  149. * @param string $_type Type de l'alerte (SUCCESS, WARNING, ERROR).
  150. * @return void
  151. */
  152. public static function recordAlert(string $_type){
  153. $log = NULL;
  154. switch ($_type) {
  155. case 'SUCCESS':
  156. $alert = alert::getSuccess();
  157. break;
  158. case 'WARNING':
  159. $alert = alert::getWarning();
  160. break;
  161. case 'ERROR':
  162. $alert = alert::getError();
  163. break;
  164. default:
  165. $alert = NULL;
  166. alert::recError("Erreur lors de l'enregistrement de l'historique");
  167. break;
  168. }
  169. if($alert != NULL){
  170. foreach ($alert as $value) {
  171. $log .= $value . "<br />";
  172. }
  173. self::recRef($_SERVER["REQUEST_URI"]);
  174. self::add(array(
  175. "idType" => self::getIdRef($_type),
  176. "idUser" => session::getId(),
  177. "idPage" => self::getIdRef($_SERVER["REQUEST_URI"]),
  178. "log" => $log
  179. ));
  180. }
  181. }
  182. /**
  183. * Ajoute un log dans l'historique.
  184. *
  185. * @param array $_input Tableau contenant les informations du log (idType, idUser, idPage, log).
  186. * @return void
  187. */
  188. public static function add(array $_input){
  189. db::query("INSERT INTO " . DB_T_HISTORIQUE . " (idType, idUser, idPage, log) VALUES (:idType, :idUser, :idPage, :log)");
  190. db::bind(':idType', $_input["idType"]);
  191. db::bind(':idUser', $_input["idUser"]);
  192. db::bind(':idPage', $_input["idPage"]);
  193. db::bind(':log', $_input["log"]);
  194. try {
  195. db::execute();
  196. } catch (Exception $ex) {
  197. alert::recError("Erreur lors de l'enregistrement de l'historique");
  198. }
  199. }
  200. }