[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / svp / plugins / fusion_paquet.php
1 <?php
2
3 /**
4 * Fichier permettant de calculer les descriptions
5 * d'un paquet.xml contenant plusieurs balises <spip>
6 *
7 * @plugin SVP pour SPIP
8 * @license GPL
9 * @package SPIP\SVP\Plugins
10 **/
11
12 if (!defined('_ECRIRE_INC_VERSION')) return;
13 include_spip('inc/plugin');
14 include_spip('inc/svp_outiller');
15
16
17 /**
18 * Fusion des informations de chaque balise spip d'un paquet.xml en
19 * considérant la compatibilité SPIP
20 *
21 * Pour les balises paquets sans balise spip cette fonction permet de générer
22 * une structure identique pour les balises dites techniques
23 *
24 * @param array $plugins
25 * Arbre de description du paquet.xml
26 * @return array
27 * Fusion des éléments classé par balise, puis par compatibilité à SPIP.
28 * L'index 0 dans la compatibilité est valable quelque soit la version de SPIP.
29 */
30 function plugins_fusion_paquet($plugins) {
31 global $balises_techniques;
32
33 $fusion = array();
34 if (!$plugins)
35 return $fusion;
36
37 // On initialise les informations a retourner avec l'index 0 du tableau qui contient les donnees communes
38 // de la balise paquet
39 $fusion = $plugins[0];
40
41 // On relit les balises paquet et spip et :
42 // -- pour la balise paquet on reindexe les balises techniques dans un sous-tableau d'index 0
43 // -- pour chaque balise spip on merge les informations additionnelles avec les donnees
44 // communes dans un sous-tableau d'index egal a l'intervalle de compatibilite
45 foreach ($plugins as $_compatibilite => $_paquet_spip) {
46 if ($_paquet_spip['balise'] == 'paquet') {
47 // Deplacement du contenu de chaque balise technique commune si elle est non vide
48 foreach ($balises_techniques as $_btech) {
49 if (isset($fusion[$_btech]) and $fusion[$_btech]) {
50 $balise = $fusion[$_btech];
51 unset($fusion[$_btech]);
52 $fusion[$_btech][0] = $balise;
53 }
54 }
55 }
56 else {
57 // Balise spip
58 // On merge les balises techniques existantes en les rangeant dans un sous tableau indexe par
59 // la compatibilite et ce pour chaque balise
60 foreach ($_paquet_spip as $_index => $_balise) {
61 if ($_index AND $_index != 'balise') {
62 $fusion[$_index][$_compatibilite] = $_balise;
63 if (!isset($fusion[$_index][0]))
64 $fusion[$_index][0] = array();
65 }
66 }
67 }
68 }
69
70 return $fusion;
71 }
72
73 ?>