/_core_/tags/spip-3.0.0-rc/revisions/revisions_administrations.php

https://bitbucket.org/pombredanne/spip-zone-treemap · PHP · 106 lines · 54 code · 14 blank · 38 comment · 6 complexity · b8302b98b58546b00437fc7c611472dd MD5 · raw file

  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2011 *
  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 revision
  14. *
  15. * @param string $nom_meta_base_version
  16. * @param string $version_cible
  17. */
  18. function revisions_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_versions')
  26. AND isset($desc['exist'])){
  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_versions','spip_versions_fragments')),
  34. array('revisions_upate_meta'),
  35. );
  36. $maj['1.1.0'] = array(
  37. // Ajout du champs objet et modification du champs id_article en id_objet
  38. // sur les 2 tables spip_versions et spip_versions_fragments
  39. array('sql_alter',"TABLE spip_versions CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL"),
  40. array('sql_alter',"TABLE spip_versions ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),
  41. // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles
  42. array('sql_updateq',"spip_versions",array('objet'=>'article'),"objet=''"),
  43. // Changement des clefs primaires également
  44. array('sql_alter',"TABLE spip_versions DROP PRIMARY KEY"),
  45. array('sql_alter',"TABLE spip_versions ADD PRIMARY KEY (id_version, id_objet, objet)"),
  46. array('sql_alter',"TABLE spip_versions_fragments CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL"),
  47. array('sql_alter',"TABLE spip_versions_fragments ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),
  48. // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles
  49. array('sql_updateq',"spip_versions_fragments",array('objet'=>'article'),"objet=''"),
  50. // Changement des clefs primaires également
  51. array('sql_alter',"TABLE spip_versions_fragments DROP PRIMARY KEY"),
  52. array('sql_alter',"TABLE spip_versions_fragments ADD PRIMARY KEY (id_objet, objet, id_fragment, version_min)"),
  53. array('revisions_upate_meta'),
  54. );
  55. $maj['1.1.2'] = array(
  56. array('revisions_upate_meta'),
  57. array('sql_updateq',"spip_versions",array('objet'=>'article'),"objet=''"),
  58. array('sql_updateq',"spip_versions_fragments",array('objet'=>'article'),"objet=''"),
  59. );
  60. include_spip('base/upgrade');
  61. maj_plugin($nom_meta_base_version, $version_cible, $maj);
  62. }
  63. /**
  64. * Desinstallation/suppression des tables revisions
  65. *
  66. * @param string $nom_meta_base_version
  67. */
  68. function revisions_vider_tables($nom_meta_base_version) {
  69. sql_drop_table("spip_versions");
  70. sql_drop_table("spip_versions_fragments");
  71. effacer_meta($nom_meta_base_version);
  72. }
  73. /**
  74. * Mettre a jour la meta des versions
  75. * @return void
  76. */
  77. function revisions_upate_meta(){
  78. // Si dans une installation antérieure ou un upgrade, les articles étaient versionnés
  79. // On crée la meta correspondante
  80. // mettre les metas par defaut
  81. $config = charger_fonction('config','inc');
  82. $config();
  83. if($GLOBALS['meta']['articles_versions'] == 'oui'){
  84. ecrire_meta('objets_versions',serialize(array('articles')));
  85. }
  86. effacer_meta('articles_versions');
  87. if (!$versions = unserialize($GLOBALS['meta']['objets_versions']))
  88. $versions = array();
  89. $versions = array_map('table_objet_sql',$versions);
  90. ecrire_meta('objets_versions',serialize($versions));
  91. }
  92. ?>