source: spip-zone/_plugins_/svp/plugins/fusion_plugin.php @ 54036

Last change on this file since 54036 was 54036, checked in by eric@…, 8 years ago

Mise au point de la structure retournée dans le cas d'un balise plugin unique.
Il ne reste plus que le cas des balises plugin multiples.

  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4include_spip('inc/plugin');
5include_spip('inc/svp_outiller');
6
7// Fusion des informations de chaque balise plugin en considerant la compatibilite SPIP
8// Pour les balise plugin unique cette fonction permet de generer une structure
9// identique pour les balises dites techniques
10function plugins_fusion_plugin($plugins) {
11        global $balises_techniques;
12
13        $fusion = array();
14        if (!$plugins)
15                return $fusion;
16
17        if (count($plugins) == 1) {
18                // Balise plugin unique : on ne traite que les balises techniques
19                $fusion = $plugins[0];
20                foreach ($balises_techniques as $_btech) {
21                        if ($fusion[$_btech]) {
22                                $balise = $fusion[$_btech];
23                                unset($fusion[$_btech]);
24                                $fusion[$_btech][0] = $balise;
25                        }
26                }
27        }
28        else {
29                // On initialise les informations a retourner avec le bloc a priori le plus recent determine par la compatibilite SPIP :
30                // On selectionne le bloc dont la borne min de compatibilite SPIP est la plus elevee
31                $cle_min_max = -1;
32                $borne_min_max = _SVP_VERSION_SPIP_MIN;
33                foreach ($plugins as $_cle => $_plugin) {
34                        if (!$_plugin['compatibilite'])
35                                $borne_min = _SVP_VERSION_SPIP_MIN;
36                        $bornes_spip = extraire_bornes($_plugin['compatibilite']);
37                        $borne_min = ($bornes_spip['min']['valeur']) ? $bornes_spip['min']['valeur'] : _SVP_VERSION_SPIP_MIN;
38                        if (spip_version_compare($borne_min_max, $borne_min, '<=')) {
39                                $cle_min_max = $_cle;
40                                $borne_min_max = $borne_min;
41                        }
42                }
43                $fusion = $plugins[$cle_min_max];
44
45                // On relit les autres blocs que celui venant d'etre selectionne et on fusionne les informations necessaires
46                // les traitements effectues sont les suivants :
47                // -- nom, prefix, documentation, version, etat, version_base, description : *rien*, on conserve ces informations en l'etat
48                // -- options, fonctions, install, path, pipeline, bouton, onglet : *rien*, meme si certaines pourraient etre fusionnees ces infos ne sont pas stockees
49                // -- auteur, licence : *rien*, l'heuristique pour fusionner ces infos est trop compliquee aujourdhui car c'est du texte libre
50                // -- categorie, logo : si la valeur du bloc selectionne est vide on essaye d'en trouver une non vide dans les autres blocs
51                // -- compatible : on constuit l'intervalle global de compatibilite SPIP
52                // -- necessite, utilise, lib : on construit le tableau par intervalle de compatibilite SPIP
53                foreach ($plugins as $_cle => $_plugin) {
54                        if ($_cle <> $cle_min_max) {
55                                // categorie et icon
56                                if (!$fusion['categorie'] AND $_plugin['categorie'])
57                                        $fusion['categorie'] = $_plugin['categorie'];
58                                if (!$fusion['logo'] AND $_plugin['logo'])
59                                        $fusion['logo'] = $_plugin['logo'];
60                                // compatible
61                                $fusion['compatibilite'] = fusionner_intervalles($fusion['compatibilite'], $_plugin['compatibilite']);
62                                // necessite, utilise, lib : on indexe chaque liste de dependances par l'intervalle de compatibilite
63                                // sans regrouper les doublons pour l'instant
64                        }
65                }
66        }
67       
68        return $fusion;
69}
70
71?>
Note: See TracBrowser for help on using the repository browser.