fusion_paquet.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Fichier permettant de calculer les descriptions
  4. * d'un paquet.xml contenant plusieurs balises <spip>
  5. *
  6. * @plugin SVP pour SPIP
  7. * @license GPL
  8. * @package SPIP\SVP\Plugins
  9. **/
  10. if (!defined('_ECRIRE_INC_VERSION')) return;
  11. include_spip('inc/plugin');
  12. include_spip('inc/svp_outiller');
  13. /**
  14. * Fusion des informations de chaque balise spip d'un paquet.xml en
  15. * considérant la compatibilité SPIP
  16. *
  17. * Pour les balises paquets sans balise spip cette fonction permet de générer
  18. * une structure identique pour les balises dites techniques
  19. *
  20. * @param array $plugins
  21. * Arbre de description du paquet.xml
  22. * @return array
  23. * Fusion des éléments classé par balise, puis par compatibilité à SPIP.
  24. * L'index 0 dans la compatibilité est valable quelque soit la version de SPIP.
  25. */
  26. function plugins_fusion_paquet($plugins) {
  27. global $balises_techniques;
  28. $fusion = array();
  29. if (!$plugins)
  30. return $fusion;
  31. // On initialise les informations a retourner avec l'index 0 du tableau qui contient les donnees communes
  32. // de la balise paquet
  33. $fusion = $plugins[0];
  34. // On relit les balises paquet et spip et :
  35. // -- pour la balise paquet on reindexe les balises techniques dans un sous-tableau d'index 0
  36. // -- pour chaque balise spip on merge les informations additionnelles avec les donnees
  37. // communes dans un sous-tableau d'index egal a l'intervalle de compatibilite
  38. foreach ($plugins as $_compatibilite => $_paquet_spip) {
  39. if ($_paquet_spip['balise'] == 'paquet') {
  40. // Deplacement du contenu de chaque balise technique commune si elle est non vide
  41. foreach ($balises_techniques as $_btech) {
  42. if (isset($fusion[$_btech]) and $fusion[$_btech]) {
  43. $balise = $fusion[$_btech];
  44. unset($fusion[$_btech]);
  45. $fusion[$_btech][0] = $balise;
  46. }
  47. }
  48. }
  49. else {
  50. // Balise spip
  51. // On merge les balises techniques existantes en les rangeant dans un sous tableau indexe par
  52. // la compatibilite et ce pour chaque balise
  53. foreach ($_paquet_spip as $_index => $_balise) {
  54. if ($_index AND $_index != 'balise') {
  55. $fusion[$_index][$_compatibilite] = $_balise;
  56. if (!isset($fusion[$_index][0]))
  57. $fusion[$_index][0] = array();
  58. }
  59. }
  60. }
  61. }
  62. return $fusion;
  63. }
  64. ?>