parent
aa5b19f66d
commit
2cbd1e4998
@ -1,37 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Ce fichier contient la fonction de test d'égalité d'un sha avec celui stocké en meta.
|
||||
*
|
||||
* @package SPIP\TERRITOIRES\API
|
||||
*/
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare le sha passé en argument pour le type de territoire concerné avec le sha stocké dans la meta
|
||||
* pour cette même type.
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param string $sha SHA à comparer à celui du type de territoire.
|
||||
* @param string $meta Nom de la meta de consignation
|
||||
* @param string $consigne Nom de la variable de consigne fonction du type et du pays éventuellement.
|
||||
*
|
||||
* @return bool `true` si le sha passé en argument est identique au sha stocké pour la table choisie, `false` sinon.
|
||||
*/
|
||||
function inc_sha_est_identique_dist($sha, $meta, $consigne) {
|
||||
|
||||
$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');
|
||||
$sha_stocke = lire_config("${meta}/${consigne}/sha", false);
|
||||
|
||||
if ($sha_stocke and ($sha === $sha_stocke)) {
|
||||
$sha_identique = true;
|
||||
}
|
||||
|
||||
return $sha_identique;
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/**
|
||||
* Gestion du formulaire de chargement ou de vidage des territoires.
|
||||
*
|
||||
* @package SPIP\TERRITOIRES\API
|
||||
*/
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Vérifie si le couple (type, pays) est valide, à savoir, désigne bien un sous-ensemble cohérent de territoires.
|
||||
* Les sous-ensembles valides sont :
|
||||
* - les régions du monde
|
||||
* - les pays
|
||||
* - les subdivisions d'un pays.
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @param string $type Type de territoires. 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`.
|
||||
*
|
||||
* @return bool `true` si le couple (type, pays) est valide, `false` sinon.
|
||||
*/
|
||||
function type_pays_est_valide($type, $pays = '') {
|
||||
$est_valide = false;
|
||||
|
||||
// On récupère le sha de la table dans les metas si il existe (ie. la table a été chargée)
|
||||
if ($type === 'subdivision') {
|
||||
if (strlen($pays) === 2) {
|
||||
$est_valide = true;
|
||||
}
|
||||
} elseif (in_array($type, array('zone', 'country'))) {
|
||||
$est_valide = true;
|
||||
}
|
||||
|
||||
return $est_valide;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare le sha passé en argument pour le type de territoire concerné avec le sha stocké dans la meta
|
||||
* pour cette même type.
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param string $sha SHA à comparer à celui du type de territoire.
|
||||
* @param string $meta Nom de la meta de consignation
|
||||
* @param string $consigne Nom de la variable de consigne fonction du type et du pays éventuellement.
|
||||
*
|
||||
* @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, $meta, $consigne) {
|
||||
|
||||
$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');
|
||||
$sha_stocke = lire_config("${meta}/${consigne}/sha", false);
|
||||
|
||||
if ($sha_stocke and ($sha === $sha_stocke)) {
|
||||
$sha_identique = true;
|
||||
}
|
||||
|
||||
return $sha_identique;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rétablit les liens d'un type d'objet avec les territoires peuplés ou repeuplés.
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @param string $type_lien Type de liens à restaurer : `liens` ou `logos`.
|
||||
* @param array $sauvegardes Tableau des sauvegardes dans lequel puiser les liens existants
|
||||
* @param array $ids_crees Tableau des nouveaux id des territoires.
|
||||
* @param array $config_lien Tableau de configuration de la table de liens concernée composé des index:
|
||||
* - `table` : nom complet de la table spip
|
||||
* - `id_table` : nom du champ id du territoire
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function liens_retablir($type_lien, $sauvegardes, $ids_crees, $config_lien) {
|
||||
|
||||
// On contruit la liste des enregistrements correspondant aux liens à rétablir.
|
||||
$liens = array();
|
||||
foreach ($sauvegardes[$type_lien] as $_lien) {
|
||||
// identifier le code iso à partir de l'ancien id
|
||||
$iso = array_search($_lien[$config_lien['id_table']], $sauvegardes['ids']);
|
||||
// en déduire le nouvel id du territoire et le mettre à jour dans le tableau
|
||||
// -- si l'iso n'est pas trouvé dans les nouveaux c'est que le territoire n'existe plus
|
||||
// et qu'il ne faut pas rétablir les liens
|
||||
if (isset($ids_crees[$iso])) {
|
||||
$lien = $_lien;
|
||||
$lien[$config_lien['id_table']] = $ids_crees[$iso];
|
||||
$liens[] = $lien;
|
||||
}
|
||||
}
|
||||
|
||||
// Insertion des liens en une seule requête
|
||||
if ($liens) {
|
||||
sql_insertq_multi($config_lien['table'], $liens);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue