Skip to content
Extraits de code Groupes Projets
Valider abf5142c rédigé par Eric Lupinacci's avatar Eric Lupinacci
Parcourir les fichiers

Deuxième étape permettant de traiter complètement le chargement et le déchargement des feeds.

parent 80a7e9ff
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -46,17 +46,183 @@ function territoires_stats_feed_initialiser_categorie_defaut(string $plugin) : s
}
/**
* Renvoie la configuration par défaut du dossier relatif où trouver les feeds.
* Renvoie la configuration par défaut de la racine où trouver les feeds.
* Cette information est utilisée a minima au chargement des feeds disponibles.
*
* Le plugin de statistiques pour les territoires crée dynamiquement les feeds. De fait, il les stocke dans le
* dossier des données permanentes inaccessibles, _DIR_ETC.
* Le plugin crée dynamiquement les feeds. De fait, il les stocke dans le
* dossier des données permanentes inaccessibles, _DIR_ETC. Ce dossier n'étant pas accessible via le path de spip
* il est nécessaire d'indiquer la racine exacte qui fera l'objet d'un traitement particulier.
*
* @param string $plugin Préfixe du plugin utilisateur.
*
* @return string Chemin relatif du dossier où chercher les feeds.
* @return string Racine où chercher les feeds.
*/
function territoires_stats_feed_initialiser_dossier(string $plugin) : string {
function territoires_stats_feed_initialiser_racine(string $plugin) : string {
// Le plugin range les feeds créés dynamiquement dans _DIR_ETC.
return _DIR_ETC . $plugin . '/feeds/';
return _DIR_ETC . $plugin . '/';
}
/**
* Finalise l'exécution d'un feed uniquement si celle-ci s'est correctement déroulée.
*
* Le plugin rajoute la consignation des données statistiques.
*
* @package SPIP\MASHUP\SERVICE
*
* @uses unite_peuplement_consigne_identifier()
* @uses ezmashup_chercher_service()
*
* @param array $feed Configuration du feed
*
* @return void
*/
function territoires_stats_feed_completer_execution(array $feed) : void {
// Retrouver les éléments de l'unite de peuplement concernée
$type = $feed['tags']['type'] ?? '';
$pays = $feed['tags']['pays'] ?? '';
// Identification de la meta et de la variable de consigne
include_spip('inc/unite_peuplement');
$id_consigne = unite_peuplement_consigne_identifier('territoires', $type, $pays);
if (
include_spip('inc/config')
and ($consigne = lire_config($id_consigne, []))
) {
// Ajout de la consignation du feed de données statistiques en fonction du contexte de la consigne
if (!in_array('stat', $consigne['ext'])) {
$consigne['ext'][] = 'stat';
}
if (
empty($consigne['sta'])
or !in_array($feed['feed_id'], $consigne['sta'])
) {
$consigne['sta'][] = $feed['feed_id'];
}
// On met à jour la meta
ecrire_config($id_consigne, $consigne);
}
}
/**
* Finalise le vidage d'un feed uniquement si celui-ci s'est correctement déroulé.
*
* Le plugin Mashup Factory ne fait rien de particulier actuellement.
*
* @package SPIP\MASHUP\SERVICE
*
* @uses ezmashup_chercher_service()
*
* @param array $feed Configuration du feed
*
* @return void
*/
function territoires_stats_feed_completer_vidage(array $feed) : void {
// Retrouver les éléments de l'unite de peuplement concernée
$type = $feed['tags']['type'] ?? '';
$pays = $feed['tags']['pays'] ?? '';
// Identification de la meta et de la variable de consigne
include_spip('inc/unite_peuplement');
$id_consigne = unite_peuplement_consigne_identifier('territoires', $type, $pays);
if (
include_spip('inc/config')
and ($consigne = lire_config($id_consigne, []))
and in_array($feed['feed_id'], $consigne['sta'])
) {
// Retrait de la consignation du feed de données statistiques
$index = array_search($feed['feed_id'], $consigne['sta']);
if ($index !== false) {
unset($consigne['sta'][$index]);
}
// Si la liste des feeds est vide on supprime l'index 'sta' et on retire le type d'extra 'stat' de la liste
if (!$consigne['sta']) {
unset($consigne['sta']);
$index = array_search('stat', $consigne['ext']);
if ($index !== false) {
unset($consigne['ext'][$index]);
}
}
// On met à jour la meta
ecrire_config($id_consigne, $consigne);
}
}
// -----------------------------------------------------------------------
// ------------------------- SOURCE DATASETS -----------------------------
// -----------------------------------------------------------------------
/**
* Complète un item de la source venant d'être extrait.
*
* Le plugin gère les cas où le code identifiant les territoires ne sont pas les codes ISO comme l'attend la
* table spip_territoires_extras (par exemple, le code INSEE en France).
*
* @param array $item Item d'un dataset source
* @param array $feed Configuration du feed
*
* @return array Item mis à jour
*/
function territoires_stats_item_completer(array $item, array $feed) : array {
static $type_id = null;
static $type = null;
static $pays = null;
static $codes_to_iso = [];
// Détermination du tag type_id qui indique quel est le code utilisé pour identifier les territoires et des autres
// information sur les territoires
if (null === $type_id) {
$type_id = $feed['tags']['type_id'] ?? '';
}
if (null === $type) {
$type = $feed['tags']['type'] ?? '';
}
if (null === $pays) {
$pays = $feed['tags']['pays'] ?? '';
}
if (
$type_id
and $type
) {
if ($type_id !== 'iso_territoire') {
// Si le code utilisé n'est pas le code primaire du territoire, on cherche celui-ci, sinon on renvoie l'item tel que.
if (!$codes_to_iso) {
// On recherche la liste des correspondances du code alternatif vers le code iso en une seule fois
// dans le même hit
// Quelque soit la demande, on récupère toutes les informations du territoire.
$select = ['iso_territoire', 'valeur'];
$where = [
'type_extra=' . sql_quote('code'),
'extra=' . sql_quote($type_id),
'type=' . sql_quote($type),
];
if ($pays) {
$where[] = 'iso_pays=' . sql_quote($pays);
}
$extras = sql_allfetsel($select, 'spip_territoires_extras', $where);
if ($extras) {
$codes_to_iso = array_column($extras, 'iso_territoire', 'valeur');
}
}
// On extrait le code utilisé pour trouver son id primaire : si il n'existe pas on rejette l'item
$code = $item['reg_code'][0] ?? '';
if (
$code
and isset($codes_to_iso[$code])
) {
$item['reg_code'][0] = $codes_to_iso[$code];
} else {
// Le code primaire est introuvable, on ne retient pas cet item
$item = [];
}
}
} else {
// Le tag type_id est absent, c'est une erreur du feed on ne retient aucun item de la source
$item = [];
}
return $item;
}
<div class="formulaire_spip formulaire_editer formulaire_#FORM">
<h3 class="titrem"><:territoires_stats:titre_creer_feed:></h3>
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<fieldset>
<legend><:territoires_stats:legende_feed_identite:></legend>
<div class="editer-groupe">
[(#SAISIE{input, feed_id,
label=<:territoires_stats:label_feed_id:>,
explication=<:territoires_stats:explication_feed_id:>,
obligatoire=oui,
maxlength=255
})]
[(#SAISIE{radio, type,
explication=<:cartes_territoires:explication_type_territoire:>,
label=<:cartes_territoires:label_type_territoire:>,
data=#ENV{_types_territoire},
defaut=#ENV{_type_territoire_defaut}
})]
<BOUCLE_pays_type(DATA) {source table, #ENV{_pays}}>
<div id="pays_#CLE" class="editer-pays">
[(#SAISIE{radio_flex, pays_#CLE,
explication=#ENV{_explication_checkbox},
label=<:cartes_territoires:label_pays_type:>,
data=#VALEUR,
conteneur_class=#ENV{_classe_conteneur},
multi_cols=#ENV{_choix_multi_col/#CLE},
extraire_multi=oui,
})]
</div>
</BOUCLE_pays_type>
</div>
</fieldset>
<p class="boutons">
<input type="submit" class="submit" value="<:info_etape_suivante:>" />
</p>
</div>
</form>
</div>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function() {
// Liste des types associés à un pays
const types_pays = ['subdivision', 'infrasubdivision', 'protected_area'];
// Afficher le bloc correspondant au types de carte et de territoire passé ou rien sinon.
function afficher_bloc_pays(type_carte, type_territoire) {
if (type_carte === 'carte') {
jQuery("div.editer-pays").hide();
} else {
if (types_pays.includes(type_territoire)) {
for (let t of types_pays) {
let id = 'div#pays_' + t;
if (t === type_territoire) {
jQuery(id).show();
} else {
jQuery(id).hide();
}
}
} else {
jQuery("div.editer-pays").hide();
}
}
}
afficher_bloc_pays(
jQuery("input[name='type_carte']:checked").val(),
jQuery("input[name='type']:checked").val()
);
jQuery("input[name='type_carte']").change(function() {
afficher_bloc_pays(
jQuery("input[name='type_carte']:checked").val(),
jQuery("input[name='type']:checked").val()
);
jQuery(this).blur();
});
jQuery("input[name='type']").change(function() {
afficher_bloc_pays(
jQuery("input[name='type_carte']:checked").val(),
jQuery("input[name='type']:checked").val()
);
jQuery(this).blur();
});
});
//]]>
</script>
<?php
/**
* Gestion du formulaire (assistant) de création d'un feed de données statistiques pour des territoires.
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Chargement des données :.
*
* @return array Tableau des données à charger par le formulaire.
*/
function formulaires_creer_feed_territoires_charger() : array {
// Initialisation des paramètres d'affichage
// -- Liste des types de territoire.
include_spip('inc/config');
$types_territoire = lire_config('territoires/types');
foreach ($types_territoire as $_type) {
$valeurs['_types_territoire'][$_type] = spip_ucfirst(_T("territoire:type_{$_type}"));
}
$valeurs['_type_territoire_defaut'] = 'country';
// -- Détermination des pays disponibles pour les types subdivision, infrasubdivision et protected_area
// et structuration des colonnes du choix radio.
$select = ['t1.iso_pays', 't2.nom_usage'];
$from = ['spip_territoires AS t1', 'spip_territoires AS t2'];
$where = ['t2.iso_territoire=t1.iso_pays'];
foreach ($types_territoire as $_type) {
if (lire_config("territoires/{$_type}/populated_by_country", false)) {
$where[1] = 't1.type=' . sql_quote($_type);
$pays = sql_allfetsel($select, $from, $where, 't1.iso_pays');
$valeurs['_pays'][$_type] = array_column($pays, 'nom_usage', 'iso_pays');
$valeurs['_choix_multi_col'][$_type] = 1 + intdiv(count($valeurs['_pays'][$_type]), 10);
if ($valeurs['_choix_multi_col'][$_type] > 3) {
$valeurs['_choix_multi_col'][$_type] = 3;
}
}
}
return $valeurs;
}
/**
* Vérification du formulaire :.
*
* @return array Message d'erreur si aucun pays choisi alors que la configuration du type de teritoire l'oblige.
* Sinon, chargement des champs utiles à l'étape 2 :
*/
function formulaires_creer_feed_territoires_verifier() : array {
// Initialisation des erreurs de vérification.
$erreurs = [];
return $erreurs;
}
/**
* Exécution du formulaire : .
*
* @return array Tableau retourné par le formulaire contenant toujours un message de bonne exécution ou
* d'erreur. L'indicateur editable est toujours à vrai.
*/
function formulaires_creer_feed_territoires_traiter() : array {
// Initialisation du retour de la fonction
$retour = [];
// Récupération des paramètres de base de la carte et début de consolidation des champs de l'objet carte
return $retour;
}
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_carte}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form method="post" action="#ENV{action}"><div>
#ACTION_FORMULAIRE
<input type="hidden" name="id_carte" value="#ENV{id_carte}" />
<div class="editer-groupe">
[(#SAISIE{input, titre,
label=<:carte_territoires:champ_titre_label:>
})]
[(#SAISIE{textarea, descriptif,
label=<:carte_territoires:champ_descriptif_label:>,
rows=5,
class=inserer_barre_edition
})]
[(#ENV{type_carte}|=={carte}|non)
[(#SAISIE{checkbox_flex, exclusions,
explication=<:cartes_territoires:explication_etape_2_complement:>,
data=#ENV{_exclusions},
defaut=#ENV{_exclusions_defaut},
extraire_multi=oui,
conteneur_class=pleine_largeur,
})]
]
</div>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer|attribut_html:/>" /></p>
</div></form>
]
</div>
<?php
/**
* Gestion du formulaire de d'édition de carte_territoires.
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
include_spip('inc/editer');
/**
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité.
*
* @param int|string $id_carte Identifiant du carte_territoires. 'new' pour un nouveau carte_territoires.
* @param string $retour URL de redirection après le traitement
* @param int $lier_trad Identifiant éventuel d'un carte_territoires source d'une traduction
* @param string $config_fonc Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row Valeurs de la ligne SQL de l'objet carte_territoires, si connu
* @param string $hidden Contenu HTML ajouté en même temps que les champs cachés du formulaire.
*
* @return string Hash du formulaire
*/
function formulaires_editer_carte_territoires_identifier_dist($id_carte = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
return serialize([(int) $id_carte]);
}
/**
* Chargement du formulaire d'édition de carte_territoires.
*
* Déclarer les champs postés et y intégrer les valeurs par défaut
*
* @uses formulaires_editer_objet_charger()
*
* @param int|string $id_carte Identifiant du carte_territoires. 'new' pour un nouveau carte_territoires.
* @param string $retour URL de redirection après le traitement
* @param int $lier_trad Identifiant éventuel d'un carte_territoires source d'une traduction
* @param string $config_fonc Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row Valeurs de la ligne SQL de l'objet carte_territoires, si connu
* @param string $hidden Contenu HTML ajouté en même temps que les champs cachés du formulaire.
*
* @return array Environnement du formulaire
*/
function formulaires_editer_carte_territoires_charger_dist($id_carte = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
// Charger l'objet Carte de territoires de façon standard
$valeurs = formulaires_editer_objet_charger('carte_territoires', $id_carte, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
// Rajouter la liste des territoires et des exclusions si la carte est de type 'territoire'
if (
$valeurs
and !empty($valeurs['type_carte'])
and ($valeurs['type_carte'] === 'territoire')
) {
// -- liste des territoires inclus
include_spip('inc/carte_territoires');
$territoires_inclus = carte_territoires_detourer($valeurs['id_carte'], 'iso_territoire');
// -- liste des territoires exclus si il y en a
$parametres = json_decode($valeurs['parametres'], true);
$territoires_exclus = $parametres['exclusions'] ?? [];
// -- Construire la liste de tous les territoires avec leur nom
$territoires = array_merge($territoires_inclus, $territoires_exclus);
$territoires = sql_allfetsel('iso_territoire, nom_usage', 'spip_territoires', sql_in('iso_territoire', $territoires), '');
$territoires = array_column($territoires, 'nom_usage', 'iso_territoire');
asort($territoires);
$valeurs['_exclusions'] = $territoires;
$valeurs['_exclusions_defaut'] = $territoires_exclus;
}
return $valeurs;
}
/**
* Vérifications du formulaire d'édition de carte_territoires.
*
* Vérifier les champs postés et signaler d'éventuelles erreurs
*
* @uses formulaires_editer_objet_verifier()
*
* @param int|string $id_carte Identifiant du carte_territoires. 'new' pour un nouveau carte_territoires.
* @param string $retour URL de redirection après le traitement
* @param int $lier_trad Identifiant éventuel d'un carte_territoires source d'une traduction
* @param string $config_fonc Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row Valeurs de la ligne SQL de l'objet carte_territoires, si connu
* @param string $hidden Contenu HTML ajouté en même temps que les champs cachés du formulaire.
*
* @return array Tableau des erreurs
*/
function formulaires_editer_carte_territoires_verifier_dist($id_carte = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
return formulaires_editer_objet_verifier('carte_territoires', $id_carte);
}
/**
* Traitement du formulaire d'édition de carte_territoires.
*
* Traiter les champs postés
*
* @uses formulaires_editer_objet_traiter()
*
* @param int|string $id_carte Identifiant du carte_territoires. 'new' pour un nouveau carte_territoires.
* @param string $retour URL de redirection après le traitement
* @param int $lier_trad Identifiant éventuel d'un carte_territoires source d'une traduction
* @param string $config_fonc Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row Valeurs de la ligne SQL de l'objet carte_territoires, si connu
* @param string $hidden Contenu HTML ajouté en même temps que les champs cachés du formulaire.
*
* @return array Retours des traitements
*/
function formulaires_editer_carte_territoires_traiter_dist($id_carte = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
return formulaires_editer_objet_traiter('carte_territoires', $id_carte, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
}
......@@ -5,7 +5,23 @@ if (!defined('_ECRIRE_INC_VERSION')) {
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B
'bouton_recharger' => 'Recharger la configuration des jeux de données',
// I
'icone_creer_feed' => 'Créer un jeu de données',
'info_0_feed' => 'Aucun jeu de données',
'info_1_feed' => '1 jeu de données',
'info_feed_aucun' => 'Utilisez les boutons pour créer des jeux de données',
'info_nb_feed' => '@nb@ jeux de données',
// L
'label_feed_category_territory_data' => 'Données statistiques sur les territoires',
// M
'menu_peupler' => 'Ajouter des jeux de données',
// T
'titre_page_peupler' => 'Gestion des jeux de données sur les territoires',
'titre_liste_extras_stat' => 'Données statistiques',
);
......@@ -14,7 +14,9 @@
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL</licence>
<pipeline nom="declarer_tables_auxiliaires" inclure="base/territoires_stats.php" />
<pipeline nom="affiche_milieu" inclure="territoires_stats_pipelines.php" />
<pipeline nom="post_depeupler_territoire" inclure="territoires_stats_pipelines.php" />
<necessite nom="ezmashup" compatibilite="[1.0.0;]" />
<necessite nom="ezmashup" compatibilite="[1.0.2;]" />
<necessite nom="territoires" compatibilite="[1.5.6;]" />
</paquet>
[(#AUTORISER{creer, feedterritoires}|sinon_interdire_acces)]
<h1 class="grostitre"><:territoires_stats:titre_page_creer:></h1>
[<div class="noajax">
(#FORMULAIRE_CREER_FEED_TERRITOIRES)
</div>]
[(#AUTORISER{voir, _feeds}|sinon_interdire_acces)]
#SET{categorie, territory_data}
<h1 class="grostitre">
<:territoires_stats:titre_page_peupler:>
</h1>
[(#AUTORISER{creer, feed, '', #NULL, #ARRAY{plugin, territoires_stats}})
[(#URL_ECRIRE{territoires_feed_creer}|icone_verticale{<:territoires_stats:icone_creer_feed:/>,territoires_feed,new,right})]
<div class="clearfix"></div>
]
[(#REM) <!-- Affichage du formulaire d'admin des feeds filtré sur la catégorie des statistiques des territoires --> ]
[<div class="ajax noscroll">
(#FORMULAIRE_ADMIN_FEEDS{territoires_stats, #GET{categorie}, #ENV{feed_id}, territoires_stats})
</div>]
[(#AUTORISER{creer, feed, '', #NULL, #ARRAY{plugin, territoires_stats}})
[(#URL_ECRIRE{territoires_feed_creer}|icone_verticale{<:territoires_stats:icone_creer_feed:/>,territoires_feed,new,right})]
]
[(#REM) <!-- Menu des onglets --> ]
<INCLURE{fond=prive/squelettes/inclure/inc-navigation_territoires,
env} />
[(#REM) <!-- Bouton de rechargement des feeds dans un bloc de raccourcis. --> ]
#BOITE_OUVRIR{'','raccourcis'}
[(#REM) <!-- Inutile d'utiliser l'autorisation car elle est déjà incluse dans le contenu de la page -->]
[(#URL_ACTION_AUTEUR{recharger_feeds, territoires_stats, #SELF}
|icone_horizontale{<:territoires_stats:bouton_recharger:>, territoires_feed-24, '', #LANG_LEFT})]
#BOITE_FERMER
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="64" height="64" viewBox="0, 0, 64, 64">
<g id="Calque_1">
<path d="M34.111,2.037 L39.351,7.277 L24.381,22.247 L16.971,14.836 L7.24,24.568 L2,19.327 L16.971,4.357 L24.381,11.768 L34.111,2.037 z" fill="#666666"/>
<path d="M1.375,20.806 L10.562,20.806 L10.562,33.25 L1.375,33.25 L1.375,20.806 z M12.094,5.25 L21.281,5.25 L21.281,33.25 L12.094,33.25 L12.094,5.25 z M22.812,13.028 L32,13.028 L32,33.25 L22.812,33.25 L22.812,13.028 z" fill="#000000" id="bar-chart-2-fill" display="none"/>
<path d="M28.5,36.3 L39.2,18.5 L62,61.4 L2,61.4 L22,24.3 L28.5,36.3 z M31.7,42.1 L39.1,55.7 L52.5,55.7 L38.9,30.2 L31.7,42.1 z M11.6,55.7 L32.5,55.7 L22,36.3 L11.6,55.7 z" fill="#2187E1"/>
</g>
</svg>
<?php
/**
* Utilisations de pipelines par Territoires.
*
* @package SPIP\TERRITOIRES\PIPELINES
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Ajout de contenu sur certaines pages, notamment des formulaires de liaisons entre objets.
* Le plugin ajoute les éventuels données statistiques complémentaires.
*
* @pipeline affiche_milieu
*
* @param array $flux Données du pipeline
*
* @return array Données du pipeline modifiées pour refléter le traitement.
*/
function territoires_stats_affiche_milieu(array $flux) : array {
if (isset($flux['args']['exec'])) {
$texte = '';
$exec = trouver_objet_exec($flux['args']['exec']);
if (
$exec
and ($exec['edition'] !== true) // page visu
and ($id_table = $exec['id_table_objet'])
and ($objet = $exec['type'])
and isset($flux['args'][$id_table])
and ($id_objet = (int) ($flux['args'][$id_table]))
) {
// Insertion des extras de type 'stat' chargés pour ce type de territoire
include_spip('inc/config');
if ($objet === 'territoire') {
// -- acquisition de l'objet
include_spip('action/editer_objet');
$territoire = objet_lire('territoire', $id_objet);
// -- Attention pour le type pays il ne faut pas passer le champ iso_pays à l'unité de peuplement
$pays = lire_config("territoires/{$territoire['type']}/populated_by_country", false)
? $territoire['iso_pays']
: '';
// -- tester si les extras 'info' sont chargées pour le type de territoire
include_spip('inc/territoires_unite_peuplement');
$extra_peuple = unite_peuplement_extra_est_charge($territoire['type'], $pays, 'stat');
if ($extra_peuple) {
$texte .= recuperer_fond(
'prive/objets/liste/territoires_extras',
[
'iso_territoire' => $territoire['iso_territoire'],
'type_extra' => 'stat',
'titre' => _T('territoires_stats:titre_liste_extras_stat')
]
);
}
}
// Insertion dans la fiche objet.
if ($texte) {
if ($p = strpos($flux['data'], '<!--affiche_extra-->')) {
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
} elseif ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
} else {
$flux['data'] .= $texte;
}
}
}
}
return $flux;
}
/**
* Complément à la fonction de dépeuplement des territoires.
*
* Le plugin supprime les feeds associées à l'unité de peuplement concernée.
*
* @pipeline post_depeupler_territoire
*
* @param array $flux Données du pipeline
*
* @return array Données du pipeline telles que reçues.
*/
function territoires_stats_post_depeupler_territoire(array $flux) : array {
// Vider les extras de type 'stat' pour l'unité de traitement concernée
if (
!empty($flux['args']['type'])
and isset($flux['args']['pays'])
) {
$type = $flux['args']['type'];
$pays = $flux['args']['pays'];
// On vérifie que des données statistiques exitent pour l'unite de peuplement
include_spip('inc/territoires_unite_peuplement');
$extra_peuple = unite_peuplement_extra_est_charge($type, $pays, 'stat');
if ($extra_peuple) {
// Identification de la meta et de la variable de consigne
include_spip('inc/unite_peuplement');
$id_consigne = unite_peuplement_consigne_identifier('territoires', $type, $pays);
if (
include_spip('inc/config')
and ($consigne = lire_config($id_consigne, []))
) {
// On récupère la liste des feeds constitutifs des jeux de données
$feeds = $consigne['sta'];
// On supprime les extras de ces jeux de données
$where = sql_in('feed_id', $feeds);
sql_delete('spip_territoires_extras', $where);
}
}
}
return $flux;
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter