<?php

// --------
// Sécurité
// --------
if (isValidConstant() != 1) {
    fermeSessionUtilisateur();
}

// ----------------------
// Droit de l'utilisateur
// ----------------------
if ($_SESSION['gestion_site'] < 'Oui') {
    exit;
}

// Pour mettre la date la plus récente en premier
if (isset($dir2)) {
    $dir = $dir2;
    unset($flechetri);
}

// ------------------------------
// Caractéristiques du formulaire
// Période normale
// ------------------------------
unset($module);
$module = array(
    "titre" => "Gestion des périodes",
    "urldest" => $SCRIPT_NAME . "?page=liste_periodes",
    "recherche" => array("engin" => false),
    "jeton" => $jeton,
    "taille" => "550px",
    "lientri" => true,
    "entete" => array(
        1 => array("Début" => "periode"),
        2 => array("Fin" => "periode"),
        3 => array("Action" => "expression")
    ),
    "msg" => array(
        "maj_ok" => "Mise à jour de la période des libérations effectuée avec succès.",
        "maj_echec" => "L'opération de mise à jour de la période des libérations a échouée."
    )
);

$nombreaffiche = 25;

//Mode administratif
$modeAdmin = ($_SESSION['gestion_site'] >= "Oui" ? "Oui" : "Non");

$rtri = antiInjection($module["entete"][$tri][key($module["entete"][$tri])] . " " . $dir);

//Le mode admin doit être activé.
if ($modeAdmin == "Oui") {
// ------------------
// Requête sur le tri
// ------------------

    if (isset($action)) {
        $msg = "";
        //Cueillette de données du formulaire
        if (!empty(filter_input(INPUT_POST, 'lnoperiode'))) {
            $lnoperiode = antiInjection($lnoperiode);
        }
        if ($action == "Ajouter la prochaine période") {

            $anneeProchaineAAjouter = false;

            //Prochaine Année
            $prochaineAnnee = (int) date("Y") + 1;
            $nouvellePeriode = $prochaineAnnee . "-04-01";

            unset($sqlparam);
            $sqlparam["table"][] = "periodes";
            $sqlparam["champs"][] = "refperiode";
            $sqlparam["where"][] = "date_format(periode,\"%Y-%m-%d\")" . sprintf("='%s'", $nouvellePeriode);

            $result = executerRequeteSql($sqlparam);

            // La prochaine année est créée, passer à l'année suivante.
            if (isset($result) && !empty($result[0]["refperiode"])) {

                //Prochaine Année
                $prochaineAnnee++;
                $nouvellePeriode = $prochaineAnnee . "-04-01";

                unset($sqlparam);
                $sqlparam["table"][] = "periodes";
                $sqlparam["champs"][] = "refperiode";
                $sqlparam["where"][] = "date_format(periode,\"%Y-%m-%d\")" . sprintf("='%s'", $nouvellePeriode);

                $result = executerRequeteSql($sqlparam);
                if (!isset($result) || empty($result[0]["refperiode"])) {
                    $anneeProchaineAAjouter = true;
                }
            } else {
                $anneeProchaineAAjouter = true;
            }

            if ($anneeProchaineAAjouter) {
                unset($sqlparam);

                $sqlparam["type"] = "INSERT";
                $sqlparam["table"][] = "periodes";
                $sqlparam["champs"]["periode"] = sprintf("'%s'", $nouvellePeriode);
                $sqlparam["champs"]["archive"] = 0;

                $result = executerRequeteSql($sqlparam);
            }
        } elseif ($action == "Choisir cette période") {
            $sqlparam["type"] = "UPDATE";
            $sqlparam["table"][] = "compteurautre";
            $sqlparam["champs"]["renouvellement"] = "'$lnoperiode'";
            $sqlparam["where"][] = "refcompteur = 1";

            $result = executerRequeteSql($sqlparam);

            if (isset($result)) {
                $module["resultatSQL"] = true;
                $module["message"] = $module["msg"]["maj_ok"];
            } else {
                $module["resultatSQL"] = false;
                $module["message"] = $module["msg"]["maj_echec"];
            }
        }
    }
} else {
    //Pas de liste à faire apparaître
    unset($module["entete"]);
}


$i = 0;
unset($sqlparam);

$sqlparam["table"][] = "periodes";
$sqlparam["champs"][] = "refperiode";
$sqlparam["champs"][] = "unix_timestamp(periode) as periode";
$sqlparam["champs"][] = "(SELECT count(refperiode) FROM periodes where archive=0) as compte";
$sqlparam["where"][] = "archive=0";
$sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . "," . $nombreaffiche;
$sqlparam["ordre"][] = $rtri;

$result = executerRequeteSql($sqlparam);
$module["compte"] = $result[0]["compte"];

print preparerModule($module);

if ($modeAdmin == "Oui") {
    //Ajout d'une année de libération
    print "<p>";
    print "<div style='width:500px; margin:auto; text-align:center;'>";
    print "<form action='" . $SCRIPT_NAME . "?page=liste_periodes&jeton=" . $jeton;
    print "' name='sous_formulaire_ajout' method='POST'>";
    print "<INPUT style='cursor:pointer;' name='action' TYPE='submit' VALUE='Ajouter la prochaine période' >";
    print "<input name='dir' type='hidden' value='$dir'>\n";
    print "<input name='tri' type='hidden' value='$tri'>\n";
    print "</form>";
    print "</p>";
}

unset($periodestd);
$periodestd = getPeriodeCourante();

// Période actuelle
print "<p>";
print "<div style='width:500px; margin:auto; text-align:center;'>";
print "Période actuellement sélectionnée : " . $periodestd["datedebut"] . "</div>";
print "</p>";

if ($modeAdmin == "Oui") {
    //Liste principale
    if (isset($result)) {
        $i = ($nopage - 1) * $nombreaffiche + 1;
        unset($style);
        $style = "border:1px solid #cfcfcf; font-family:arial, helvetica, sans-serif; ";
        $style .= "font-size:9pt; margin-left:5px; margin-right:5px;";
        //Boucle de lecture
        foreach ($result as $clef => $champs) {
            $datedebut = date("Y-m-d", mktime(0, 0, 0, date("m", $champs["periode"]),
                            date("d", $champs["periode"]), date("Y", $champs["periode"]) - 1));
            $datefin = date("Y-m-d", mktime(0, 0, 0, date("m", $champs["periode"]),
                            date("d", $champs["periode"]) - 1, date("Y", $champs["periode"])));

            print "<tr>\n";
            if ($datedebut != $periodestd["datedebut"]) {
                print "<td style='min-width:10%; max-width:10%; $style'>" . $i . "</td>";
                print "<td style='min-width:30%; max-width:30%; $style'>" . $datedebut . "</td>";
                print "<td style='min-width:30%; max-width:30%; $style'>" . $datefin . "</td>";
                print "<td style='min-width:30%; max-width:30%; $style'>\n";
                print "<form action='" . $SCRIPT_NAME . "?page=liste_periodes&dir2=$dir&tri=$tri&jeton=" . $jeton;
                print "' name='sous_formulaire$i' method='POST'>";
                print "<INPUT style='cursor:pointer;' name='action' TYPE='submit' VALUE='Choisir cette période' >";
                print "<input name='lnoperiode' type='hidden' value='" . date("Y-m-d", $champs["periode"]) . "'>\n";
                print "<input name='dir' type='hidden' value='$dir'>\n";
                print "<input name='tri' type='hidden' value='$tri'>\n";
                print "</form>";
            } else {
                print "<td style='min-width:10%; max-width:10%; $style color:red;'>" . $i . "</td>";
                print "<td style='min-width:30%; max-width:30%; $style color:red;'>" . $datedebut . "</td>";
                print "<td style='min-width:30%; max-width:30%; $style color:red;'>" . $datefin . "</td>";
                print "<td style='min-width:30%; max-width:30%; $style color:red;'>\n";
                print "<div style='margin: 0px; padding: 0px; font-family:arial, helvetica, sans-serif; ";
                print "font-size:11pt;'>";
                echo "&nbsp;Période sélectionnée&nbsp;";
                echo "</div>";
            }

            print "</td>\n";
            print "</tr>\n";
            $i++;
        }
    }
    print"</table>";

    // Pagination
    print "<table style='width:968px; margin:auto;'>";
    print "<tr><td style='vertical-align:bottom;'>";
    print $seqpage;
    print "</td>";
    print "<td style='text-align:right;'>";

    //Haut de page
    if ($nombreaffiche > 25) {
        print "<a name='baspage' href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
    }
    print "</td></tr>";
    print "</table>";
}