[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / svp / plugins / fusion_plugin.php
index 79a2117..93fcdfb 100644 (file)
@@ -7,22 +7,28 @@
  * @plugin SVP pour SPIP
  * @license GPL
  * @package SPIP\SVP\Plugins
-**/
+ **/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 include_spip('inc/plugin');
 include_spip('inc/svp_outiller');
 
 /**
  * Fusion des informations de chaque balise plugin d'un plugin.xml en
  * considérant la compatibilité SPIP
- * 
+ *
  * Pour les balises plugins uniques cette fonction permet de générer une structure
  * identique pour les balises dites techniques
- * 
+ *
  * On limite le traitement a deux balises plugins maximum,
  * ce qui est le cas de tous les plugin.xml actuellement connus
  *
+ * @uses  _SVP_VERSION_SPIP_MIN
+ * @uses  extraire_bornes()
+ * @uses  fusionner_intervalles()
+ *
  * @param array $plugins
  *     Arbre des balises plugins présents dans un plugin.xml
  * @return array
@@ -33,8 +39,9 @@ function plugins_fusion_plugin($plugins) {
        global $balises_techniques;
 
        $fusion = array();
-       if (!$plugins)
+       if (!$plugins) {
                return $fusion;
+       }
 
        if (count($plugins) == 1) {
                // Balise plugin unique : on ne traite que les balises techniques
@@ -44,20 +51,19 @@ function plugins_fusion_plugin($plugins) {
                                $balise = $fusion[$_btech];
                                unset($fusion[$_btech]);
                                $fusion[$_btech][0] = $balise;
-                       }
-                       else {
+                       } else {
                                $fusion[$_btech] = array();
                        }
                }
-       }
-       else {
+       } else {
                // On initialise les informations a retourner avec le bloc a priori le plus recent determine par la compatibilite SPIP :
                // On selectionne le bloc dont la borne min de compatibilite SPIP est la plus elevee
                $cle_min_max = -1;
                $borne_min_max = _SVP_VERSION_SPIP_MIN;
                foreach ($plugins as $_cle => $_plugin) {
-                       if (!$_plugin['compatibilite'])
+                       if (!$_plugin['compatibilite']) {
                                $borne_min = _SVP_VERSION_SPIP_MIN;
+                       }
                        $bornes_spip = extraire_bornes($_plugin['compatibilite']);
                        $borne_min = ($bornes_spip['min']['valeur']) ? $bornes_spip['min']['valeur'] : _SVP_VERSION_SPIP_MIN;
                        if (spip_version_compare($borne_min_max, $borne_min, '<=')) {
@@ -75,72 +81,74 @@ function plugins_fusion_plugin($plugins) {
                // -- categorie, logo : si la valeur du bloc selectionne est vide on essaye d'en trouver une non vide dans les autres blocs
                // -- compatible : on constuit l'intervalle global de compatibilite SPIP
                // -- necessite, utilise, lib : on construit le tableau par intervalle de compatibilite SPIP
-               $cle_min_min = ($cle_min_max==0) ? 1 : 0;
-               if (!$fusion['categorie'] AND $plugins[$cle_min_min]['categorie'])
+               $cle_min_min = ($cle_min_max == 0) ? 1 : 0;
+               if (!$fusion['categorie'] and $plugins[$cle_min_min]['categorie']) {
                        $fusion['categorie'] = $plugins[$cle_min_min]['categorie'];
-               if ((!isset($fusion['logo']) OR !$fusion['logo']) AND $plugins[$cle_min_min]['logo'])
+               }
+               if ((!isset($fusion['logo']) or !$fusion['logo']) and $plugins[$cle_min_min]['logo']) {
                        $fusion['logo'] = $plugins[$cle_min_min]['logo'];
+               }
                $fusion['compatibilite'] = fusionner_intervalles($fusion['compatibilite'], $plugins[$cle_min_min]['compatibilite']);
 
                // necessite, utilise, lib, chemin, pipeline, bouton, onglet : on indexe chaque liste de dependances
                // par l'intervalle de compatibilite sans regrouper les doublons pour l'instant
                foreach ($balises_techniques as $_btech) {
-                       if (!isset($fusion[$_btech]) AND !isset($plugins[$cle_min_min][$_btech])) {
+                       if (!isset($fusion[$_btech]) and !isset($plugins[$cle_min_min][$_btech])) {
                                // Aucun des tableaux ne contient cette balise technique : on la positionne a un array vide
                                $fusion[$_btech] = array();
-                       }
-                       else if (!isset($fusion[$_btech]) OR !$fusion[$_btech]) {
-                               if ($plugins[$cle_min_min][$_btech]) {
-                                       // La balise technique est vide dans le tableau de fusion mais non vide dans la deuxieme balise plugin
-                                       // On range cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
-                                       $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']] = $plugins[$cle_min_min][$_btech];
-                                       $fusion[$_btech][0] = array();
-                               }
-                       }
-                       else if (!isset($plugins[$cle_min_min][$_btech]) OR !$plugins[$cle_min_min][$_btech]) {
-                               // La balise technique est non vide dans le tableau de fusion mais vide dans la deuxieme balise plugin
-                               // On deplace cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
-                               $balise = $fusion[$_btech];
-                               unset($fusion[$_btech]);
-                               $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']] = $balise;
-                               $fusion[$_btech][0] = array();
-                       }
-                       else {
-                               // Les deux tableaux contiennent une balise technique non vide : il faut fusionner cette balise technique !
-                               // On parcourt le premier tableau (fusion) en verifiant une egalite avec le deuxieme tableau
-                               foreach ($fusion[$_btech] as $_cle0 => $_balise0) {
-                                       $balise_commune = false;
-                                       foreach ($plugins[$cle_min_min][$_btech] as $_cle1 => $_balise1) {
-                                               if (balise_identique($_balise0, $_balise1)) {
-                                                       // On classe cette balise dans le bloc commun (index 0) et on la supprime dans les
-                                                       // 2 tableaux en cours de comparaison
-                                                       unset($fusion[$_btech][$_cle0]);
-                                                       $fusion[$_btech][0][] = $_balise1;
-                                                       unset($plugins[$cle_min_min][$_btech][$_cle1]);
-                                                       $balise_commune = true;
-                                                       break;
-                                               }
-                                       }
-                                       if (!$balise_commune) {
-                                               $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']][] = $_balise0;
-                                               unset($fusion[$_btech][$_cle0]);
+                       } else {
+                               if (!isset($fusion[$_btech]) or !$fusion[$_btech]) {
+                                       if ($plugins[$cle_min_min][$_btech]) {
+                                               // La balise technique est vide dans le tableau de fusion mais non vide dans la deuxieme balise plugin
+                                               // On range cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
+                                               $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']] = $plugins[$cle_min_min][$_btech];
+                                               $fusion[$_btech][0] = array();
                                        }
-                                       if (!isset($fusion[$_btech][0]))
+                               } else {
+                                       if (!isset($plugins[$cle_min_min][$_btech]) or !$plugins[$cle_min_min][$_btech]) {
+                                               // La balise technique est non vide dans le tableau de fusion mais vide dans la deuxieme balise plugin
+                                               // On deplace cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
+                                               $balise = $fusion[$_btech];
+                                               unset($fusion[$_btech]);
+                                               $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']] = $balise;
                                                $fusion[$_btech][0] = array();
-                               }
+                                       } else {
+                                               // Les deux tableaux contiennent une balise technique non vide : il faut fusionner cette balise technique !
+                                               // On parcourt le premier tableau (fusion) en verifiant une egalite avec le deuxieme tableau
+                                               foreach ($fusion[$_btech] as $_cle0 => $_balise0) {
+                                                       $balise_commune = false;
+                                                       foreach ($plugins[$cle_min_min][$_btech] as $_cle1 => $_balise1) {
+                                                               if (balise_identique($_balise0, $_balise1)) {
+                                                                       // On classe cette balise dans le bloc commun (index 0) et on la supprime dans les
+                                                                       // 2 tableaux en cours de comparaison
+                                                                       unset($fusion[$_btech][$_cle0]);
+                                                                       $fusion[$_btech][0][] = $_balise1;
+                                                                       unset($plugins[$cle_min_min][$_btech][$_cle1]);
+                                                                       $balise_commune = true;
+                                                                       break;
+                                                               }
+                                                       }
+                                                       if (!$balise_commune) {
+                                                               $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']][] = $_balise0;
+                                                               unset($fusion[$_btech][$_cle0]);
+                                                       }
+                                                       if (!isset($fusion[$_btech][0])) {
+                                                               $fusion[$_btech][0] = array();
+                                                       }
+                                               }
 
-                               // On traite maintenant les balises restantes du deuxieme tableau
-                               if ($plugins[$cle_min_min][$_btech]) {
-                                       foreach ($plugins[$cle_min_min][$_btech] as $_balise2) {
-                                               $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']][] = $_balise2;
+                                               // On traite maintenant les balises restantes du deuxieme tableau
+                                               if ($plugins[$cle_min_min][$_btech]) {
+                                                       foreach ($plugins[$cle_min_min][$_btech] as $_balise2) {
+                                                               $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']][] = $_balise2;
+                                                       }
+                                               }
                                        }
                                }
                        }
                }
 
        }
-       
+
        return $fusion;
 }
-
-?>