<?php

// Application web.
// Démarrage de la session
session_start();

define("LIBERATIONSWEB", 20091223);

//Librairie de fonctions
require (__DIR__ . '/vendor/autoload.php');
require_once("lib/libconfig.inc.php");
require_once("lib/libsession.inc.php");
require_once("lib/libfonctions.inc.php");
require_once("lib/libmysql.inc.php");
require_once("lib/libencode.inc.php");
require_once("lib/libforms.inc.php");
require_once("lib/libcourriel.inc.php");
require_once("lib/libliberations.inc.php");
require_once("lib/lib2fa.inc.php");
require_once("lib/libcentrale.inc.php");

$etatsession = isValidSession();

//Cueillette de données du formulaire
if ($etat == "service") {
    $page = "service";
} else {
    if (!empty(filter_input(INPUT_POST, "page"))) {
        $page = antiInjection(filter_input(INPUT_POST, "page"));
    } elseif (!empty(filter_input(INPUT_GET, "page"))) {
        $page = antiInjection(filter_input(INPUT_GET, "page"));
    } else {
        $page = "";
    }
}

// Si ouverture dans une nouvelle fenêtre
switch ($page) {
    case "compilation_documents":
    case "compilation_soldes":
        $jeton = $_SESSION['jeton'];
        break;
    default:
        if ($etatsession == -2) {
            header("Location:index.php");
            die();
        } elseif ($etatsession == -4) {
            $page = "profil";
        } elseif ($etatsession != 1) {
            fermeSessionUtilisateur($etatsession);
        }

        //Regénération du jeton de sécurité
        $jeton = prepareToken();
        $_SESSION['jeton'] = $jeton;
        break;
}

filterInputValue();
unset($modesqlmaitre);

//Reste sur la page profil si le token 2fa n'est pas spécifié.
//Reste sur la page profil si le mot de passe est temporaire n'a pas été changé.
$page = checkprofil(strtolower($page));

buildConfigCentrale();

$page2 = "";
switch ($page) {
    //Fichiers du menu
    case "compilation_documents":
    case "compilation_soldes":
    case "generateur_rapports":
    case "liste_articles":
    case "liste_employes":
    case "liste_employeurs":
    case "liste_liberations":
    case "liste_lieuxtravail":
    case "liste_nombre_employes":
    //TODO vérifier l'utilisation
    //case "liste_paiements":
    case "liste_periodes":
    case "parametres_centrale":
    case "profil":
    case "retrait_liberations":
    case "utilitaires":
        $page2 = $page . ".inc.php";
        $log_action = "Accès à la page";
        break;
    case "copie_sauvegarde":
    case "execute_copie_db1":
    case "execute_copie_db2":
        $page2 = "./back_db/" . $page . ".inc.php";
        $log_action = "Accès à la page";
        break;

    case "liste_utilisateurs":
        $modesqlmaitre = true;
        $page2 = $page . ".inc.php";
        $log_action = "Gestion des utilisateurs";
        break;
    //En période de mise à jour et d'entretien.
    case "service":
        $page2 = "service.inc.php";
        break;
    //Fermeture de l'application
    case "fermer":
        $page2 = $page . ".inc.php";
        $log_action = "Fermeture de l'application";
        break;
    //Autres fichiers
    default :
        $page2 = "menuadm.inc.php";
        $log_action = "Menu principal";
        break;
}

// Prépare les headers de la session du navigateur
print prepareSession();

// Page actuelle
$SCRIPT_NAME = filter_input(INPUT_SERVER, 'SCRIPT_NAME');

//Mise à jour des infos de l'utilisateur
updateSessionUtilisateur($page2, $log_action);

//Ne doit pas être en gestion des utilisateurs
if (!isset($modesqlmaitre)) {
    setConnectionSql();
}

// Tri
// ---
if (!isset($tri)) {
    unset($tri);
    //TODO vérifier si le input_get sera nécessaire
    $tri = (filter_input(INPUT_POST, "tri") !== "" && is_numeric(filter_input(INPUT_POST, "tri"))) ? antiInjection(filter_input(INPUT_POST, "tri")) : 1;
}

// Flèche du tri
// -------------
if (!isset($dir)) {
    unset($dir, $flechetri);
    $flechetri = false;
    //TODO vérifier si le input_get est nécessaire
    if (filter_input(INPUT_POST, "dir") !== "") {
        $dir = filter_input(INPUT_POST, "dir");
        if ($dir != "asc" && $dir != "desc") {
            $dir = "asc";
        }
    } else {
        $dir = "asc";
    }
} else {
    if ($dir == "asc" || $dir == "desc") {
        $flechetri = true;
    }
}

// ---------------------------------
// Nombre maximal de lignes par page
// ---------------------------------
if (!isset($nombreaffiche)) {
    $nombreaffiche = 15;
}
if (!in_array($nombreaffiche, array(15, 30, 45, 60, 120, 240))) {
    $nombreaffiche = 15;
}

if (!isset($nopage)) {
    unset($nopage);
    if (filter_input(INPUT_POST, "nopage", FILTER_SANITIZE_NUMBER_INT)) {
        $nopage = intval(filter_input(INPUT_POST, "nopage", FILTER_SANITIZE_NUMBER_INT));
    } else {
        $nopage = 1;
    }
} else {
    if (!is_numeric($nopage) || $nopage < 1) {
        $nopage = 1;
    }
}

print "      <script type=\"text/javascript\">\n";
print "         self.name=\"index2\";\n";
print "      </script>\n";
print "   </HEAD>\n";
print "   <body>\n";
print " ";

// Inclusion de la page enfant, ex: menu
require($page2);

//Pied de page
print "<br><br> ";
print "<noscript>\n";
print "     <div style=\"text-align:center; color:#ff0000;\">\n";
print "         Vous devez autoriser l'exécution du code Javascript dans votre navigateur.\n";
print "         <br>\n";
print "         Sans ceci, plusieurs fonctionnalités seront manquantes et des erreurs pourraient survenir.\n";
print "     </div>\n";
print "</noscript>\n";
print "<script type='text/javascript'>";
print "   $(document).ready(function() {";
print "      demarreHorloge();";
print "   });";
print "</script>";
print "</BODY>\n";
print "</HTML>";
