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

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

Mise au point du fichier de tests du dépôt et pétouilles

  • Property svn:eol-style set to native
File size: 2.4 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
8function plugins_fusion_plugin($plugins) {
9        $fusion = array();
10        if (!$plugins)
11                return $fusion;
12
13        // On initialise les informations a retourner avec le bloc a priori le plus recent determine par la compatibilite SPIP :
14        // On selectionne le bloc dont la borne min de compatibilite SPIP est la plus elevee
15        $cle_min_max = -1;
16        $borne_min_max = _SVP_VERSION_SPIP_MIN;
17        foreach ($plugins as $_cle => $_plugin) {
18                if (!$_plugin['compatibilite'])
19                        $borne_min = _SVP_VERSION_SPIP_MIN;
20                $bornes_spip = extraire_bornes($_plugin['compatibilite']);
21                $borne_min = ($bornes_spip['min']['valeur']) ? $bornes_spip['min']['valeur'] : _SVP_VERSION_SPIP_MIN;
22                if (spip_version_compare($borne_min_max, $borne_min, '<=')) {
23                        $cle_min_max = $_cle;
24                        $borne_min_max = $borne_min;
25                }
26        }
27        $fusion = $plugins[$cle_min_max];
28
29        // On relit les autres blocs que celui venant d'etre selectionne et on fusionne les informations necessaires
30        // les traitements effectues sont les suivants :
31        // -- nom, prefix, documentation, version, etat, version_base, description : *rien*, on conserve ces informations en l'etat
32        // -- options, fonctions, install, path, pipeline, bouton, onglet : *rien*, meme si certaines pourraient etre fusionnees ces infos ne sont pas stockees
33        // -- auteur, licence : *rien*, l'heuristique pour fusionner ces infos est trop compliquee aujourdhui car c'est du texte libre
34        // -- categorie, logo : si la valeur du bloc selectionne est vide on essaye d'en trouver une non vide dans les autres blocs
35        // -- compatible : on constuit l'intervalle global de compatibilite SPIP
36        // -- necessite, utilise, lib : on construit le tableau par intervalle de compatibilite SPIP
37        foreach ($plugins as $_cle => $_plugin) {
38                if ($_cle <> $cle_min_max) {
39                        // categorie et icon
40                        if (!$fusion['categorie'] AND $_plugin['categorie']) 
41                                $fusion['categorie'] = $_plugin['categorie'];
42                        if (!$fusion['logo'] AND $_plugin['logo']) 
43                                $fusion['logo'] = $_plugin['logo'];
44                        // compatible
45                        $fusion['compatibilite'] = fusionner_intervalles($fusion['compatibilite'], $_plugin['compatibilite']);
46                        // necessite, utilise, lib : on indexe chaque liste de dependances par l'intervalle de compatibilite
47                        // sans regrouper les doublons pour l'instant
48                }
49        }
50
51        return $fusion;
52}
53
54?>
Note: See TracBrowser for help on using the repository browser.