<?php /* Vérifie si le fichier local vacsi-tot-a-fra.csv est à jour Si nécessaire, le reconstruit à partir du fichier de référence sur internet */ function testmaj_tot_a_fra () { // fichier csv à mettre à jour éventuellement $csv = "vacsi-tot-a-fra.csv"; // url du fichier de référence $url = SITE_REF.vacsi_tot_a_fra; // 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 en oubliant "FR;" $ligne_url = substr (fgets ($descurl, LG_MAX_CSV), 3); // 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-a-fra.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 // pour les trier par âge croissant $tabligne = array (); // tant que la dernière ligne lue fait référence à une classe d'âge while (substr ($ligne_url, 2, 1) == ";") { // corriger la ligne en supprimant le champ date, la partie // décimale de la population (!) et réordonner les champs $ligne_url = selchamps_jour ($ligne_url, $doses); // la mémoriser array_push ($tabligne, $ligne_url); // lire la ligne suivante de l'url en oubliant "FR;" $ligne_url = substr (fgets ($descurl, LG_MAX_CSV), 3); } // trier le tableau par classes d'âge croissantes sort ($tabligne); // compléter le fichier par classes d'âge croissantes foreach ($tabligne as $ligne_csv) fputs ($descscv, $ligne_csv); // traiter comme les autres la ligne tous âges confondus $ligne_url = selchamps_jour ($ligne_url, $doses); // la rajouter fputs ($descscv, $ligne_url); // 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); } ?>