revisions_administrations.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. /**
  12. * Installation du plugin révisions
  13. *
  14. * @package Revisions\Installation
  15. **/
  16. if (!defined('_ECRIRE_INC_VERSION')) return;
  17. /**
  18. * Installation/maj des tables révisions
  19. *
  20. * @param string $nom_meta_base_version
  21. * @param string $version_cible
  22. */
  23. function revisions_upgrade($nom_meta_base_version,$version_cible){
  24. // cas particulier :
  25. // si plugin pas installe mais que la table existe
  26. // considerer que c'est un upgrade depuis v 1.0.0
  27. // pour gerer l'historique des installations SPIP <=2.1
  28. if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
  29. $trouver_table = charger_fonction('trouver_table','base');
  30. if ($desc = $trouver_table('spip_versions')
  31. AND isset($desc['exist']) AND $desc['exist']){
  32. ecrire_meta($nom_meta_base_version,'1.0.0');
  33. }
  34. // si pas de table en base, on fera une simple creation de base
  35. }
  36. $maj = array();
  37. $maj['create'] = array(
  38. array('maj_tables',array('spip_versions','spip_versions_fragments')),
  39. array('revisions_upate_meta'),
  40. );
  41. $maj['1.1.0'] = array(
  42. // Ajout du champs objet et modification du champs id_article en id_objet
  43. // sur les 2 tables spip_versions et spip_versions_fragments
  44. array('sql_alter',"TABLE spip_versions CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL"),
  45. array('sql_alter',"TABLE spip_versions ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),
  46. // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles
  47. array('sql_updateq',"spip_versions",array('objet'=>'article'),"objet=''"),
  48. // Changement des clefs primaires également
  49. array('sql_alter',"TABLE spip_versions DROP PRIMARY KEY"),
  50. array('sql_alter',"TABLE spip_versions ADD PRIMARY KEY (id_version, id_objet, objet)"),
  51. array('sql_alter',"TABLE spip_versions_fragments CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL"),
  52. array('sql_alter',"TABLE spip_versions_fragments ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),
  53. // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles
  54. array('sql_updateq',"spip_versions_fragments",array('objet'=>'article'),"objet=''"),
  55. // Changement des clefs primaires également
  56. array('sql_alter',"TABLE spip_versions_fragments DROP PRIMARY KEY"),
  57. array('sql_alter',"TABLE spip_versions_fragments ADD PRIMARY KEY (id_objet, objet, id_fragment, version_min)"),
  58. array('revisions_upate_meta'),
  59. );
  60. $maj['1.1.2'] = array(
  61. array('revisions_upate_meta'),
  62. array('sql_updateq',"spip_versions",array('objet'=>'article'),"objet=''"),
  63. array('sql_updateq',"spip_versions_fragments",array('objet'=>'article'),"objet=''"),
  64. );
  65. $maj['1.1.3'] = array(
  66. array('sql_alter',"TABLE spip_versions DROP KEY id_objet"),
  67. array('sql_alter',"TABLE spip_versions ADD INDEX id_version (id_version)"),
  68. array('sql_alter',"TABLE spip_versions ADD INDEX id_objet (id_objet)"),
  69. array('sql_alter',"TABLE spip_versions ADD INDEX objet (objet)")
  70. );
  71. $maj['1.1.4'] = array(
  72. array('sql_alter',"TABLE spip_versions CHANGE permanent permanent char(3) DEFAULT '' NOT NULL"),
  73. array('sql_alter',"TABLE spip_versions CHANGE champs champs text DEFAULT '' NOT NULL"),
  74. );
  75. include_spip('base/upgrade');
  76. maj_plugin($nom_meta_base_version, $version_cible, $maj);
  77. }
  78. /**
  79. * Desinstallation/suppression des tables revisions
  80. *
  81. * @param string $nom_meta_base_version
  82. */
  83. function revisions_vider_tables($nom_meta_base_version) {
  84. sql_drop_table("spip_versions");
  85. sql_drop_table("spip_versions_fragments");
  86. effacer_meta($nom_meta_base_version);
  87. }
  88. /**
  89. * Mettre a jour la meta des versions
  90. * @return void
  91. */
  92. function revisions_upate_meta(){
  93. // Si dans une installation antérieure ou un upgrade, les articles étaient versionnés
  94. // On crée la meta correspondante
  95. // mettre les metas par defaut
  96. $config = charger_fonction('config','inc');
  97. $config();
  98. if($GLOBALS['meta']['articles_versions'] == 'oui'){
  99. ecrire_meta('objets_versions',serialize(array('articles')));
  100. }
  101. effacer_meta('articles_versions');
  102. if (!$versions = unserialize($GLOBALS['meta']['objets_versions']))
  103. $versions = array();
  104. $versions = array_map('table_objet_sql',$versions);
  105. ecrire_meta('objets_versions',serialize($versions));
  106. }
  107. ?>