Lot 1 : purge de bateaux.php (modèle CM4), Date_derniere_maj alimentée par l'archivage, URL du QR code via URL_SITE, cookie de session corrigé
This commit is contained in:
@@ -12,7 +12,13 @@ function Init_session($nom_page)
|
|||||||
ini_set('arg_separator.output', '&');
|
ini_set('arg_separator.output', '&');
|
||||||
ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src"); // Ces deux lignes sont destinées à faire ajouter autoamtiquement & au lieu de '&' dans la passage des variables de Session (nécessaire pour W3C validator...)
|
ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src"); // Ces deux lignes sont destinées à faire ajouter autoamtiquement & au lieu de '&' dans la passage des variables de Session (nécessaire pour W3C validator...)
|
||||||
|
|
||||||
session_set_cookie_params(3600, '/', 'URL_SITE', 1, 1);
|
session_set_cookie_params([
|
||||||
|
'lifetime' => 3600,
|
||||||
|
'path' => '/',
|
||||||
|
'secure' => true,
|
||||||
|
'httponly' => true,
|
||||||
|
'samesite' => 'Lax',
|
||||||
|
]);
|
||||||
|
|
||||||
session_start(); // Ouverture de session (avant tout autre envoi au client!!!)
|
session_start(); // Ouverture de session (avant tout autre envoi au client!!!)
|
||||||
|
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ function code_acces_pdf($code, $no, $no_serie = "XX:XX:XX:XX:XX:XX", $client = "
|
|||||||
To activate your boat access please scan the attached QR code and log in to your existing ShipMember profile or create one.", 52, 218, 317, 160, 12);
|
To activate your boat access please scan the attached QR code and log in to your existing ShipMember profile or create one.", 52, 218, 317, 160, 12);
|
||||||
|
|
||||||
// Third page
|
// Third page
|
||||||
$pdf->Image(generateCode($code), 546, 216, 164, 164, 'PNG', 'https://dev.shipheart.tech/shipmembers.php?code_acces='.$code);
|
$pdf->Image(generateCode($code), 546, 216, 164, 164, 'PNG', Url_activation_code_acces($code));
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
@@ -333,10 +333,21 @@ function code_acces_pdf($code, $no, $no_serie = "XX:XX:XX:XX:XX:XX", $client = "
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//********************************************************************************************************************************
|
||||||
|
// Fonction : URL d'activation d'un code d'accès bateau, portée par le QR code ET par le lien cliquable du PDF d'invitation.
|
||||||
|
// Construite à partir de URL_SITE (definitions.php) : plus d'adresse écrite en dur (synthèse §47).
|
||||||
|
// Reçoit : le code d'accès
|
||||||
|
// Retour : l'URL complète
|
||||||
|
//********************************************************************************************************************************
|
||||||
|
function Url_activation_code_acces($code)
|
||||||
|
{
|
||||||
|
return 'https://'.URL_SITE.'/shipmembers.php?code_acces='.urlencode($code);
|
||||||
|
}
|
||||||
|
|
||||||
function generateCode($code){
|
function generateCode($code){
|
||||||
$tempDir = "temp/CodeQR/";
|
$tempDir = "temp/CodeQR/";
|
||||||
|
|
||||||
$codeContents = 'https://shipheart.tech/shipmembers.php?code_acces='.$code;
|
$codeContents = Url_activation_code_acces($code);
|
||||||
|
|
||||||
$fileName = $code.'.png';
|
$fileName = $code.'.png';
|
||||||
|
|
||||||
|
|||||||
@@ -481,6 +481,7 @@ function Executer_cron_archivage()
|
|||||||
// Résolution de la vraie Cle_primaire de la génération (celle juste créée, ou l'existante) :
|
// Résolution de la vraie Cle_primaire de la génération (celle juste créée, ou l'existante) :
|
||||||
$generation_pour_enregistrement = Resoudre_generation_active($db, $id_bateau);
|
$generation_pour_enregistrement = Resoudre_generation_active($db, $id_bateau);
|
||||||
Enregistrer_archive_traitee($db, $nom, $adresse_mac, $id_bateau, $generation_pour_enregistrement['cle'], 'traitee', $mmsi_recu, $mmsi_attendu_connu);
|
Enregistrer_archive_traitee($db, $nom, $adresse_mac, $id_bateau, $generation_pour_enregistrement['cle'], 'traitee', $mmsi_recu, $mmsi_attendu_connu);
|
||||||
|
Mettre_a_jour_derniere_archive($db, $id_bateau, $nom);
|
||||||
|
|
||||||
if (Confirmer_suppression_archive($boitier['Adresse_netbird'], $nom))
|
if (Confirmer_suppression_archive($boitier['Adresse_netbird'], $nom))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -233,6 +233,7 @@ function Executer_cron_quarantaine()
|
|||||||
|
|
||||||
$generation_pour_enregistrement = Resoudre_generation_active($db, $id_bateau);
|
$generation_pour_enregistrement = Resoudre_generation_active($db, $id_bateau);
|
||||||
Trancher_archive_en_attente($db, $nom, $id_bateau, $generation_pour_enregistrement['cle'], 'traitee', null, $mmsi_recu, $mmsi_attendu_connu);
|
Trancher_archive_en_attente($db, $nom, $id_bateau, $generation_pour_enregistrement['cle'], 'traitee', null, $mmsi_recu, $mmsi_attendu_connu);
|
||||||
|
Mettre_a_jour_derniere_archive($db, $id_bateau, $nom);
|
||||||
unlink($chemin);
|
unlink($chemin);
|
||||||
echo " - {$nom} : quarantaine levée, chargée dans {$nom_base_cible}.\n";
|
echo " - {$nom} : quarantaine levée, chargée dans {$nom_base_cible}.\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -469,6 +469,28 @@ function Executer_sql_base($nom_base, $sql)
|
|||||||
return ['ok' => true];
|
return ['ok' => true];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Met à jour TB_Bateaux.Date_derniere_maj après le chargement RÉUSSI d'une
|
||||||
|
// archive (synthèse §47) : date-heure UTC de génération de l'archive par le
|
||||||
|
// CM5, lue dans son nom (<MAC>_AAMMJJ_HHMMSS_<empreinte>.sql.gz.enc) - c'est
|
||||||
|
// elle qui date réellement les données, pas la date de réception (§44.6).
|
||||||
|
// GREATEST : une archive plus ancienne chargée tardivement (sortie de
|
||||||
|
// quarantaine, CM5 longtemps injoignable) ne fait jamais reculer la date.
|
||||||
|
// Renvoie true si la requête a abouti.
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
function Mettre_a_jour_derniere_archive($db_principale, $id_bateau, $nom_fichier)
|
||||||
|
{
|
||||||
|
if (!preg_match('/^[0-9A-Fa-f]{12}_(\d{2})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})_/', $nom_fichier, $m)) return false;
|
||||||
|
$date_archive = "20{$m[1]}-{$m[2]}-{$m[3]} {$m[4]}:{$m[5]}:{$m[6]}";
|
||||||
|
|
||||||
|
$requete = "UPDATE TB_Bateaux SET Date_derniere_maj = GREATEST(COALESCE(Date_derniere_maj, '1970-01-01 00:00:00'), ?) WHERE Cle_primaire=?";
|
||||||
|
$stmt = $db_principale->prepare($requete);
|
||||||
|
$stmt->bind_param('si', $date_archive, $id_bateau);
|
||||||
|
$ok = $stmt->execute();
|
||||||
|
$stmt->close();
|
||||||
|
return $ok;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Détermine la liste des tables fragmentées (incrémentales) d'une base bateau,
|
// Détermine la liste des tables fragmentées (incrémentales) d'une base bateau,
|
||||||
// par la MÊME méthode que côté CM5 (SHOW TABLES LIKE 'TB_Mesures%' + TB_Historique,
|
// par la MÊME méthode que côté CM5 (SHOW TABLES LIKE 'TB_Mesures%' + TB_Historique,
|
||||||
|
|||||||
+62
-2717
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
|||||||
|
-- ============================================================================
|
||||||
|
-- TB_Bateaux.Date_derniere_maj : redéfinition (synthèse §47)
|
||||||
|
-- Date-heure UTC de génération (par le CM5) de l'archive la plus récente
|
||||||
|
-- chargée avec succès. Mise à jour par cron_archivage.php et
|
||||||
|
-- cron_quarantaine.php (Mettre_a_jour_derniere_archive). NULL = aucune
|
||||||
|
-- archive chargée à ce jour (remplace l'ancienne valeur sentinelle
|
||||||
|
-- 2020-01-01 du modèle CM4).
|
||||||
|
-- ============================================================================
|
||||||
|
ALTER TABLE TB_Bateaux
|
||||||
|
MODIFY COLUMN Date_derniere_maj DATETIME NULL DEFAULT NULL
|
||||||
|
COMMENT 'Date-heure UTC de génération (CM5) de l''archive la plus récente chargée avec succès - NULL si aucune';
|
||||||
|
|
||||||
|
UPDATE TB_Bateaux SET Date_derniere_maj = NULL WHERE Date_derniere_maj < '2020-01-02';
|
||||||
Reference in New Issue
Block a user