Généraliser la fonction de test du sha pour l'utilisation de Contours

v0_spip32
Eric Lupinacci 3 years ago
parent 0a0ba6fea1
commit 4226810f83

@ -37,7 +37,8 @@ function inc_requeter_isocode_dist($url_base, $collection, $filtres, $taille_max
// Options de la fonction de récupération du JSON
$options = array(
'transcoder' => true,
'taille_max' => $taille_max);
'taille_max' => $taille_max
);
// Acquisition du flux de données
include_spip('inc/distant');
@ -45,7 +46,7 @@ function inc_requeter_isocode_dist($url_base, $collection, $filtres, $taille_max
$reponse = array();
if (empty($flux['page'])) {
spip_log("URL indiponible : ${url}", 'contours' . _LOG_ERREUR);
spip_log("URL indiponible : ${url}", 'territoires' . _LOG_ERREUR);
$reponse['erreur'] = 'url_indisponible';
} else {
try {
@ -53,7 +54,7 @@ function inc_requeter_isocode_dist($url_base, $collection, $filtres, $taille_max
$reponse = json_decode($flux['page'], true);
} catch (Exception $erreur) {
$reponse['erreur'] = 'analyse_json';
spip_log("Erreur d'analyse JSON pour l'URL `${url}` : " . $erreur->getMessage(), 'contours' . _LOG_ERREUR);
spip_log("Erreur d'analyse JSON pour l'URL `${url}` : " . $erreur->getMessage(), 'territoires' . _LOG_ERREUR);
}
}

@ -107,6 +107,7 @@ function territoire_peupler($type, $pays = '', $options = array()) {
$erreur = true;
$type_identique = false;
$configuration = $GLOBALS['territoires'][$type];
$meta = 'territoires_peuplement';
// On récupère tous les index fournis la collection et pas uniquement celui des territoires du type.
// Ainsi, les autres index éventuels restent disponibles.
@ -120,7 +121,7 @@ function territoire_peupler($type, $pays = '', $options = array()) {
// changée. Dans ce cas, aucun traitement n'a lieu.
$sha_type = sha1(json_encode($territoires));
if (
sha_est_identique($sha_type, $type, $pays)
sha_est_identique($sha_type, $meta, $type, $pays)
and empty($options['force'])
) {
$type_identique = true;
@ -223,7 +224,6 @@ function territoire_peupler($type, $pays = '', $options = array()) {
lien_retablir('logos', $sauvegardes);
// On stocke les informations de chargement dans une meta.
$meta = 'territoires_peuplement';
$contenu = array(
'sha' => $sha_type,
'nbr' => count($territoires),
@ -631,23 +631,31 @@ function type_pays_est_valide($type, $pays = '') {
*
* @internal
*
* @param string $sha SHA à comparer à celui du type de territoire.
* @param string $type Type de territoires à peupler. Prends les valeurs `zone`, `country` ou `subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays dont on veut peupler les subdivisions.
* N'est utilisé que si le type choisi est `subdivision`.
* @param string $sha SHA à comparer à celui du type de territoire.
* @param string $meta Nom de la meta de consignation
* @param string $type Type de territoires à peupler. Prends les valeurs `zone`, `country` ou `subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays dont on veut peupler les subdivisions.
* N'est utilisé que si le type choisi est `subdivision`.
* @param string $service Identifiant du service Nomenclatures ayant permis le chargement. Est utilisé pour indexer
* la consignation dans le cas des contours uniquement. Sinon vaut chaine vide
*
* @return bool `true` si le sha passé en argument est identique au sha stocké pour la table choisie, `false` sinon.
*/
function sha_est_identique($sha, $type, $pays = '') {
function sha_est_identique($sha, $meta, $type, $pays = '', $service = '') {
$sha_identique = false;
// On récupère le sha de la table dans les metas si il existe (ie. la table a été chargée)
include_spip('inc/config');
if ($type === 'subdivision') {
$sha_stocke = lire_config("territoires_peuplement/${type}/${pays}/sha", false);
$consignation = $service
? "${meta}/${type}/${pays}/${service}/sha"
: "${meta}/${type}/${pays}/sha";
} else {
$sha_stocke = lire_config("territoires_peuplement/${type}/sha", false);
$consignation = $service
? "${meta}/${type}/${service}/sha"
: "${meta}/${type}/sha";
}
$sha_stocke = lire_config($consignation, false);
if ($sha_stocke and ($sha == $sha_stocke)) {
$sha_identique = true;

Loading…
Cancel
Save