PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 1ms

/_plugins_/dump_xml/action/export_all.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 108 lines | 71 code | 19 blank | 18 comment | 7 complexity | 211deb5ab830138b6db3d5bc0012c1e6 MD5 | raw file
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2010 *
  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. include_spip('inc/lang');
  13. include_spip('inc/actions');
  14. include_spip('base/dump');
  15. // http://doc.spip.org/@action_export_all_dist
  16. function action_export_all_dist()
  17. {
  18. $securiser_action = charger_fonction('securiser_action', 'inc');
  19. $arg = $securiser_action();
  20. @list(, $gz, $archive, $rub, $version) = explode(',', $arg);
  21. $meta = base_dump_meta_name($rub);
  22. $dir = base_dump_dir($meta);
  23. $file = $dir . $archive;
  24. utiliser_langue_visiteur();
  25. export_all_fin($file, $meta, $rub);
  26. }
  27. // http://doc.spip.org/@export_all_fin
  28. function export_all_fin($file, $meta, $rub)
  29. {
  30. global $spip_lang_left,$spip_lang_right;
  31. $metatable = $meta . '_tables';
  32. $tables_sauvegardees = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
  33. effacer_meta($meta);
  34. effacer_meta($metatable);
  35. $size = @(!file_exists($file) ? 0 : filesize($file));
  36. if (!$size) {
  37. $corps = _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .'));
  38. } else {
  39. $subdir = dirname($file);
  40. $dir = dirname($subdir);
  41. $nom = basename($file);
  42. $dest = $dir . '/' . $nom;
  43. if (file_exists($dest)) {
  44. $n = 1;
  45. while (@file_exists($new = "$dir/$n-$nom")) $n++;
  46. @rename($dest, $new);
  47. }
  48. if (@rename($file, $dest)) {
  49. spip_unlink($subdir);
  50. spip_log("$file renomme en $dir/$nom");
  51. }
  52. // ne pas effrayer inutilement: il peut y avoir moins de fichiers
  53. // qu'annonce' si certains etaient vides
  54. $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' ')));
  55. // cette chaine est a refaire car il y a double ambiguite:
  56. // - si plusieurs SPIP dans une base SQL (cf table_prefix)
  57. // - si on exporte seulement une rubrique
  58. # _T('info_sauvegarde_reussi_02',
  59. if ($rub) {
  60. $titre = sql_getfetsel('titre', 'spip_rubriques', "id_rubrique=$rub");
  61. $titre = _T('info_sauvegarde_rubrique_reussi',
  62. array('archive' => ':<br /><b>'.joli_repertoire("$dir/$nom")."</b> ($n)", 'titre' => "<b>$titre</b>"));
  63. }
  64. else
  65. $titre = _T('info_sauvegarde_reussi_02',
  66. array('archive' => ':<br /><b>'.joli_repertoire("$dir/$nom")."</b> ($n)"));
  67. $corps = "<p style='text-align: $spip_lang_left'>".
  68. $titre .
  69. " <a href='" . generer_url_ecrire() . "'>".
  70. _T('info_sauvegarde_reussi_03')
  71. . "</a> "
  72. ._T('info_sauvegarde_reussi_04')
  73. . "</p>\n";
  74. include_spip('inc/filtres');
  75. $corps .= "<div style='text-align: $spip_lang_right'>"
  76. . bouton_action(_T("retour"), generer_url_ecrire())
  77. . "</div>";
  78. // afficher la liste des tables qu'on a sauvegarde
  79. sort($tables_sauvegardees);
  80. $n = floor(count($tables_sauvegardees)/2);
  81. $corps .= "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,0,$n)) . "</li></ul></div>"
  82. . "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,$n)) . "</li></ul></div>"
  83. . "<div class='nettoyeur'></div>";
  84. }
  85. include_spip('inc/minipres');
  86. echo minipres(_T('info_sauvegarde'), $corps);
  87. exit;
  88. }
  89. ?>