"session expirée")); $id_bateau = (int)($_GET['bateau'] ?? 0); $id_generation = (int)($_GET['generation'] ?? 0); $type = (string)($_GET['type'] ?? ''); $id_element = (int)($_GET['element'] ?? 0); $variable = (string)($_GET['variable'] ?? ''); $periode = (string)($_GET['periode'] ?? ''); $est_administrateur = ((int)$_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR) ? 1 : 0; Ouverture_bdd(); // Bateau accessible (et date de la dernière archive) : $reponse = Requete_preparee_bdd("SELECT B.Date_derniere_maj FROM TB_Bateaux B WHERE B.Cle_primaire=? AND B.Validite=1 AND (? = 1 OR EXISTS (SELECT 1 FROM TB_Lien_bateau_shipmember L JOIN TB_Types_acces_bateau_shipmember T ON T.Cle_primaire = L.ID_Type_acces_bateau_shipmember WHERE L.ID_Bateau=B.Cle_primaire AND L.ID_Shipmember=? AND L.Statut='actif' AND L.Fin_validite >= NOW() AND T.Consultation_donnees >= 1))", array(array('i', $id_bateau), array('i', $est_administrateur), array('i', $_SESSION['shipmember']['Cle_primaire'])), __FILE__, __LINE__); $bateau = Recherche_ligne_bdd($reponse, MYSQLI_ASSOC); Liberation_jeu_de_resultat_bdd($reponse); if (!$bateau) { Fermeture_bdd(); Repondre(403, array('erreur' => "accès refusé")); } // Génération : celle demandée si elle appartient à ce bateau, sinon la génération active : $generation = null; foreach (Generations_bateau($id_bateau) as $g) { if ((int)$g['Cle_primaire'] == $id_generation) { $generation = $g; break; } if ($g['Date_fin'] === null && $generation === null) $generation = $g; } Fermeture_bdd(); if ($generation === null) Repondre(404, array('erreur' => "aucune donnée pour ce bateau")); // Fin de la courbe : dernière archive (génération active) ou fin de la génération (génération antérieure) : $date_fin = ($generation['Date_fin'] === null) ? $bateau['Date_derniere_maj'] : $generation['Date_fin']; if ($date_fin === null) Repondre(404, array('erreur' => "aucune archive reçue")); $db = Connexion_generation($generation['Nom_base']); if ($db === null) Repondre(503, array('erreur' => "données momentanément inaccessibles")); $courbe = Courbe_element($db, $type, $id_element, $variable, $periode, $date_fin); $db->close(); if (isset($courbe['erreur'])) Repondre(400, $courbe); Repondre(200, $courbe);