Files
ship2net-www/html/bateau_etat.php
T

44 lines
1.9 KiB
PHP

<?php
//************************************************************************************************************
// bateau_etat.php - État léger d'un bateau, interrogé toutes les 30 s par la page "Données du bateau" pour détecter
// l'arrivée d'une nouvelle archive (synthèse §50). Réponse JSON : {"date": "<date UTC de la dernière archive traitée,
// ISO 8601>"} ou {"date": null}. Mêmes droits que la page du bateau : administrateur, ou accès actif à ce 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');
if (empty($_SESSION['acces_valide']))
{
http_response_code(401);
echo '{}';
exit();
}
$id_bateau = isset($_GET['id']) ? (int)$_GET['id'] : 0;
$niveau_admin = NIVEAU_ACCES_MINI_ADMINISTRATEUR;
$est_administrateur = ((int)$_SESSION['shipmember']['Niveau_acces'] >= $niveau_admin) ? 1 : 0;
Ouverture_bdd();
$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
WHERE L.ID_Bateau=B.Cle_primaire AND L.ID_Shipmember=? AND L.Statut='actif' AND L.Fin_validite >= NOW()))",
array(array('i', $id_bateau), array('i', $est_administrateur), array('i', $_SESSION['shipmember']['Cle_primaire'])),
__FILE__, __LINE__);
$donnees = Recherche_ligne_bdd($reponse, MYSQLI_ASSOC);
Liberation_jeu_de_resultat_bdd($reponse);
Fermeture_bdd();
if (!$donnees)
{
http_response_code(403);
echo '{}';
exit();
}
echo json_encode(array('date' => $donnees['Date_derniere_maj']), JSON_INVALID_UTF8_SUBSTITUTE);