<?php

/**
 * Classe dédiée à l'enregistrement des évènements utilisateurs
 *
 */
class Track
{

    const application = 'Oxaproc';

    public function __construct()
    {}

    /**
     * Fonction retournant la date du jour au format AAAAMMJJ
     *
     * @return string
     */
    public static function getDate()
    {
        return date('Ymd');
    }

    /**
     * Fonction retournant l'heure au format HHMMSS
     *
     * @return string
     */
    public static function getHeure()
    {
        return date('His');
    }

    /**
     * Fonction enregistrant un évènement de connexion de l'utilisateur
     *
     * @param string $login
     * @return booelan
     */
    public static function trackConnexionIn($login)
    {
        $date = Track::getDate();
        // dossier 22722
        // $heure = Track::getHeure();
        $application = Track::application;
        $operation = 'LOGIN';
        $type_objet = 'USER';
        $id1_obj = $login;
        $tmpSession = mb_substr(session_id(), 0, 40);
        $id2_obj = $tmpSession;
        
        return SqlTrack::rqInsertEventOxalog($login, $date, $application, $operation, $type_objet, $id1_obj, $id2_obj)->ExecuteSql();
    }

    /**
     * Fonction enregistrant un évènement de déconnexion de l'utilisateur
     *
     * @param string $login
     * @return booelan
     */
    public static function trackConnexionOut(& $login)
    {
        $date = Track::getDate();
        // dossier 22722
        // $heure = Track::getHeure();
        $application = Track::application;
        $operation = 'LOGOUT';
        $type_objet = 'USER';
        $id1_obj = $login;
        $tmpSession = mb_substr(session_id(), 0, 40);
        $id2_obj = $tmpSession;
        
        return SqlTrack::rqInsertEventOxalog($login, $date, $application, $operation, $type_objet, $id1_obj, $id2_obj)->ExecuteSql();
    }

    public static function logAudit($CODEOP, $CODEACT, $RESULTLIB = '', $RESULTSTR = '', $RESULTNUM = '', $DUREE = 0)
    {
        global $logAuditOk;
        global $connecteur;
        
        $liste_result = '';
        if ($logAuditOk && $connecteur) {
            
            $r = & SqlUsers::rqIsAuditActif()->Trouve1();
            
            if (is_array($r) && $r['LIB01PARV'] == 1) {
                $URLACT = $_SERVER['PHP_SELF'];
                $IDSESSION = session_id();
                $DATEACT = date('Ymd', time());
                $HEUREACT = date('His', time());
                $LOGIN = (array_key_exists('Session_Login', $_SESSION)) ? $_SESSION['Session_Login'] : '';
                
                // Si on est en Opération BackUp (entrée ) on renseigne le champs LOGIN avec le login d'origine (et non avec le login bakup)
                if ($CODEOP === 'BACKUP' && $CODEACT === 'ENTREE')
                    $LOGIN = $_SESSION['user_origine'];
                
                // si $RESULTSTR est un tableau, on reprend toutes les valeurs pour les afficher une liste dans le cas de liste catalogue
                if (is_array($RESULTSTR)) {
                    foreach ($RESULTSTR as & $enreg)
                        if (! is_array($enreg))
                            $liste_result .= $enreg . '|';
                    
                    $RESULTSTR = $liste_result;
                }
                
                if ($CODEOP == 'INTERNE') {
                    $RESULTLIB = 'IP CONN';
                    $RESULTNUM = $_SERVER['REMOTE_ADDR'];
                }

                $sql = 'insert into OXAAUDITACT ' . '(IDMODULE,IDSESSION,LOGIN,DATEACT,HEUREACT,URLACT,CODEOP,CODEACT,RESULTLIB,RESULTSTR,RESULTNUM,DUREE) ' . 'values ' . "('" . 'OXAPROC' . '\'' . ",'" . mb_substr(ReplaceSqlPointeur($IDSESSION), 0, 40) . '\'' . ",'" . ReplaceSqlPointeur($LOGIN) . '\'' . ",'" . ReplaceSqlPointeur($DATEACT) . '\'' . ",'" . ReplaceSqlPointeur($HEUREACT) . '\'' . ",'" . ReplaceSqlPointeur($URLACT) . '\'' . ",'" . ReplaceSqlPointeur($CODEOP) . '\'' . ",'" . ReplaceSqlPointeur($CODEACT) . '\'' . ",'" . ReplaceSqlPointeur($RESULTLIB) . '\'' . ",'" . ReplaceSqlPointeur($RESULTSTR) . '\'' . ",'" . ReplaceSqlPointeur($RESULTNUM) . '\'' . ',' . ReplaceSqlPointeur($DUREE) . '' . ')';
                $reqSql = new RequeteSQL($sql, DB_OXASQLDB);
                $reqSql->ExecuteSql();
                // $connecteur->ExecSql($sql, DB_OXASQLDB);
            }
        }
    }
}

