No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

petitions_administrations.php 3.6KB

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