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