Peuplement des infra subdivisions françaises (arrondissements, communes et arrondissements municipaux)

v0_spip32
Eric Lupinacci 3 years ago
parent 281297553e
commit fffb9a780a

@ -32,6 +32,12 @@
obligatoire=oui,
tout_selectionner=oui,
})]
[(#SAISIE{checkbox, pays_infra,
explication=<:territoires:explication_infrasubdivision_territoire:>,
data=#ENV{_pays_infra},
conteneur_class=long_label,
obligatoire=oui,
})]
</div>
<fieldset id="chargement">
@ -43,11 +49,6 @@
conteneur_class=long_label,
})]
[(#SAISIE{case, infrasub,
label_case=<:territoires:label_case_infrasub:>,
conteneur_class=long_label,
})]
[(#SAISIE{case, extra_code,
label_case=<:territoires:label_case_extra_code:>,
conteneur_class=long_label,

@ -65,9 +65,28 @@ function formulaires_peupler_territoires_charger() {
}
}
// Acquérir la liste des pays dont les infra subdivisions sont disponibles et dont les subdivisions sont déjà
// chargées.
$options = array(
'exclure' => 'alternates,infrasubdivisions',
'index' => 'pays'
);
$infrasubdivisions = territoires_acquerir('infrasubdivision', array(), $options);
// -- indiquer les territoires déjà chargés
foreach ($infrasubdivisions as $_code => $_pays) {
if (territoire_est_peuple('subdivision', $_code)) {
$valeurs['_pays_infra'][$_code] = $_pays;
$un_territoire_charge = true;
if (territoire_est_peuple('infrasubdivision', $_code)) {
$valeurs['_pays_infra'][$_code] .= ' - <em>[' . _T('territoires:info_territoire_peuple') . ']</em>';
}
}
}
// Ne pas sélectionner un type ou un pays par défaut
set_request('types', array());
set_request('pays', array());
set_request('pays_infra', array());
// Désactiver l'action vider si aucun pays encore chargé
if (!$un_territoire_charge) {
@ -92,9 +111,10 @@ function formulaires_peupler_territoires_verifier() {
$erreurs['action_territoire'] = _T('info_obligatoire');
}
if (!_request('pays') and !_request('types')) {
if (!_request('pays') and !_request('pays_infra') and !_request('types')) {
$erreurs['types'] = _T('info_obligatoire');
$erreurs['pays'] = ' ';
$erreurs['pays_infra'] = ' ';
}
return $erreurs;
@ -129,21 +149,12 @@ function formulaires_peupler_territoires_traiter() {
}
$types = _request('types');
$pays = _request('pays');
$infra = _request('infrasub');
if ($pays) {
$types[] = 'subdivision';
if (
(
($action === 'peupler')
and $infra
)
or (
($action === 'depeupler')
and territoire_est_peuple('infra_subdivision', $pays)
)
) {
$types[] = 'infra_subdivision';
}
}
$pays_infra = _request('pays_infra');
if ($pays_infra) {
$types[] = 'infrasubdivision';
}
// Détermination des options de l'action
@ -163,14 +174,15 @@ function formulaires_peupler_territoires_traiter() {
$actionner = "territoire_${action}";
$statut = array();
foreach ($types as $_type) {
// Traitement du type en prenant en compte le cas particulier des subdivisions.
if (
include_spip('inc/territoires_utils')
and type_est_subdivision($_type)
) {
// Traitement du type en prenant en compte le cas particulier des subdivisions et infra subdivisions.
if ($_type === 'subdivision') {
foreach ($pays as $_pays) {
$statut[] = $actionner($_type, $_pays, $options);
}
} elseif ($_type === 'infrasubdivision') {
foreach ($pays_infra as $_pays) {
$statut[] = $actionner($_type, $_pays, $options);
}
} else {
$statut[] = $actionner($_type, '', $options);
}

@ -15,8 +15,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* @api
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
* @param array $options Options de peuplement (défaut à `false`) :
* - `force` : si `true` force le repeuplement même si le sha est identique.
* - `extras`: tableau des types d'extras à peupler soit `code` pour les codes alternatifs
@ -37,7 +37,7 @@ function territoire_peupler($type, $pays, $options = array()) {
// Le peuplement dépend du type :
// - type = zone ou country : on charge l'ensemble des régions du monde ou l'ensemble des pays
// - type = subdivision ou infra_subdivision : il faut préciser le pays (code ISO alpha2) pour lequel on charge toutes les subdivisions
// - type = subdivision ou infrasubdivision : il faut préciser le pays (code ISO alpha2) pour lequel on charge toutes les subdivisions
include_spip('inc/territoires_services');
include_spip('inc/territoires_utils');
if (type_pays_est_valide($type, $pays)) {
@ -80,9 +80,9 @@ function territoire_peupler($type, $pays, $options = array()) {
// les subdivisions parents.
if (
($type === 'subdivision')
and territoire_est_peuple('infra_subdivision', $pays)
and territoire_est_peuple('infrasubdivision', $pays)
) {
territoire_depeupler('infra_subdivision', $pays);
territoire_depeupler('infrasubdivision', $pays);
}
territoire_depeupler($type, $pays);
@ -237,8 +237,8 @@ function territoire_peupler($type, $pays, $options = array()) {
*
* @api
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
*
* @return array Liste des code ISO 3166-1 alpha2 des pays chargés sous la forme [code] = nom multi.
*/
@ -255,7 +255,7 @@ function territoire_depeupler($type, $pays = '') {
// Le vidage dépend du type :
// - type = zone ou country : on vide l'ensemble des régions du monde ou l'ensemble des pays
// - type = subdivision ou infra_subdivision : il faut préciser le pays (code ISO alpha2) pour lequel on vide toutes les subdivisions
// - type = subdivision ou infrasubdivision : il faut préciser le pays (code ISO alpha2) pour lequel on vide toutes les subdivisions
include_spip('inc/territoires_services');
include_spip('inc/territoires_utils');
if (type_pays_est_valide($type, $pays)) {
@ -343,8 +343,8 @@ function territoire_depeupler($type, $pays = '') {
*
* @api
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param array|string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param array|string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
*
* @return bool true si le territoire est chargé, false sinon.
*/
@ -377,8 +377,8 @@ function territoire_est_peuple($type, $pays = '') {
*
* @api
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
* @param string $type_extra Type d'extra. Prends les valeurs `code` ou `info`.
*
* @return bool true si le territoire est chargé, false sinon.

@ -18,8 +18,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* @api
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
*
* @return bool `true` si le couple (type, pays) est valide, `false` sinon.
*/

@ -85,6 +85,28 @@ function territoires_configurer() {
),
),
),
'infrasubdivision' => array(
'champs' => array(
'base' => array(
'code' => 'iso_territoire',
'type' => 'categorie',
'country' => 'iso_pays',
'parent' => 'iso_parent',
'label' => 'iso_titre',
),
'index' => 'infrasubdivisions',
),
'extras' => array(
'code' => array(
'champs' => array(
'extra' => 'type_alter',
'valeur' => 'code_alter',
),
'index' => 'codes_alternatifs',
'cle_iso' => 'code_iso',
),
),
),
);
return $configuration;
@ -97,8 +119,8 @@ function territoires_configurer() {
*
* @internal
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
* @param array $options Permet de demander l'exclusion (`exclure`) de certains index si ceux-ci sont inutilisés
* ou de ne retourner qu'un seul index (`index`).
*
@ -158,8 +180,8 @@ function territoires_acquerir($type, $pays = '', $options = array()) {
*
* @internal
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
*
* @return array
*/
@ -312,8 +334,8 @@ function traduction_fusionner($multi_prioritaire, $multi_non_prioritaire) {
/**
* @param array $territoire
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
*
* @internal
*
@ -367,8 +389,8 @@ function enregistrement_initialiser($territoire, $type, $pays = '') {
* @param array $types_extras
* @param array $source
* @param array $configuration
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
* @param array $meta_extras
*
* @return array
@ -436,7 +458,7 @@ function extra_compiler($mode, $types_extras, $source, $configuration, $type, $p
*
* @api
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
*
* @return bool `true` si le couple (type, pays) est valide, `false` sinon.
*/
@ -446,7 +468,7 @@ function type_est_subdivision($type) {
// 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')
or ($type === 'infra_subdivision')
or ($type === 'infrasubdivision')
) {
$est_subdivision = true;
}
@ -460,8 +482,8 @@ function type_est_subdivision($type) {
*
* @internal
*
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infra_subdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infra_subdivision` sinon une chaine vide.
* @param string $type Type de territoires. Prends les valeurs `zone`, `country`, `subdivision` ou `infrasubdivision`.
* @param string $pays Code ISO 3166-1 alpha2 du pays si le type est `subdivision` ou `infrasubdivision` sinon une chaine vide.
*
* @return string
*/

@ -10,14 +10,19 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'ajouter_lien_territoire' => 'Ajouter ce territoire',
// C
'categorie_arrondissement' => 'arrondissement',
'categorie_autonomous_community' => 'communauté autonome',
'categorie_autonomous_city_in_north_africa' => 'ville autonome en Afrique du Nord',
'categorie_canton' => 'canton',
'categorie_commune' => 'commune',
'categorie_associated_commune' => 'commune associée',
'categorie_delegated_commune' => 'commune déléguée',
'categorie_land' => 'land',
'categorie_region' => 'région',
'categorie_province' => 'province',
'categorie_metropolitan_department' => 'département métropolitain',
'categorie_metropolitan_region' => 'région métropolitaine',
'categorie_municipal_arrondissement' => 'arrondissement municipal',
'categorie_dependency' => 'dépendance',
'categorie_collectivity' => 'collectivité',
'categorie_overseas_region' => 'région d\'outre-mer',
@ -34,7 +39,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'champ_iso_continent_label' => 'Continent',
'champ_iso_parent_label' => 'Parent',
'champ_iso_pays_label' => 'Pays',
'champ_iso_territoire_label' => 'Code ISO',
'champ_iso_territoire_label' => 'Code',
'champ_iso_titre_label' => 'Nom ISO',
'champ_nom_usage_label' => 'Nom d\'usage',
'champ_type_label' => 'Type',
@ -71,5 +76,5 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'type_zone' => 'zone',
'type_country' => 'pays',
'type_subdivision' => 'subdivision',
'type_infra_subdivision' => 'Infra subdivision',
'type_infrasubdivision' => 'Infra subdivision',
);

@ -15,6 +15,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
Le vidage lui ne conserve ni les territoires, ni les extras, ni les liens.',
'explication_zone_country_territoire' => 'Régions & Pays',
'explication_subdivision_territoire' => 'Subdivisions',
'explication_infrasubdivision_territoire' => 'Infra Subdivisions (les subdivisions doivent être déjà chargées)',
'explication_forcer' => 'Le forçage est utile uniquement pour ajouter après coup des identifiants ou des informations complémentaires sans actionner le vidage au préalable.',
// I
@ -50,7 +51,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'onglet_zone' => 'Zones',
'onglet_country' => 'Pays',
'onglet_subdivision' => 'Subdivisions',
'onglet_infra_subdivision' => 'Infra Subdivisions',
'onglet_infrasubdivision' => 'Infra Subdivisions',
// S
'msg_depeupler_zone_erreur' => 'Une erreur s\'est produite lors du vidage des régions du monde.',
@ -71,12 +72,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'msg_peupler_subdivision_erreur' => 'Une erreur s\'est produite lors du peuplement des subdivisions du ou des pays « @pays@ ».',
'msg_peupler_subdivision_notice' => 'Aucune mise à jour n\'est nécessaire pour les subdivisions du ou des pays « @pays@ ».',
'msg_peupler_subdivision_succes' => 'Les subdivisions du ou des pays « @pays@ » ont bien été chargées.',
'msg_depeupler_infra_subdivision_erreur' => 'Une erreur s\'est produite lors du vidage des infra subdivisions du ou des pays « @pays@ ».',
'msg_depeupler_infra_subdivision_notice' => 'Aucun vidage n\'est nécessaire pour les infra subdivisions du ou des pays « @pays@ ».',
'msg_depeupler_infra_subdivision_succes' => 'Les infra subdivisions du ou des pays « @pays@ » ont bien été vidées.',
'msg_peupler_infra_subdivision_erreur' => 'Une erreur s\'est produite lors du peuplement des infra subdivisions du ou des pays « @pays@ ».',
'msg_peupler_infra_subdivision_notice' => 'Aucune mise à jour n\'est nécessaire pour les infra subdivisions du ou des pays « @pays@ ».',
'msg_peupler_infra_subdivision_succes' => 'Les infra subdivisions du ou des pays « @pays@ » ont bien été chargées.',
'msg_depeupler_infrasubdivision_erreur' => 'Une erreur s\'est produite lors du vidage des infra subdivisions du ou des pays « @pays@ ».',
'msg_depeupler_infrasubdivision_notice' => 'Aucun vidage n\'est nécessaire pour les infra subdivisions du ou des pays « @pays@ ».',
'msg_depeupler_infrasubdivision_succes' => 'Les infra subdivisions du ou des pays « @pays@ » ont bien été vidées.',
'msg_peupler_infrasubdivision_erreur' => 'Une erreur s\'est produite lors du peuplement des infra subdivisions du ou des pays « @pays@ ».',
'msg_peupler_infrasubdivision_notice' => 'Aucune mise à jour n\'est nécessaire pour les infra subdivisions du ou des pays « @pays@ ».',
'msg_peupler_infrasubdivision_succes' => 'Les infra subdivisions du ou des pays « @pays@ » ont bien été chargées.',
// T
'territoires_titre' => 'Territoires',

@ -15,7 +15,7 @@
<:territoire:champ_iso_territoire_label:>&nbsp;:
<p>#ISO_TERRITOIRE</p>
</div>
[(#REM) <!-- Type de territoire et son icone (zone, country, subdivision, infra_subdivision) -->]
[(#REM) <!-- Type de territoire et son icone (zone, country, subdivision, infrasubdivision) -->]
[<div class="numero">
[(#CHEMIN_IMAGE{[type_(#TYPE)-xx.svg]}
|image_reduire{32,32}

@ -10,7 +10,7 @@
|parametre_url{type, ''}
|lien_ou_expose{<:territoires:onglet_tous:>, #ENV{type, ''}|=={''}, ajax})
</li>]
<BOUCLE_types(DATA) {source table, #LISTE{zone, country, subdivision, infra_subdivision}}>
<BOUCLE_types(DATA) {source table, #LISTE{zone, country, subdivision, infrasubdivision}}>
[<li>
(#SELF
|parametre_url{type, #VALEUR}

Loading…
Cancel
Save