preparer_sql_paquet.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * Fichier permettant de transformer les données d'un arbre de description
  4. * originaire d'un paquet.xml dans un format compatible avec la base de données
  5. *
  6. * @plugin SVP pour SPIP
  7. * @license GPL
  8. * @package SPIP\SVP\Plugins
  9. **/
  10. if (!defined('_ECRIRE_INC_VERSION')) return;
  11. /**
  12. * Pour une description de plugin donnée (issue de la dtd de paquet.xml),
  13. * prépare les données à installer en bdd
  14. *
  15. * Les données sont parfois sérialisées, parfois compilées
  16. * pour tenir compte des spécificités de cette DTD et du stockage en bdd.
  17. *
  18. * @param array $plugin
  19. * Description de plugin
  20. * @return array
  21. * Couples clés => valeurs de description du paquet
  22. **/
  23. function plugins_preparer_sql_paquet($plugin)
  24. {
  25. include_spip('inc/svp_outiller');
  26. $champs = array();
  27. if (!$plugin)
  28. return $champs;
  29. // On initialise les champs ne necessitant aucune transformation
  30. foreach (array(
  31. 'categorie' => 'categorie',
  32. 'etat' => 'etat',
  33. 'version_base' => 'schema',
  34. 'logo' => 'logo',
  35. 'lien_doc' => 'documentation',
  36. 'lien_demo' => 'demonstration',
  37. 'lien_dev' => 'developpement'
  38. ) as $cle_champ => $cle_plugin)
  39. {
  40. $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
  41. ? $plugin[$cle_plugin]
  42. : '';
  43. }
  44. // on normalise la version 1.3.12 => 001.003.012
  45. $champs['version'] = (isset($plugin['version']) AND $plugin['version'])
  46. ? normaliser_version($plugin['version'])
  47. : '';
  48. // On passe le prefixe en lettres majuscules comme ce qui est fait dans SPIP
  49. // Ainsi les valeurs dans la table spip_plugins coincideront avec celles de la meta plugin
  50. $champs['prefixe'] = strtoupper($plugin['prefix']);
  51. // Indicateurs d'etat numerique (pour simplifier la recherche des maj de STP)
  52. static $num = array('stable'=>4, 'test'=>3, 'dev'=>2, 'experimental'=>1);
  53. $champs['etatnum'] = isset($num[$plugin['etat']]) ? $num[$plugin['etat']] : 0;
  54. // On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
  55. foreach (array(
  56. 'nom' => 'nom',
  57. 'description' => 'description',
  58. 'slogan' => 'slogan'
  59. ) as $cle_champ => $cle_plugin)
  60. {
  61. $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
  62. ? entite2charset($plugin[$cle_plugin])
  63. : '';
  64. }
  65. // Cles necessitant d'etre serialisees
  66. // Tags : liste de mots-cles
  67. // Traitement des auteurs, credits, licences et copyright
  68. foreach (array(
  69. 'tags' => 'tags',
  70. 'auteur' => 'auteur',
  71. 'credit' => 'credit',
  72. 'licence' => 'licence',
  73. 'copyright' => 'copyright',
  74. ) as $cle_champ => $cle_plugin)
  75. {
  76. $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
  77. ? serialize($plugin[$cle_plugin])
  78. : '';
  79. }
  80. // Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees
  81. $champs['compatibilite_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
  82. ? $plugin['compatibilite']
  83. : '';
  84. $champs['branches_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
  85. ? compiler_branches_spip($plugin['compatibilite'])
  86. : '';
  87. // Construction du tableau des dependances necessite, lib et utilise
  88. $dependances['necessite'] = $plugin['necessite'];
  89. $dependances['librairie'] = $plugin['lib'];
  90. $dependances['utilise'] = $plugin['utilise'];
  91. $champs['dependances'] = serialize($dependances);
  92. return $champs;
  93. }
  94. ?>