Mise à jour des fichiers CSS, ajout des mécanismes de mise à jour de Ship2net avec info sur la page du bateau.

This commit is contained in:
2026-10-06 16:25:29 +00:00
parent ce81084cdc
commit 0a2ec261ec
24 changed files with 2682 additions and 2263 deletions
+69
View File
@@ -0,0 +1,69 @@
<?php
//************************************************************************************************************
// bateau_mesures.php - Données d'une courbe historique, pour la page "Données du bateau" (synthèse §50, étape 3c).
// Paramètres (GET) : bateau, generation (0 = génération active), type (circuits, capteurs, batteries, reservoirs),
// element, variable (circuits, batteries), periode (24h, 7j, 30j, 3m, 1a). Réponse JSON (cf Courbe_element()).
// Droits : ceux de la page du bateau - administrateur, ou accès actif à ce bateau avec un type d'accès autorisant la
// consultation des données ; la génération doit appartenir au bateau.
//************************************************************************************************************
// Réponse JSON : aucun avertissement PHP ne doit s'y écrire (il la rendrait illisible) - ils vont dans le journal.
ini_set('display_errors', '0');
require_once("../config/config.php");
Init_session(basename(__FILE__));
header('Content-Type: application/json; charset=UTF-8');
header('Cache-Control: no-store');
function Repondre($code_http, $donnees)
{
http_response_code($code_http);
echo json_encode($donnees, JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE); // Caractère mal encodé : remplacé, pas d'échec
exit();
}
if (empty($_SESSION['acces_valide'])) Repondre(401, array('erreur' => "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);