source: spip-zone/_core_/plugins/svp/plugins/fusion_paquet.php

Last change on this file was 111771, checked in by marcimat@…, 17 months ago

Éviter des notices si un paquet.xml est erronné dans le xml de la liste des plugins.

  • Property svn:eol-style set to native
File size: 2.3 KB
RevLine 
[54035]1<?php
2
[64931]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
[64981]9 * @package SPIP\SVP\Plugins
[93627]10 **/
[64931]11
[93627]12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
[54035]15include_spip('inc/plugin');
16include_spip('inc/svp_outiller');
17
[64931]18
19/**
20 * Fusion des informations de chaque balise spip d'un paquet.xml en
21 * considérant la compatibilité SPIP
[93627]22 *
[64931]23 * Pour les balises paquets sans balise spip cette fonction permet de générer
24 * une structure identique pour les balises dites techniques
[93627]25 *
[64931]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 */
[54035]32function plugins_fusion_paquet($plugins) {
33        global $balises_techniques;
34
35        $fusion = array();
[111771]36        // mefions nous des $plugins['erreur'] (mauvais xml du paquet.xml)
37        if (!$plugins or empty($plugins[0])) {
[54035]38                return $fusion;
[93627]39        }
[54035]40
41        // On initialise les informations a retourner avec l'index 0 du tableau qui contient les donnees communes
42        // de la balise paquet
43        $fusion = $plugins[0];
44
45        // On relit les balises paquet et spip et :
46        // -- pour la balise paquet on reindexe les balises techniques dans un sous-tableau d'index 0
47        // -- pour chaque balise spip on merge les informations additionnelles avec les donnees
48        // communes dans un sous-tableau d'index egal a l'intervalle de compatibilite
49        foreach ($plugins as $_compatibilite => $_paquet_spip) {
50                if ($_paquet_spip['balise'] == 'paquet') {
51                        // Deplacement du contenu de chaque balise technique commune si elle est non vide
52                        foreach ($balises_techniques as $_btech) {
[62466]53                                if (isset($fusion[$_btech]) and $fusion[$_btech]) {
[54035]54                                        $balise = $fusion[$_btech];
55                                        unset($fusion[$_btech]);
56                                        $fusion[$_btech][0] = $balise;
57                                }
58                        }
[93627]59                } else {
[54035]60                        // Balise spip
[64931]61                        // On merge les balises techniques existantes en les rangeant dans un sous tableau indexe par
[54035]62                        // la compatibilite et ce pour chaque balise
63                        foreach ($_paquet_spip as $_index => $_balise) {
[93661]64                                if ($_index and $_index != 'balise') {
[54035]65                                        $fusion[$_index][$_compatibilite] = $_balise;
[93627]66                                        if (!isset($fusion[$_index][0])) {
[54035]67                                                $fusion[$_index][0] = array();
[93627]68                                        }
[54035]69                                }
70                        }
71                }
72        }
73
74        return $fusion;
75}
Note: See TracBrowser for help on using the repository browser.