| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <?php
- /**
- * Classe historique
- *
- * Cette classe gère l'enregistrement et la récupération des logs historiques,
- * y compris les références, les types, les utilisateurs et les pages associées.
- */
- class historique
- {
- /**
- * Enregistre une référence historique dans la base de données.
- *
- * @param string $_name Nom de la référence.
- * @return void
- */
- public static function recRef(string $_name) {
- db::query("INSERT IGNORE INTO " . DB_T_HISTORIQUE_REF . " (name) VALUES (:name)");
- db::bind(':name', $_name);
- try {
- db::execute();
- } catch (Exception $ex) {
- alert::recError("Erreur lors de l'enregistrement de la référence historique");
- }
- }
- /**
- * Récupère l'identifiant d'une référence historique par son nom.
- *
- * @param string $_name Nom de la référence.
- * @return int Identifiant de la référence.
- */
- public static function getIdRef(string $_name) {
- db::query("SELECT id FROM " . DB_T_HISTORIQUE_REF . " WHERE name = :name");
- db::bind(':name', $_name);
- return db::single()["id"];
- }
- /**
- * Récupère tous les logs historiques.
- *
- * @return array Retourne un tableau des logs historiques.
- */
- public static function getAll() {
- db::query("SELECT "
- . "" . DB_T_HISTORIQUE . ".id, "
- . "" . DB_T_HISTORIQUE . ".idType ,"
- . "HISTO_TYPE.name AS type ,"
- . "" . DB_T_HISTORIQUE . ".idPage, "
- . "HISTO_PAGE.name AS page, "
- . "" . DB_T_HISTORIQUE . ".idUser ,"
- . "COALESCE(CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom), 'CMS System') AS 'user' ,"
- . "" . DB_T_HISTORIQUE . ".log, "
- . "" . DB_T_HISTORIQUE . ".addDate "
- . "FROM " . DB_T_HISTORIQUE . " "
- . "LEFT JOIN " . DB_T_USER . " ON " . DB_T_HISTORIQUE . ".idUser = " . DB_T_USER . ".id "
- . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_TYPE ON " . DB_T_HISTORIQUE . ".idType = HISTO_TYPE.id "
- . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_PAGE ON " . DB_T_HISTORIQUE . ".idPage = HISTO_PAGE.id ");
- return db::resultset();
- }
- /**
- * Récupère les logs historiques associés à une page spécifique.
- *
- * @param string $_idPage Identifiant de la page.
- * @return array Retourne un tableau des logs pour la page.
- */
- public static function getByPage(string $_idPage) {
- db::query("SELECT "
- . "" . DB_T_HISTORIQUE . ".id, "
- . "" . DB_T_HISTORIQUE . ".idType ,"
- . "HISTO_TYPE.name AS type ,"
- . "" . DB_T_HISTORIQUE . ".idPage, "
- . "HISTO_PAGE.name AS page, "
- . "" . DB_T_HISTORIQUE . ".idUser ,"
- . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' ,"
- . "" . DB_T_HISTORIQUE . ".log, "
- . "" . DB_T_HISTORIQUE . ".addDate "
- . "FROM " . DB_T_HISTORIQUE . " "
- . "INNER JOIN " . DB_T_USER . " ON " . DB_T_HISTORIQUE . ".idUser = " . DB_T_USER . ".id "
- . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_TYPE ON " . DB_T_HISTORIQUE . ".idType = HISTO_TYPE.id "
- . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_PAGE ON " . DB_T_HISTORIQUE . ".idPage = HISTO_PAGE.id "
- . "WHERE " . DB_T_HISTORIQUE . ".idPage = :idPage");
- db::bind(':idPage', $_idPage);
- return db::resultset();
- }
- /**
- * Récupère les logs historiques associés à un utilisateur spécifique.
- *
- * @param int $_idUser Identifiant de l'utilisateur.
- * @return array Retourne un tableau des logs pour l'utilisateur.
- */
- public static function getByUser(int $_idUser) {
- db::query("SELECT "
- . "" . DB_T_HISTORIQUE . ".id, "
- . "" . DB_T_HISTORIQUE . ".type ,"
- . "" . DB_T_HISTORIQUE . ".idPage, "
- . "" . DB_T_HISTORIQUE . ".idUser ,"
- . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' ,"
- . "" . DB_T_HISTORIQUE . ".log, "
- . "" . DB_T_HISTORIQUE . ".addDate "
- . "FROM " . DB_T_HISTORIQUE . " "
- . "WHERE " . DB_T_HISTORIQUE . ".idUser = :idUser");
- db::bind(':idUser', $_idUser);
- return db::resultset();
- }
- /**
- * Récupère les logs historiques associés à un type spécifique.
- *
- * @param string $_type Type de log.
- * @return array Retourne un tableau des logs pour le type.
- */
- public static function getByType(string $_type) {
- db::query("SELECT "
- . "" . DB_T_HISTORIQUE . ".id, "
- . "" . DB_T_HISTORIQUE . ".idType ,"
- . "HISTO_TYPE.name AS type ,"
- . "" . DB_T_HISTORIQUE . ".idPage, "
- . "HISTO_PAGE.name AS page, "
- . "" . DB_T_HISTORIQUE . ".idUser ,"
- . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' ,"
- . "" . DB_T_HISTORIQUE . ".log, "
- . "" . DB_T_HISTORIQUE . ".addDate "
- . "FROM " . DB_T_HISTORIQUE . " "
- . "INNER JOIN " . DB_T_USER . " ON " . DB_T_HISTORIQUE . ".idUser = " . DB_T_USER . ".id "
- . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_TYPE ON " . DB_T_HISTORIQUE . ".idType = HISTO_TYPE.id "
- . "INNER JOIN " . DB_T_HISTORIQUE_REF . " HISTO_PAGE ON " . DB_T_HISTORIQUE . ".idPage = HISTO_PAGE.id "
- . "WHERE " . DB_T_HISTORIQUE . ".type = :type");
- db::bind(':type', $_type);
- return db::resultset();
- }
- /**
- * Enregistre les logs d'alertes dans l'historique si activé.
- *
- * @return void
- */
- public static function recordLogs(){
- if(session::isConnect() AND (alert::getSuccess() OR alert::getWarning() OR alert::getError())){
- if(alert::getSuccess() AND core::getConfig("LOG_SUCCESS") == 1){
- self::recordAlert("SUCCESS");
- }
- if(alert::getWarning() AND core::getConfig("LOG_WARNING") == 1){
- self::recordAlert("WARNING");
- }
- if(alert::getError() AND core::getConfig("LOG_ERROR") == 1){
- self::recordAlert("ERROR");
- }
- }
- }
- /**
- * Enregistre une alerte spécifique dans l'historique.
- *
- * @param string $_type Type de l'alerte (SUCCESS, WARNING, ERROR).
- * @return void
- */
- public static function recordAlert(string $_type){
- $log = NULL;
- switch ($_type) {
- case 'SUCCESS':
- $alert = alert::getSuccess();
- break;
- case 'WARNING':
- $alert = alert::getWarning();
- break;
- case 'ERROR':
- $alert = alert::getError();
- break;
- default:
- $alert = NULL;
- alert::recError("Erreur lors de l'enregistrement de l'historique");
- break;
- }
- if($alert != NULL){
- foreach ($alert as $value) {
- $log .= $value . "<br />";
- }
- self::recRef($_SERVER["REQUEST_URI"]);
- self::add(array(
- "idType" => self::getIdRef($_type),
- "idUser" => session::getId(),
- "idPage" => self::getIdRef($_SERVER["REQUEST_URI"]),
- "log" => $log
- ));
- }
- }
- /**
- * Ajoute un log dans l'historique.
- *
- * @param array $_input Tableau contenant les informations du log (idType, idUser, idPage, log).
- * @return void
- */
- public static function add(array $_input){
- db::query("INSERT INTO " . DB_T_HISTORIQUE . " (idType, idUser, idPage, log) VALUES (:idType, :idUser, :idPage, :log)");
- db::bind(':idType', $_input["idType"]);
- db::bind(':idUser', $_input["idUser"]);
- db::bind(':idPage', $_input["idPage"]);
- db::bind(':log', $_input["log"]);
- try {
- db::execute();
- } catch (Exception $ex) {
- alert::recError("Erreur lors de l'enregistrement de l'historique");
- }
- }
- }
|