<?php
/*
Vérifie si le fichier local vacsi-tot-dep.csv est à jour
Si nécessaire, le reconstruit à partir du fichier de référence sur internet
*/
function testmaj_tot_dep ()
{
// fichier csv à mettre à jour éventuellement
$csv = "vacsi-tot-dep.csv";
// url du fichier de référence
$url = SITE_REF.vacsi_tot_dep;
// ouvrir cet url en lecture
$descurl = fopen ($url, "r");
// si l'ouverture s'est bien passée
if ($descurl)
{
// sauter la première ligne de l'url
fgets ($descurl, LG_MAX_CSV * 2);
// lire la 2ème ligne de l'url
$ligne_url = fgets ($descurl, LG_MAX_CSV);
// séparer les différents champs de la ligne
// on prévoie que des champs supplémentaires pourront apparaitre
$args = explode (";", trim ($ligne_url), 20);
// mémoriser la date
$date_url = $args [1];
// fichier local contenant la version précédente de l'url
$chemcsv = DIR_CSV."/".$csv;
// ouvrir ce fichier en lecture
$descscv = fopen ($chemcsv, "r");
// si l'ouverture s'est bien passée
if ($descscv)
{
// récupérer la date présente dans le fichier local
$date_csv = trim (fgets ($descscv, 20));
// déjà terminé avec ce fichier
fclose ($descscv);
}
// si ces dates sont différentes
if ($date_url != $date_csv)
{
// on va reconstruire le fichier csv local à partir de l'url
message ("Mise à jour du fichier ".$csv);
// pour l'instant, son nom est provisoire
$nouvcsv = DIR_CSV."/vacsi-tot-dep.new";
// ouvrir ce fichier en écriture
$descscv = fopen ($nouvcsv, "w");
if ($descscv)
{
// recopier la date dans la première ligne
fputs ($descscv, $date_url."\n");
// trouver le nombre de doses mémorisées
$doses = (count ($args) - 3) / 2;
// 2 colonnes seront à fusionner pour la dose 5
// à présent elle y est toujours, mais le test est explicatif
if ($doses > 5)
$doses --;
// on va mémoriser les lignes du fichier de
// référence par numéro de département croissant
$tabligne = array ();
// répéter
do
{
// extraire le numéro de département
$dep = substr ($ligne_url, 0, 2);
// sélectionner dans la ligne les champs à garder
$ligne_url = selchamps_jour ($ligne_url, $doses);
// la mémoriser
array_push ($tabligne, $ligne_url);
// lire la ligne suivante de l'url
$ligne_url = fgets ($descurl, LG_MAX_CSV);
}
// jusqu'à tous les départements de métropole mémorisés
while ($dep < 95);
// trier le tableau par numéros de départements
$i = 0;
// les 19 premiers
do
fputs ($descscv, $tabligne [$i]);
while (substr ($tabligne [$i++], 0, 2) < 19);
// 2A et 2B (Corse)
fputs ($descscv, $tabligne [$i + 9]);
fputs ($descscv, $tabligne [$i + 10]);
// les 9 suivants
do
fputs ($descscv, $tabligne [$i]);
while (substr ($tabligne [$i++], 0, 2) < 29);
// les derniers
$i = $i + 2;
while ($i <= 95)
fputs ($descscv, $tabligne [$i++]);
// remplissage fichier terminé
fclose ($descscv);
// on remplace l'ancien fichier par le nouveau
rename ($nouvcsv, $chemcsv);
}
// sinon
else
// message d'erreur si on n'a pas pu créer le fichier
message ("Problème pour créer le fichier ".$csv);
}
// sinon
else
// aucune mise à jour nécessaire
message ("Fichier ".$csv." déjà à jour");
// terminé avec l'url
fclose ($descurl);
}
// sinon
else
message ("Problème d'accés à l'URL pour mettre à jour le fichier ".$csv);
}
?>