<?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); } ?>