<?php /* Vérifie si le fichier local vacsi-tot-reg.csv est à jour Si nécessaire, le reconstruit à partir du fichier de référence sur internet */ function testmaj_tot_reg () { // fichier csv à mettre à jour éventuellement $csv = "vacsi-tot-reg.csv"; // url du fichier de référence $url = SITE_REF.vacsi_tot_reg; // 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) { // une mise à jour du fichier csv local est nécessaire message ("Mise à jour du fichier ".$csv); // tant que la ligne lue concerne un DOM (s'il y en a dans le fichier) while ($ligne_url [0] == "0") // passer à la ligne suivante $ligne_url = fgets ($descurl, LG_MAX_CSV); // on va mémoriser les lignes du fichier de référence dans un // tableau pour trier les régions par ordre alphabétique des noms $tabligne_reg = array (); // 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 --; // tantque non fin du fichier de référence while ($ligne_url) { // les numéros de région ne sont pas contigus utilisation // d'un switch - case pour mettre leur nom à la place switch (substr ($ligne_url, 0, 2)) { case 84: $nom_reg = "Auvergne-Rhône-Alpes"; break; case 27: $nom_reg = "Bourgogne-Franche-Comté"; break; case 53: $nom_reg = "Bretagne"; break; case 24: $nom_reg = "Centre-Val de Loire"; break; case 94: $nom_reg = "Corse"; break; case 44: $nom_reg = "Grand Est"; break; case 32: $nom_reg = "Hauts-de-France"; break; case 11: $nom_reg = "Ile-de-France"; break; case 28: $nom_reg = "Normandie"; break; case 75: $nom_reg = "Nouvelle-Aquitaine"; break; case 76: $nom_reg = "Occitanie"; break; case 52: $nom_reg = "Pays de la Loire"; break; case 93: $nom_reg = "Provence-Alpes-Côte d’Azur"; break; // le cas par défaut ne devrait jamais se produire default: $nom_reg = "code ".$args [0]; } // fabriquer la ligne qui sera mémorisée dans le fichier $ligne_url = $nom_reg.substr (selchamps_jour ($ligne_url, $doses), 2); // la mémoriser array_push ($tabligne_reg, $ligne_url); // lire la ligne suivante de l'url $ligne_url = fgets ($descurl, LG_MAX_CSV); } // tri du tableau par ordre alphabétique des noms sort ($tabligne_reg); // création du fichier csv local // pour l'instant, le nom est provisoire $nouvcsv = DIR_CSV."/vacsi-tot-reg.new"; // ouvrir ce fichier en écriture $descscv = fopen ($nouvcsv, "w"); // si l'ouverture s'est bien passée 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; // compléter avec les informations des différentes régions for ($i = 0; $i < count ($tabligne_reg); $i++) fputs ($descscv, $tabligne_reg [$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); } ?>