| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- require_once "libs/fnMain.php";
- /**************************
- * Contrôle du token JWT
- **************************/
- if (!isset($_GET["jwt"], $_SETTINGS["jwt_secret"])) {
- echo "Manque d'arguments";
- die();
- }
- verifyJWTtoken($_GET["jwt"], $_SETTINGS["jwt_secret"]);
- /**************************
- * Contrôle du statut premium de l'utilisateur
- **************************/
- verifyUserPremium($_GET["jwt"]);
- /**************************
- * Calcul des notes
- **************************/
- $isNoteValid = isset($_GET["note"]) && (float) $_GET["note"] !== 0;
- $isAnneeValid = isset($_GET["annee"]) && (int) $_GET["annee"] !== 0;
- if ($isNoteValid && $isAnneeValid) {
- // On exclut le cas où les années entrées ne sont pas les bonnes
- // TIPS : Modifier les années au besoin
- if ((int) $_GET["annee"] > 2020 || (int) $_GET["annee"] < 2016) {
- echo "L'année entrée n'est pas valide";
- die();
- }
-
- $rangMoyen = 0; // Variable donnant le rang utilisé pour calculer le tableau des choix, et servant aussi au classement affiché
- $sqlLimiteBasse = "SELECT * FROM notes_rang
- WHERE annee = :annee AND note >= :note
- ORDER BY classement DESC
- LIMIT 1";
- $sqlLimiteHaute = "SELECT * FROM notes_rang
- WHERE annee = :annee AND note <= :note
- ORDER BY classement
- LIMIT 1";
-
- $reqLimBasse = $db->prepare($sqlLimiteBasse);
- $reqLimBasse->execute([
- "annee" => $_GET["annee"],
- "note" => $_GET["note"]
- ]);
-
- if ($reqLimBasse->rowCount() === 0) {
- // Pas de note au dessus de la note entrée => Forcément 1er
- $rangMoyen = 1;
- } else {
- $reqLimiteHaute = $db->prepare($sqlLimiteHaute);
- $reqLimiteHaute->execute([
- "annee" => $_GET["annee"],
- "note" => $_GET["note"]
- ]);
-
- $rangBasArray = $reqLimBasse->fetch(PDO::FETCH_ASSOC);
- if ($reqLimiteHaute->rowCount() === 0) {
- // Pas de note en dessous => Forcément dernier
- $rangMoyen = $rangBasArray["classement"] + 10;
- } else {
- // Note entre 2 classements connus de la DB
- $rangHautArray = $reqLimiteHaute->fetch(PDO::FETCH_ASSOC);
-
- // Ligne non utilisée car révèle les points utilisés (entre xxx et yyy) sont connus
- // $rangText = "Entre ".$rangBasArray["classement"]." et ".$rangHautArray["classement"];
-
- $rangMoyen = ((int) $rangBasArray["classement"] + (int) $rangHautArray["classement"]) / 2;
- $rangMoyen = (int) $rangMoyen;
- }
- }
-
- /********************************
- * CALCUL DU TABLEAU DES CHOIX
- ********************************/
-
- // HTML renvoyé au site
- $html = <<<EOF
- <!doctype html>
- <html lang="fr">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport"
- content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>RangLimier</title>
- <link rel="stylesheet" href="assets/bootstrap.min.css">
- <link rel="stylesheet" href="assets/divers.css">
- </head>
- <body>
- <h1>RangLimier</h1>
- <p>Cet outil permet, en entrant une note et une année d'ECN, de voir le rang le plus proche associé.<br>
- <i>Attention : Cet outil est à but purement indicatif !</i>
- </p>
- <style>
- /* Tableau */
- table {
- font-size: 13px;
- text-align: center;
- border-collapse: collapse;
- white-space: nowrap;
- overflow: auto;
- }
-
- th, td {
- padding: 2px;
- border: 1px solid black;
- --text-color: lightgrey;
- }
-
- .all-choices {
- background-color: #28a745;
- /* color: #8fd19e; */
- color: white;
- }
-
- .half-choices {
- background-color: #8fd19e;
- color: black;
- }
-
- .last-choice {
- background-color: #ffdf7e;
- color: grey;
- }
-
- .no-choice {
- background-color: #ed969e;
- }
-
- .never-available {
- background-color: lightgrey;
- }
- </style>
- <h2>Tableau de classement pour le rang {$rangMoyen}</h2>
- <p>Rang estimé pour la note {$_GET["note"]}/10800 : {$rangMoyen}</p>
- <!-- <h3>Légende</h3>
- <table>
- <thead>
- <th colspan="5">Légende (sur toutes les années)</th>
- </thead>
- <tbody>
- <tr>
- <td>Jamais proposé</td>
- <td class="no-choice">Aucun choix</td>
- <td class="last-choice">Une seule année</td>
- <td class="half-choices">Plusieurs choix</td>
- <td class="all-choices">Tous les choix</td>
- </tr>
- </tbody>
- </table> -->
- <p>
- Chaque nombre dans chaque case correspond au nombre d'années où ce choix était dispo au classement rentré <br>
- </p>
- EOF;
-
- require "apiDisplay.php";
-
- } else {
- echo "Valeurs d'année et/ou note incorrecte.";
- }
|