File "fusion_paquet.php"
Full path: /home/argothem/www/v4_old/plugins-dist/svp/plugins/fusion_paquet.php
File size: 2.29 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Fichier permettant de calculer les descriptions
* d'un paquet.xml contenant plusieurs balises <spip>
*
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/plugin');
include_spip('inc/svp_outiller');
/**
* Fusion des informations de chaque balise spip d'un paquet.xml en
* considérant la compatibilité SPIP
*
* Pour les balises paquets sans balise spip cette fonction permet de générer
* une structure identique pour les balises dites techniques
*
* @param array $plugins
* Arbre de description du paquet.xml
* @return array
* Fusion des éléments classé par balise, puis par compatibilité à SPIP.
* L'index 0 dans la compatibilité est valable quelque soit la version de SPIP.
*/
function plugins_fusion_paquet($plugins) {
global $balises_techniques;
$fusion = [];
// mefions nous des $plugins['erreur'] (mauvais xml du paquet.xml)
if (!$plugins or empty($plugins[0])) {
return $fusion;
}
// On initialise les informations a retourner avec l'index 0 du tableau qui contient les donnees communes
// de la balise paquet
$fusion = $plugins[0];
// On relit les balises paquet et spip et :
// -- pour la balise paquet on reindexe les balises techniques dans un sous-tableau d'index 0
// -- pour chaque balise spip on merge les informations additionnelles avec les donnees
// communes dans un sous-tableau d'index egal a l'intervalle de compatibilite
foreach ($plugins as $_compatibilite => $_paquet_spip) {
if ($_paquet_spip['balise'] == 'paquet') {
// Deplacement du contenu de chaque balise technique commune si elle est non vide
foreach ($balises_techniques as $_btech) {
if (isset($fusion[$_btech]) and $fusion[$_btech]) {
$balise = $fusion[$_btech];
unset($fusion[$_btech]);
$fusion[$_btech][0] = $balise;
}
}
} else {
// Balise spip
// On merge les balises techniques existantes en les rangeant dans un sous tableau indexe par
// la compatibilite et ce pour chaque balise
foreach ($_paquet_spip as $_index => $_balise) {
if ($_index and $_index != 'balise') {
$fusion[$_index][$_compatibilite] = $_balise;
if (!isset($fusion[$_index][0])) {
$fusion[$_index][0] = [];
}
}
}
}
}
return $fusion;
}