petitions_administrations.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined('_ECRIRE_INC_VERSION')) return;
  12. /**
  13. * Installation/maj des tables petitions et signatures
  14. *
  15. * @param string $nom_meta_base_version
  16. * @param string $version_cible
  17. */
  18. function petitions_upgrade($nom_meta_base_version,$version_cible){
  19. // cas particulier :
  20. // si plugin pas installe mais que la table existe
  21. // considerer que c'est un upgrade depuis v 1.0.0
  22. // pour gerer l'historique des installations SPIP <=2.1
  23. if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
  24. $trouver_table = charger_fonction('trouver_table','base');
  25. if ($desc = $trouver_table('spip_signatures')
  26. AND isset($desc['field']['id_article'])){
  27. ecrire_meta($nom_meta_base_version,'1.0.0');
  28. }
  29. // si pas de table en base, on fera une simple creation de base
  30. }
  31. $maj = array();
  32. $maj['create'] = array(
  33. array('maj_tables',array('spip_petitions','spip_signatures')),
  34. );
  35. $maj['1.1.0'] = array(
  36. array('sql_alter',"TABLE spip_petitions DROP PRIMARY KEY"),
  37. );
  38. $maj['1.1.1'] = array(
  39. array('sql_alter',"TABLE spip_petitions ADD UNIQUE id_article (id_article)"),
  40. );
  41. $maj['1.1.2'] = array(
  42. array('sql_alter',"TABLE spip_petitions ADD id_petition BIGINT(21) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST"),
  43. array('sql_alter',"TABLE spip_petitions ADD PRIMARY KEY (id_petition)"),
  44. );
  45. $maj['1.1.3'] = array(
  46. array('sql_alter',"TABLE spip_petitions ADD statut VARCHAR (10) DEFAULT 'publie' NOT NULL"),
  47. );
  48. $maj['1.1.4'] = array(
  49. array('sql_alter',"TABLE spip_signatures ADD id_petition bigint(21) DEFAULT '0' NOT NULL"),
  50. array('sql_alter',"TABLE spip_signatures ADD INDEX id_petition (id_petition)"),
  51. array('sql_updateq','spip_signatures',array('id_petition'=>-1)),
  52. );
  53. $maj['1.1.5'] = array(
  54. array('upgrade_index_signatures'),
  55. );
  56. $maj['1.1.6'] = array(
  57. array('sql_alter',"TABLE spip_signatures DROP INDEX id_article"),
  58. array('sql_alter',"TABLE spip_signatures DROP id_article"),
  59. );
  60. include_spip('base/upgrade');
  61. maj_plugin($nom_meta_base_version, $version_cible, $maj);
  62. }
  63. function upgrade_index_signatures(){
  64. while ($rows = sql_allfetsel('DISTINCT id_article','spip_signatures','id_petition=-1','','','0,100')) {
  65. $rows = array_map('reset',$rows);
  66. foreach($rows as $id_article){
  67. $id_petition = sql_getfetsel('id_petition','spip_petitions','id_article='.intval($id_article));
  68. if (!$id_petition){
  69. include_spip('action/editer_petition');
  70. $id_petition = petition_inserer($id_article);
  71. sql_updateq('spip_petitions',array('statut'=>'poubelle'),'id_petition='.$id_petition);
  72. }
  73. sql_updateq('spip_signatures',array('id_petition'=>$id_petition),'id_article='.$id_article);
  74. }
  75. }
  76. }
  77. /**
  78. * Desinstallation/suppression des tables petitions et signatures
  79. *
  80. * @param string $nom_meta_base_version
  81. */
  82. function petitions_vider_tables($nom_meta_base_version) {
  83. sql_drop_table("spip_petitions");
  84. sql_drop_table("spip_signatures");
  85. effacer_meta($nom_meta_base_version);
  86. }
  87. ?>