svp_administrations.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. /**
  3. * Fichier gérant l'installation et désinstallation du plugin
  4. *
  5. * @plugin SVP pour SPIP
  6. * @license GPL
  7. * @package SPIP\SVP\Installation
  8. **/
  9. include_spip('base/create');
  10. /**
  11. * Installation et mises à jour du plugin
  12. *
  13. * Crée les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets)
  14. *
  15. * @param string $nom_meta_base_version
  16. * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
  17. * @param string $version_cible
  18. * Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
  19. * @return void
  20. **/
  21. function svp_upgrade($nom_meta_base_version, $version_cible){
  22. $maj = array();
  23. $install = array('maj_tables', array('spip_depots','spip_plugins','spip_depots_plugins','spip_paquets'));
  24. $maj['create'][] = $install;
  25. $maj['0.2'][] = array('maj_tables', 'spip_paquets');
  26. $maj['0.3'][] = array('maj_tables', 'spip_paquets'); // prefixe et attente
  27. $maj['0.3'][] = array('svp_synchroniser_prefixe');
  28. include_spip('inc/svp_depoter_local');
  29. // on force le recalcul des infos des paquets locaux.
  30. $maj['0.3.1'][] = array('svp_actualiser_paquets_locaux', true);
  31. // autant mettre tout a jour pour avoir une base propre apres renommage extensions=> plugins_dist
  32. $maj['0.4.0'][] = array('svp_vider_tables', $nom_meta_base_version);
  33. $maj['0.4.0'][] = $install;
  34. include_spip('base/upgrade');
  35. maj_plugin($nom_meta_base_version, $version_cible, $maj);
  36. }
  37. /**
  38. * Désinstallation du plugin
  39. *
  40. * Supprime les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets)
  41. *
  42. * @param string $nom_meta_base_version
  43. * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
  44. * @return void
  45. **/
  46. function svp_vider_tables($nom_meta_base_version) {
  47. sql_drop_table("spip_depots");
  48. sql_drop_table("spip_plugins");
  49. sql_drop_table("spip_depots_plugins");
  50. sql_drop_table("spip_paquets");
  51. effacer_meta($nom_meta_base_version);
  52. spip_log('DESINSTALLATION BDD', 'svp_actions.' . _LOG_INFO);
  53. }
  54. /**
  55. * Ajoute le préfixe des plugins dans chaque ligne de paquets
  56. *
  57. * Cette mise à jour permet de dupliquer le préfixe des plugins
  58. * dans la ligne des paquets (cette colonne était absente avant)
  59. * pour plus de simplicité ensuite dans les requêtes SQL.
  60. */
  61. function svp_synchroniser_prefixe() {
  62. $paquets = sql_allfetsel(
  63. array('pa.id_paquet', 'pl.prefixe'),
  64. array('spip_paquets AS pa', 'spip_plugins AS pl'),
  65. 'pl.id_plugin=pa.id_plugin');
  66. if ($paquets) {
  67. // On insere, en encapsulant pour sqlite...
  68. if (sql_preferer_transaction()) {
  69. sql_demarrer_transaction();
  70. }
  71. foreach ($paquets as $paquet) {
  72. sql_updateq('spip_paquets',
  73. array('prefixe' => $paquet['prefixe']),
  74. 'id_paquet=' . intval($paquet['id_paquet']));
  75. }
  76. if (sql_preferer_transaction()) {
  77. sql_terminer_transaction();
  78. }
  79. }
  80. }
  81. ?>