X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Fsvp%2Fplugins%2Ffusion_plugin.php;h=93fcdfba39e9ed41a44232ca32664cce1ae6357b;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=79a2117f31f2c4066918bb264d622bc42e6392e6;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins-dist/svp/plugins/fusion_plugin.php b/www/plugins-dist/svp/plugins/fusion_plugin.php index 79a2117f..93fcdfba 100644 --- a/www/plugins-dist/svp/plugins/fusion_plugin.php +++ b/www/plugins-dist/svp/plugins/fusion_plugin.php @@ -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; } - -?>