Files
ship2net-www/html/bateaux.php
T

1030 lines
42 KiB
PHP

<?php
include "../config/config.php";
Init_session(basename($_SERVER['SCRIPT_NAME'])); // Fonction ouvrant la session et vérifiant que les accès sont autorisés.
//************************************************************************************************************************************
// Initialisation des variables globales
//************************************************************************************************************************************
$message_erreur = "";
$message_information = "";
Ouverture_bdd(); // Connexion à MySql
//************************************************************************************************************************************
// Traitement des variables d'entrées
//************************************************************************************************************************************
// Variables de SESSION :
if (!isset($_SESSION['Bateaux']['page'])) $_SESSION['Bateaux']['page'] = 'Accueil';
if (!isset($_SESSION['Bateaux']['ancre'])) $_SESSION['Bateaux']['ancre'] = "";
if (!isset($_SESSION['Bateaux']['origine'])) $_SESSION['Bateaux']['origine'] = "";
if (!isset($_SESSION['Bateaux']['tri_liste'])) $_SESSION['Bateaux']['tri_liste'] = "Flotte";
if (!isset($_SESSION['Bateaux']['sens_tri_liste'])) $_SESSION['Bateaux']['sens_tri_liste'] = "ASC";
if (!isset($_SESSION['Bateaux']['type_details_bateau'])) $_SESSION['Bateaux']['type_details_bateau'] = "resume"; // 'resume' ou 'gerer_les_acces'
if (!isset($_SESSION['Bateaux']['bateau']['Cle_primaire'])) $_SESSION['Bateaux']['bateau']['Cle_primaire'] = 0;
if (!isset($_SESSION['Bateaux']['bateau']['Nom'])) $_SESSION['Bateaux']['bateau']['Nom'] = "";
if (!isset($_SESSION['Bateaux']['bateau']['ID_Flotte'])) $_SESSION['Bateaux']['bateau']['ID_Flotte'] = 0;
if (!isset($_SESSION['Bateaux']['bateau']['Date_mes'])) $_SESSION['Bateaux']['bateau']['Date_mes'] = date("Y-m-d");
if (!isset($_SESSION['Bateaux']['bateau']['Commentaires'])) $_SESSION['Bateaux']['bateau']['Commentaires'] = "";
// Variables GET :
if (isset($_GET['ancre'])) $_SESSION['Bateaux']['ancre'] = $_GET['ancre'];
if (isset($_GET['action']))
{
switch ($_GET['action'])
{
//===================================
case "navigation":
{
if (isset($_GET['destination']))
{
$_SESSION['Bateaux']['page'] = $_GET['destination'];
}
if (isset($_GET['ancre']))
{
$_SESSION['Bateaux']['ancre'] = $_GET['ancre'];
}
break;
}
//===================================
case "changement_langue":
{
if (isset($_GET['langue']))
{
$_SESSION['langue'] = $_GET['langue'];
chargement_langue();
}
break;
}
//===================================
case "tri_liste":
{
if (isset($_GET['colonne']))
{
if ($_SESSION['Bateaux']['tri_liste'] == $_GET['colonne'])
{
if ($_SESSION['Bateaux']['sens_tri_liste'] == "ASC") $_SESSION['Bateaux']['sens_tri_liste'] = "DESC";
else $_SESSION['Bateaux']['sens_tri_liste'] = "ASC";
}
else
{
$_SESSION['Bateaux']['tri_liste'] = $_GET['colonne'];
$_SESSION['Bateaux']['sens_tri_liste'] = "ASC";
}
}
break;
}
//===================================
case "details_bateau":
{
if (isset($_GET['id_bateau']))
{
$_SESSION['Bateaux']['bateau']['Cle_primaire'] = $_GET['id_bateau'];
$_SESSION['Bateaux']['type_details_bateau'] = "resume";
$_SESSION['Bateaux']['page'] = "Details_bateau";
if (isset($_GET['origine'])) $_SESSION['Bateaux']['origine'] = $_GET['origine'];
else $_SESSION['Bateaux']['origine'] = "";
}
break;
}
//===================================
case "type_details_bateau":
{
if (isset($_GET['type'])) $_SESSION['Bateaux']['type_details_bateau'] = $_GET['type'];
$_SESSION['Bateaux']['ancre'] = "";
break;
}
//===================================
case "modification_bateau":
{
if (isset($_GET['id_bateau']))
{
$_SESSION['Bateaux']['bateau']['Cle_primaire'] = $_GET['id_bateau'];
$_SESSION['Bateaux']['page'] = "Modification_bateau";
}
break;
}
//===================================
case "creation_bateau":
{
$_SESSION['Bateaux']['page'] = "Creation_bateau";
break;
}
//===================================
case "demande_suppression_bateau":
{
if (isset($_GET['id_bateau']))
{
$_SESSION['Bateaux']['bateau']['Cle_primaire'] = $_GET['id_bateau'];
$_SESSION['Bateaux']['page'] = "Confirmation_suppression_bateau";
}
break;
}
//===================================
case "confirmation_suppression_bateau":
{
if (isset($_GET['id_bateau']))
{
$_SESSION['Bateaux']['bateau']['Cle_primaire'] = $_GET['id_bateau'];
// Suppression du bateau :
$requete = 'UPDATE TB_Bateaux SET Validite=0 WHERE Cle_primaire=?';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Bateaux']['bateau']['Cle_primaire'])),
__FILE__, __LINE__);
$flag_redirection = true; // Evite que le message d'erreur soit supprimé par la redirection de purge d'URL
$message_information = 'Le bateau <span class="gras">'.$_SESSION['Bateaux']['bateau']['Nom'].'</span> a été dévalidé dans la base de données.';
$_SESSION['Bateaux']['page'] = "Accueil";
}
break;
}
}
if ($_SESSION['Bateaux']['ancre'] == "") header('Location:bateaux.php'); // Permet de "vider" la barre d'URL des champs GET et donc de doubler le traitement en cas de raffraichissement de page...
else header('Location:bateaux.php#'.$_SESSION['Bateaux']['ancre'].'');
}
// Variables POST :
//---------------------------------------------------------------------------
// Création/Modification Bateau :
// NB : l'affectation d'un module ShipBase à un bateau ne se fait plus ici mais via TB_Affectations_bateaux
// (administration de la flotte, lot 4 - synthèse §44.10). Les anciens champs ID_Carte/Date_carte et les
// répertoires download/upload/archives du modèle CM4 ont été retirés (synthèse §47).
if (isset($_POST['validation_creation_bateau']) OR isset($_POST['validation_modification_bateau']))
{
// Mémorisation des valeurs saisies pour éviter de les perdre en cas d'erreur rendant la création impossible :
$_SESSION['Bateaux']['bateau']['Nom'] = isset($_POST['Nom']) ? addslashes ($_POST['Nom']) : "";
$_SESSION['Bateaux']['bateau']['ID_Flotte'] = isset($_POST['ID_Flotte']) ? addslashes ($_POST['ID_Flotte']) : 0;
$_SESSION['Bateaux']['bateau']['Date_mes'] = isset($_POST['Date_mes']) ? addslashes ($_POST['Date_mes']) : date("Y-m-d");
$_SESSION['Bateaux']['bateau']['Commentaires'] = isset($_POST['Commentaires']) ? addslashes ($_POST['Commentaires']) : "";
if (isset($_POST['validation_creation_bateau']))
{
// Création du bateau :
$requete = 'INSERT INTO TB_Bateaux (Nom, ID_Flotte, Date_mes, Commentaires) VALUES (?, ?, ?, ?)';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Bateaux']['bateau']['Nom']),
array('i', $_SESSION['Bateaux']['bateau']['ID_Flotte']),
array('s', $_SESSION['Bateaux']['bateau']['Date_mes']),
array('s', $_SESSION['Bateaux']['bateau']['Commentaires'])),
__FILE__, __LINE__);
// Récup de la clé primaire de l'enregistrement créé :
$_SESSION['Bateaux']['bateau']['Cle_primaire'] = Recuperation_id_cree_bdd();
// Retour à la liste si la création s'est bien passée :
$_SESSION['Bateaux']['page'] = "Accueil";
}
else if (isset($_POST['validation_modification_bateau']))
{
// Mise à jour du bateau :
$requete = 'UPDATE TB_Bateaux SET Nom=?, ID_Flotte=?, Date_mes=?, Commentaires=? WHERE Cle_primaire=?';
Requete_preparee_bdd($requete,
array(
array('s', $_SESSION['Bateaux']['bateau']['Nom']),
array('i', $_SESSION['Bateaux']['bateau']['ID_Flotte']),
array('s', $_SESSION['Bateaux']['bateau']['Date_mes']),
array('s', $_SESSION['Bateaux']['bateau']['Commentaires']),
array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])),
__FILE__, __LINE__);
// Message d'information :
$message_information = 'Le bateau <span class="gras">'.$_SESSION['Bateaux']['bateau']['Nom'].'</span> vient d\'être modifié';
// Retour à la liste si la modification s'est bien passée :
$_SESSION['Bateaux']['page'] = "Accueil";
}
}
//---------------------------------------------------------------------------
// Modifier la validité des droits
if (isset($_POST['validite_acces'])) {
// echo 'Validité = ON pour ID='.$_POST['ID'].'<br />';
$requete = 'UPDATE TB_Lien_bateau_shipmember SET Validite_acces = 1 WHERE ID = '.$_POST['ID'];
$reponse = Requete_bdd($requete, __FILE__, __LINE__);
}
else if (!isset($_POST['validite_acces']) && isset($_POST['ID']) && !isset($_POST['supprimerAcces']) && !isset($_POST['modifierAcces'])){
// echo 'Validité = OFF pour ID='.$_POST['ID'].'<br />';
$requete = 'UPDATE TB_Lien_bateau_shipmember SET Validite_acces = 0 WHERE ID = '.$_POST['ID'];
$reponse = Requete_bdd($requete, __FILE__, __LINE__);
}
//---------------------------------------------------------------------------
// Supprimer l'accès
if (isset($_POST['supprimerAcces']) && isset($_POST['ID'])){
$id = $_POST['ID'];
$requete = 'UPDATE TB_Lien_bateau_shipmember SET Validite = 0 WHERE ID = ? ';
$reponse = Requete_preparee_bdd($requete,
array(
array('i', $id)),
__FILE__, __LINE__);
}
//---------------------------------------------------------------------------
// Modifier l'accès
if (isset($_POST['modifierAcces']) && isset($_POST['ID'])){
$id = $_POST['ID'];
$fin_validite = $_POST['fin_validite']." 23:59:59";
$type_profil = $_POST['type_profil'];
$requete = 'UPDATE TB_Lien_bateau_shipmember SET Fin_validite = ? , ID_Type_acces_bateau_shipmember = ? WHERE ID = ? ';
$reponse = Requete_preparee_bdd($requete,
array(
array('s', $fin_validite),
array('i', $type_profil),
array('i', $id)),
__FILE__, __LINE__);
}
//************************************************************************************************************************************
// Traitement des données
//************************************************************************************************************************************
// Protection contre les accès directs... :
$flag_sortie = true;
do // Dummy loop :
{
if (!$_SESSION['acces_valide']) break; // Si on n'est pas identifié, on ne peut pas accéder quoi qu'il arrive...
if ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR)
{
$flag_sortie = false; // Si on est administrateur, on a toujours accès....
break;
}
// Recherche des droits d'accès à un bateau en particulier :
if ($_SESSION['Bateaux']['page'] == "Details_bateau")
{
$requete = 'SELECT * FROM TB_Lien_bateau_shipmember WHERE Validite=1 AND Validite_acces=1 AND ID_SHIPMEMBER=? AND ID_BATEAU=? ';
$reponse = Requete_preparee_bdd($requete,
array(
array('i', $_SESSION['shipmember']['Cle_primaire']),
array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$flag_sortie = false;
break;
}
Liberation_jeu_de_resultat_bdd($reponse);
}
} while (0);
if ($flag_sortie) header('Location:shipmembers.php?action=navigation&destination=Login');
switch ($_SESSION['Bateaux']['page'])
{
//****************************************************************************************************************************
case "Accueil":
{
//--------------------------------------------------
// Récupération des informations sur les bateaux :
$nb_bateaux = 0;
switch($_SESSION['Bateaux']['tri_liste'])
{
case "Nom": { $tri_liste = " ORDER By Nom ".$_SESSION['Bateaux']['sens_tri_liste']; break; }
case "Flotte" : { $tri_liste = " ORDER By nom_flotte ".$_SESSION['Bateaux']['sens_tri_liste'].", Nom"; break; }
case "Adresse_mac": { $tri_liste = " ORDER By adresse_carte ".$_SESSION['Bateaux']['sens_tri_liste']; break; }
case "Version": { $tri_liste = " ORDER By version ".$_SESSION['Bateaux']['sens_tri_liste'].", Nom"; break; }
case "Date_maj": { $tri_liste = " ORDER By Date_derniere_maj ".$_SESSION['Bateaux']['sens_tri_liste'].", Nom"; break; }
default : { $tri_liste = " ORDER By nom_flotte, Nom ".$_SESSION['Bateaux']['sens_tri_liste']; break; }
}
$requete = 'SELECT TB_Bateaux.Cle_primaire AS Cle_primaire, ';
$requete .= ' TB_Bateaux.Nom AS Nom, ';
$requete .= ' (SELECT Nom FROM TB_Flottes WHERE Validite=1 AND Cle_primaire=TB_Bateaux.ID_Flotte) AS nom_flotte, ';
$requete .= ' (SELECT Adresse_mac FROM TB_Affectations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS adresse_carte, ';
$requete .= ' (SELECT Version_soft FROM TB_Generations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS version, ';
$requete .= ' TB_Bateaux.Date_derniere_maj AS Date_derniere_maj, ';
$requete .= ' TB_Bateaux.Commentaires AS Commentaires ';
$requete .= ' FROM `TB_Bateaux` ';
$requete .= ' WHERE Validite=1 ';
$requete .= $tri_liste;
//echo "Requête = [ ".$requete."; ]<br />";
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$bateaux[$nb_bateaux] = $donnees;
// Mise en forme de certaines variables :
if ($bateaux[$nb_bateaux]['version'] == "") $bateaux[$nb_bateaux]['version'] = '<i>inconnue</i>';
if ($donnees['Date_derniere_maj'] < "2020-01-02") $bateaux[$nb_bateaux]['Date_derniere_maj'] = "<i>Jamais</i>";
else $bateaux[$nb_bateaux]['Date_derniere_maj'] = Formatage_date($donnees['Date_derniere_maj']);
$bateaux[$nb_bateaux]['Commentaires'] = htmlspecialchars(stripcslashes($bateaux[$nb_bateaux]['Commentaires']));
$nb_bateaux ++;
}
Liberation_jeu_de_resultat_bdd($reponse);
break;
}
//****************************************************************************************************************************
case "Details_bateau":
{
//--------------------------------------------------
// Récupération des informations sur le bateau :
$nb_bateaux = 0;
$requete = 'SELECT *, ';
$requete .= ' (SELECT Adresse_mac FROM TB_Affectations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS Adresse_mac, ';
$requete .= ' (SELECT Version_soft FROM TB_Generations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS version ';
$requete .= ' FROM TB_Bateaux WHERE Cle_primaire=? ';
//echo "Requête = [ ".$requete."; ]<br />";
$reponse = Requete_preparee_bdd($requete,
array(
array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$bateau = $donnees;
// Mise en forme de textes :
if ($donnees['Date_derniere_maj'] < "2020-01-02") $bateau['Date_derniere_maj'] = "<i>".t("Jamais")."</i>";
else {
$bateau['Date_derniere_maj'] = Formatage_date($donnees['Date_derniere_maj']);
$_SESSION['Bateaux']['derniere_maj'] = $donnees['Date_derniere_maj'];
}
// $bateau['Commentaires'] = htmlspecialchars(stripcslashes($bateau['Commentaires']));
}
Liberation_jeu_de_resultat_bdd($reponse);
//---------------------------------------------
// Recherche des droits d'accès au bateau :
//---------------------------------------------
if ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR) // Dans le cas des administrateurs, on accorde tous les droits, indépendamment des paramètres du bateau
{
$acces_profil['Creation_profils'] = 1;
$acces_profil['Devalidation_profils'] = 2;
$acces_profil['Consultation_donnees'] = 2;
$acces_profil['Modification_acces'] = 1;
}
else
{
// Valeurs par défaut :
$id_type_acces = 0;
$acces_profil['Creation_profils'] = 0;
$acces_profil['Devalidation_profils'] = 0;
$acces_profil['Consultation_donnees'] = 0;
$acces_profil['Modification_acces'] = 0;
// Recherche de l'ID de l'accès le plus élevé pour ce bateau et ce shipmember :
$requete = 'SELECT ID_Type_acces_bateau_shipmember FROM TB_Lien_bateau_shipmember WHERE Validite=1 AND Validite_acces=1 AND ID_Shipmember=? AND ID_Bateau=? AND Fin_validite>=? ORDER BY ID_Type_acces_bateau_shipmember DESC LIMIT 1';
$reponse = Requete_preparee_bdd($requete,
array(
array('i', $_SESSION['shipmember']['Cle_primaire']),
array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire']),
array('s', date_format(date_create(), 'Y-m-d H:i:s'))),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$id_type_acces = $donnees['ID_Type_acces_bateau_shipmember'];
}
Liberation_jeu_de_resultat_bdd($reponse);
// Recherche des caractérirtiques de l'accès le plus élevé trouvé :
if ($id_type_acces > 0)
{
$requete = 'SELECT * FROM TB_Types_acces_bateau_shipmember WHERE Validite=1 AND Cle_primaire=?';
$reponse = Requete_preparee_bdd($requete,
array(
array('i', $id_type_acces)),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$acces_profil = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
}
}
// Récupération des types d'accès possibles :
//$requete = 'SELECT Nom, Niveau_acces FROM TB_Lien_bateau_shipmember_acces WHERE Validite = 1 AND Niveau_acces < 99';
$requete = 'SELECT * FROM TB_Types_acces_bateau_shipmember WHERE Validite=1 ';
$reponse = Requete_bdd($requete, __FILE__, __LINE__);
$type_acces_nb = 0;
while($donnees = Recherche_ligne_bdd($reponse)){
if ($_SESSION['langue'] == "EN") $donnees['Nom'] = $donnees['Nom_en'];
else $donnees['Nom'] = $donnees['Nom_fr'];
$type_acces[$type_acces_nb++] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
// Génération d'un nouveau code d'acces :
if (isset($_POST['generer_code_acces'])){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$unique = false;
do { // Vérifier si le code n'est pas déjà utilisé
$code_acces = '';
for ($i = 0; $i < 6; $i++) {
$code_acces .= $characters[random_int(0, $charactersLength - 1)];
}
$req = 'SELECT Code FROM TB_Lien_bateau_shipmember WHERE Code="'.$code_acces.'"';
$rep = Requete_bdd($req, __FILE__, __LINE__);
$donnees = Recherche_ligne_bdd($rep);
if ($donnees == NULL) $unique = true;
} while($unique == false);
if (isset($_POST['date_validite']) && (!empty($_POST['date_validite']))){
$date = $_POST['date_validite']." 00:00:00";
}
else $date = '9999-12-31 23:59:59';
$requete = 'INSERT INTO TB_Lien_bateau_shipmember(ID_Bateau, Code, Fin_validite, Cree_par, ID_Type_acces_bateau_shipmember) VALUES (?,?,?,?,?)';
$reponse = Requete_preparee_bdd($requete, array(
array('i', $bateau['Cle_primaire']),
array('s', $code_acces),
array('s', $date),
array('i', $_SESSION['shipmember']['Cle_primaire']),
array('i', $_POST['type_acces'])
),__FILE__, __LINE__);
$no = Recuperation_id_cree_bdd();
if ( code_acces_pdf($code_acces, $no, $bateau['Adresse_mac'],"")== 0 ) Entete_page_html();
// Message d'information :
// if (isset($_SESSION['pdf']['src']) && $_SESSION['pdf']['src'] != '')
// $message_information.= "Télécharger le code d'accès d'<a class='download' target='_blank' href= ".$_SESSION['pdf']['src']."> ici </a> ";
// $_SESSION['pdf']['src'] ='';
}
//-----------------------------------------------------------
// Recherche des informations complémentaires sur le bateau :
switch($_SESSION['Bateaux']['type_details_bateau'])
{
//=========================
case "gerer_les_acces":
{
$requete = 'SELECT * FROM TB_Lien_bateau_shipmember WHERE Validite=1 AND ID_Bateau='.$bateau['Cle_primaire'].' AND ID_Shipmember!=0 ';
$reponse = Requete_bdd($requete, __FILE__, __LINE__);
$utilisateur_acces_nb = 0;
while ($donnees = Recherche_ligne_bdd($reponse)){
// Récupérer le nom et le prénom du shipmember qui a accès :
$sous_req = ' SELECT Nom, Prenom, Email FROM TB_Shipmembers WHERE Validite=1 AND ID='.$donnees['ID_Shipmember'].'';
$sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__);
$sous_donnees = Recherche_ligne_bdd($sous_rep);
$donnees['sm_Nom'] = $sous_donnees['Nom'];
$donnees['sm_Prenom'] = $sous_donnees['Prenom'];
$donnees['sm_Email'] = $sous_donnees['Email'];
// Récupérer le nom et le prénom du shipmember qui a crée le lien :
$sous_req = ' SELECT Nom, Prenom FROM TB_Shipmembers WHERE Validite=1 AND ID='.$donnees['Cree_par'].'';
$sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__);
$sous_donnees = Recherche_ligne_bdd($sous_rep);
$donnees['cree_par_Nom'] = $sous_donnees['Nom'];
$donnees['cree_par_Prenom'] = $sous_donnees['Prenom'];
// Récupérer le niveau accès garantie à l'utilisateur :
//$sous_req = ' SELECT Nom FROM TB_Lien_bateau_shipmember_acces WHERE Validite=1 AND Niveau_acces='.$donnees['Niveau_acces'].'';
$sous_req = 'SELECT * FROM TB_Types_acces_bateau_shipmember WHERE Validite=1 AND Cle_primaire='.$donnees['ID_Type_acces_bateau_shipmember'].' ';
$sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__);
$sous_donnees = Recherche_ligne_bdd($sous_rep);
if ($_SESSION['langue'] == "EN") $donnees['Niveau_acces_nom'] = $sous_donnees['Nom_en'];
else $donnees['Niveau_acces_nom'] = $sous_donnees['Nom_fr'];
$utilisateur_acces[$utilisateur_acces_nb++] = $donnees;
}
break;
}
default: break;
} // Fin du switch 'type_details_bateau'
break;
}
//****************************************************************************************************************************
case "Creation_bateau":
case "Modification_bateau":
{
//--------------------------------------------------
// Préparation des variables du bateau :
if ($_SESSION['Bateaux']['page'] == "Creation_bateau")
{
$_SESSION['Bateaux']['bateau']['Cle_primaire'] = 0;
$_SESSION['Bateaux']['bateau']['Nom'] = "";
$_SESSION['Bateaux']['bateau']['ID_Flotte'] = 0;
$_SESSION['Bateaux']['bateau']['Date_mes'] = date("Y-m-d");
$_SESSION['Bateaux']['bateau']['Commentaires'] = "";
}
else // Modification :
{
$requete = 'SELECT * FROM TB_Bateaux WHERE Cle_primaire=? ';
$reponse = Requete_preparee_bdd($requete,
array(
array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$_SESSION['Bateaux']['bateau'] = $donnees;
// Mise en forme de textes :
$_SESSION['Bateaux']['bateau']['Commentaires'] = htmlspecialchars(stripcslashes($_SESSION['Bateaux']['bateau']['Commentaires']));
}
Liberation_jeu_de_resultat_bdd($reponse);
}
//--------------------------------------------------
// Recherche des flottes existantes :
$nb_flottes = 0;
$flottes[$nb_flottes]['Cle_primaire'] = 0;
$flottes[$nb_flottes]['Nom'] = '--- Affecté à aucune flotte ---';
$nb_flottes ++;
$requete = 'SELECT * FROM TB_Flottes WHERE Validite=1 ORDER BY Nom ASC';
$reponse = Requete_preparee_bdd($requete,
array(),
__FILE__, __LINE__);
while ($donnees = Recherche_ligne_bdd($reponse))
{
$flottes[$nb_flottes ++] = $donnees;
}
Liberation_jeu_de_resultat_bdd($reponse);
break;
}
//****************************************************************************************************************************
case "Confirmation_suppression_bateau":
{
break;
}
//****************************************************************************************************************************
default:
{
$_SESSION['Bateaux']['page'] = "Accueil";
break;
}
}
Fermeture_bdd(); // Déconnexion de MySQL
//************************************************************************************************************************************
// Affichage
//************************************************************************************************************************************
Entete_page_html();
//********************************************************************************************************************************
// Affichage principal :
echo '<div id="Bateaux">';
//=========================================================================================
// Entête :
Entete_page($message_erreur, $message_information);
switch ($_SESSION['Bateaux']['page'])
{
//************************************************************************************************************************
case "Accueil":
{
echo '<div id="accueil" class="page_principale">';
echo '<h1>Bateaux</h1>';
echo '<div class="table_wrapper">';
echo '<table class="bateau">
<thead>
<tr>';
echo '<th><a href="bateaux.php?action=tri_liste&colonne=Nom">Nom</a></th>';
echo '<th><a href="bateaux.php?action=tri_liste&colonne=Flotte">Flotte</a></th>';
// echo '<th><a href="bateaux.php?action=tri_liste&colonne=Carte">ShipBase</a></th>';
echo '<th><a href="bateaux.php?action=tri_liste&colonne=Adresse_mac">Adresse MAC</a></th>';
echo '<th><a href="bateaux.php?action=tri_liste&colonne=Version">Version</a></th>';
echo '<th><a href="bateaux.php?action=tri_liste&colonne=Date_maj">Dernière mise à jour [UTC]</a></th>';
// echo '<th>Commentaires</th>';
echo '</tr>
</thead>
<tbody>';
for ($i = 0; $i < $nb_bateaux; $i ++)
{
echo '<tr>
<td>
<a href="bateaux.php?action=details_bateau&id_bateau='.$bateaux[$i]['Cle_primaire'].'">
'.$bateaux[$i]['Nom'].'
</a>
</td>';
echo '<td>'.$bateaux[$i]['nom_flotte'].'</td>';
// echo '<td>'.$bateaux[$i]['nom_carte'].'</td>';
echo '<td>'.$bateaux[$i]['adresse_carte'].'</td>';
echo '<td>'.$bateaux[$i]['version'].'</td>';
echo '<td>'.$bateaux[$i]['Date_derniere_maj'].'</td>';
// echo '<td>'.$bateaux[$i]['Commentaires'].'</td>';
echo '</tr>';
}
echo '</tbody>
</table>';
echo '</div>';
echo '<div class="boutons_bas_de_page">';
echo '<a title="" href="administration.php?action=navigation&destination=Accueil">Retour au menu Administration</a>';
echo '<a title="" href="bateaux.php?action=creation_bateau">Créer un nouveau bateau</a>';
echo '</div>';
echo '</div>';
break;
}
//****************************************************************************************************************************
case "Details_bateau":
{
echo '<div id="details_bateau" class="page_principale">';
echo '<h1>Bateau <span class="gras">'.$bateau['Nom'].'</span></h1>';
echo '<div class="entete_bateau">';
if ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR || $acces_profil['Consultation_donnees'] == 2)
{
echo '<div class="bouton_gestion_acces">';
echo '<a title="" href="bateaux.php?action=type_details_bateau&type=gerer_les_acces"';
if ($_SESSION['Bateaux']['type_details_bateau'] == "gerer_les_acces") echo ' class="actif" '; echo '>
'.$_SESSION['textes']['bateau']['details']['boutons']['acces'] .'
</a>';
echo '</div>';
}
echo '<div class="derniere_maj">'.t("Derniere_connexion").' : <span class="gras">'.$bateau['Date_derniere_maj'].' [UTC]</span></div>';
echo '</div>';
//--------------------------------
// Boutons de haut de page (les anciens onglets Carte/Batteries/Circuits/Réservoirs/Capteurs/Système, liés au
// modèle CM4 centralisé, ont été retirés - la consultation des données sera refaite sur la base de la génération
// active du bateau, lot 3 - synthèse §44.10) :
echo '<div class="boutons_haut_de_page">';
echo '<div>';
echo '<a title="" href="bateaux.php?action=type_details_bateau&type=resume"';
if ($_SESSION['Bateaux']['type_details_bateau'] != "gerer_les_acces") echo ' class="actif" '; echo '>'.t("Données du bateau").'</a>';
echo '</div>';
echo '</div>';
echo '<div class="corps_details_bateau">';
switch($_SESSION['Bateaux']['type_details_bateau'])
{
//===========================================================
case "gerer_les_acces":
{
echo '<div class="gestion_acces">';
echo ' <div class="generer_code">
<form action="bateaux.php" method="POST">';
echo ' <select name="type_acces" id="type_acces" required>
<option value="" disabled selected> -- '.$_SESSION['textes']['bateau']['details']['acces']['select'] .' -- </option>' ;
for ($i = 0; $i < $type_acces_nb; $i++){
echo '<option value="'.$type_acces[$i]['Cle_primaire'].'"> '.$type_acces[$i]['Nom'].' </option>';
}
echo ' </select>';
echo ' <input type="date" name="date_validite" id="date_validite"> ';
echo ' <button type="submit" name="generer_code_acces"> '.$_SESSION['textes']['bateau']['details']['acces']['generer'] .' </button>';
echo ' </form>
</div>';
echo ' <div class="users"> ';
echo ' <table>';
echo ' <tr>';
echo ' <th> '.t("Validite").' </th>';
echo ' <th> '.t("Shipmember").'</th>';
echo ' <th> '.t("Créé_par").'</th>';
echo ' <th> '.t("Type de profil").'</th>';
echo ' <th> '.t("Fin de validité").' </th>';
echo ' <th> </th>';
echo ' </tr>';
if ($utilisateur_acces_nb == 0) echo '<tr> <td colspan="5"> 0 shipmember / acces </td> </tr>';
else {
for($i = 0; $i < $utilisateur_acces_nb; $i++){
echo ' <form action="bateaux.php" method="POST">';
echo ' <tr>';
echo ' <td > <input name="validite_acces" onChange="this.form.submit()" type="checkbox" ';
if (isset($acces_profil['Devalidation_profils']) && $acces_profil['Devalidation_profils'] == 0) echo ' disabled ';
if (isset($acces_profil['Devalidation_profils']) && $acces_profil['Devalidation_profils'] == 1 && $utilisateur_acces[$i]['ID_Type_acces_bateau_shipmember'] == 2) echo ' disabled ';
if ($utilisateur_acces[$i]['Validite_acces'] == 1) echo 'checked';
echo '> </td>';
echo ' <td> '.$utilisateur_acces[$i]['sm_Prenom'].' '.$utilisateur_acces[$i]['sm_Nom'].' ['.$utilisateur_acces[$i]['sm_Email'].']</td>';
echo ' <td> '.$utilisateur_acces[$i]['cree_par_Prenom'].' '.$utilisateur_acces[$i]['cree_par_Nom'].'</td>';
echo ' <td name="niveau_acces" value="'.$utilisateur_acces[$i]['ID_Type_acces_bateau_shipmember'].'">'.$utilisateur_acces[$i]['Niveau_acces_nom'].'</td>';
echo ' <td name="fin_validite" value="'.$utilisateur_acces[$i]['Fin_validite'].'"> ';
echo (substr($utilisateur_acces[$i]['Fin_validite'],0,-9) == "9999-12-31") ? Recuperer_texte("bateau","details","acces","aucune_fin") : substr($utilisateur_acces[$i]['Fin_validite'],0,-9) ;
echo ' </td>';
echo ' <input hidden name="ID" value="'.$utilisateur_acces[$i]['ID'].'">';
if ($acces_profil['Modification_acces'] == 1){
echo ' <td id="modifier_acces" onclick="popUpEditAccess(' . htmlspecialchars(json_encode($utilisateur_acces[$i]), ENT_QUOTES, 'UTF-8') . ')"></td>';
}
echo ' </tr>';
echo ' </form>';
}
}
echo ' </table>';
echo ' </div>';
echo '</div>';
echo '<div id="popUpAcces" style="display: none;">';
echo ' <div id="popUpAccesModal">';
echo ' <div id="top_part">';
echo ' <p> '.t("Titre du popup").' </p>';
echo ' <p id="close" onclick="closeEditAccess();"> </p>';
echo ' </div>';
echo ' <form action="bateaux.php" method="POST">';
echo ' <label for="shipmemberForm" id="ShipMember"> ';
echo ' <input id="shipmemberForm" type="text" value="" name="shipmember" readonly>';
echo ' <span>'.t("Shipmember").'</span>';
echo ' </label>';
echo ' <label for="cree_parForm" id="Cree_par"> ';
echo ' <input id="cree_parForm" type="text" value="" name="cree_par" readonly>';
echo ' <span>'.t("Créé par").'</span>';
echo ' </label>';
echo ' <label for="type_profilForm" id="Type_profil"> ';
echo ' <select name="type_profil" id="type_profilForm" required>
<option value="" disabled selected> -- '.$_SESSION['textes']['bateau']['details']['acces']['select'] .' -- </option>' ;
for ($i = 0; $i < $type_acces_nb; $i++){
echo '<option value="'.$type_acces[$i]['Cle_primaire'].'"> '.$type_acces[$i]['Nom'].' </option>';
}
echo ' </select>';
echo ' <span>'.t("Type de profil").'</span>';
echo ' </label>';
echo ' <label for="fin_validiteForm" id="Fin_validite"> ';
echo ' <input id="fin_validiteForm" type="date" value="" name="fin_validite" required>';
echo ' <span>'.t("Fin de validite").'</span>';
echo ' </label>';
echo ' <input hidden id="idForm" name="ID" value="">';
echo ' <button type="submit" name="supprimerAcces" onclick="return window.confirm(\''.$_SESSION["textes"]["bateau"]["edit_acces"]["popup"]["delete_confirm"].'\');"> '.t("Supprimer").' </button>';
echo ' <button type="submit" name="modifierAcces"> '.t("Mettre à jour").' </button>';
echo ' </form>';
echo ' </div>';
echo '</div>';
break;
}
//===========================================================
// 'resume' (et toute ancienne valeur de session) :
default:
{
echo '<p>'.t("La consultation des données du bateau sera disponible prochainement.").'</p>';
break;
}
}
echo '</div>'; // Fin de class="corps_details_bateau"
//--------------------------------
echo '<div class="boutons_bas_de_page">';
if ($_SESSION['Bateaux']['origine'] == "shipmember") echo '<a title="" href="shipmembers.php?action=navigation&destination=Accueil">Retour au menu ShipMember</a>';
else
{
echo '<a title="" href="administration.php?action=navigation&destination=Accueil">Retour au menu Administration</a>';
echo '<a title="" href="bateaux.php?action=navigation&destination=Accueil">Revenir à la liste des bateaux</a>';
echo '<a href="bateaux.php?action=modification_bateau&id_bateau='.$bateau['Cle_primaire'].'">Modifier</a>';
}
echo '</div>';
//-------------------------------
// Help
echo '<div class="help_note" id="help_note" style="display:none;">';
echo '<p>';
switch($_SESSION['Bateaux']['type_details_bateau'])
{
case 'gerer_les_acces':
{
echo t("Aide accès");
break;
}
default: break;
}
echo '</p>';
echo '</div>';
echo '<div class="help help_open" id="help" onclick="toggle_help();">';
echo '</div>';
echo '</div>';
break;
}
//************************************************************************************************************************
case "Creation_bateau":
case "Modification_bateau":
{
echo '<div id="creation_bateau" class="page_principale">';
echo '<h1>Bateaux</h1>';
echo '<form action="bateaux.php" method="post">';
if ($_SESSION['Bateaux']['page'] == "Creation_bateau") echo '<h2>Nouveau bateau</h2>';
else echo '<h2>Modification du bateau <span class="gras">'.$_SESSION['Bateaux']['bateau']['Nom'].'</span></h2>';
//----------------------------------------
// Nom :
echo '<div class="champs">
<div class="champs_titre">
Nom
</div>
<div class="champs_valeur">
<input name="Nom" placeholder="Par exemple : Et Si... 2" value="'.$_SESSION['Bateaux']['bateau']['Nom'].'" >
</div>
</div>';
//----------------------------------------
// Date de mise en service :
echo '<div class="champs">
<div class="champs_titre">
Date de mise en service
</div>
<div class="champs_valeur">
<input name="Date_mes" placeholder="Format Y-m-d" value="'.$_SESSION['Bateaux']['bateau']['Date_mes'].'" >
</div>
</div>';
//----------------------------------------
// Flotte :
echo '<div class="champs">
<div class="champs_titre">
Flotte à laquelle le bateau appartient
</div>
<div class="champs_valeur">
<select name="ID_Flotte">';
for ($i=0; $i<$nb_flottes; $i++)
{
echo ' <option value="'.$flottes[$i]['Cle_primaire'].'" '; if ($flottes[$i]['Cle_primaire'] == $_SESSION['Bateaux']['bateau']['ID_Flotte']) echo 'selected'; echo '>
'.$flottes[$i]['Nom'].'
</option>';
}
echo '</select>
</div>
</div>';
//----------------------------------------
// Commentaires :
echo '<div class="champs">
<div class="champs_titre">
Commentaires
</div>
<div class="champs_valeur">
<textarea cols="" rows="" name="Commentaires" placeholder="Vos commentaires sur la bateau" autocomplete="off">'.$_SESSION['Bateaux']['bateau']['Commentaires'].'</textarea>
</div>
</div>';
//----------------------------------------
// Boutons de bas de page :
echo '<div class="boutons_bas_de_page">';
if ($_SESSION['Bateaux']['page'] == "Creation_bateau") // Création :
{
echo '<a title="" href="bateaux.php?action=navigation&destination=Accueil">Annuler</a>';
echo '<button type="submit" name="validation_creation_bateau" title="Valider la création de la bateau">Créer la bateau</button>';
}
else // Modification :
{
echo '<a title="" href="bateaux.php?action=navigation&destination=Accueil">Annuler</a>';
echo '<button type="submit" name="validation_modification_bateau" title="Valider les modification de la bateau">Enregistrer les modifications</button>';
echo '<a title="" href="bateaux.php?action=demande_suppression_bateau&id_bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].'">Supprimer la bateau</a>';
}
echo '</div>';
echo '</form>';
echo '</div>';
break;
}
//****************************************************************************************************************************
case "Confirmation_suppression_bateau":
{
echo '<div id="confirmation_suppression_bateau" class="page_principale">';
echo '<h1>Bateaux</h1>';
echo '<div class="message_confirmation">';
echo '<p>
Confirmez-vous la suppression du bateau
<span class="gras">';
echo $_SESSION['Bateaux']['bateau']['Nom'];
echo '</span> ?
</p>';
echo '<p>Si oui, son entrée dans la base de données sera dévalidée de la base de données.</p>';
echo '</div>';
echo '<div class="boutons_bas_de_page">';
echo '<a title="" href="bateaux.php?action=navigation&destination=Accueil">Annuler</a>';
echo '<a title="" href="bateaux.php?action=confirmation_suppression_bateau&id_bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].'">Confirmer la suppression</a>';
echo '</div>';
echo '</div>';
break;
}
}
echo '</div>';
Pied_de_page();
?>
<script>
function toggle_help(){
var help = document.getElementById("help");
var help_note = document.getElementById("help_note");
if (help_note.style.display == "none"){
help_note.style.display = "block";
help.classList.remove("help_open");
help.classList.add("help_close");
}
else {
help_note.style.display = "none";
help.classList.remove("help_close");
help.classList.add("help_open");
}
}
function closeEditAccess(){
document.getElementById('popUpAcces').style.display = "none";
}
function popUpEditAccess(data){
acces = data;
document.getElementById('popUpAcces').style.display = "block";
document.getElementById('shipmemberForm').value = acces['sm_Nom']+" "+acces['sm_Prenom']+" ["+acces['sm_Email']+"] ";
document.getElementById('cree_parForm').value = acces['cree_par_Nom']+" "+acces['cree_par_Prenom'];
document.getElementById('idForm').value = acces['ID'];
const selectElement = document.getElementById('type_profilForm');
for (let i = 0; i < selectElement.options.length; i++) {
if (selectElement.options[i].value === acces['ID_Type_acces_bateau_shipmember']) {
selectElement.options[i].selected = true;
break;
}
}
document.getElementById('fin_validiteForm').value = acces['Fin_validite'].substring(0,10);
}
</script>