telecharger_dump.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. include_spip('inc/dump');
  13. include_spip('inc/autoriser');
  14. /**
  15. * Telecharger un dump quand on est webmestre
  16. *
  17. * @param string $arg
  18. */
  19. function action_telecharger_dump_dist($arg=null){
  20. if (!$arg) {
  21. $securiser_action = charger_fonction('securiser_action', 'inc');
  22. $arg = $securiser_action();
  23. }
  24. $file = dump_repertoire().basename($arg,'.sqlite').'.sqlite';
  25. if (
  26. file_exists($file)
  27. AND autoriser('webmestre')){
  28. $f = basename($file);
  29. // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
  30. header('Content-Type: application/octet-stream');
  31. header("Content-Disposition: attachment; filename=\"$f\";");
  32. header("Content-Transfer-Encoding: binary");
  33. // fix for IE catching or PHP bug issue
  34. header("Pragma: public");
  35. header("Expires: 0"); // set expiration time
  36. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  37. if ($cl = filesize($file))
  38. header("Content-Length: ". $cl);
  39. readfile($file);
  40. }
  41. else{
  42. http_status(404);
  43. include_spip('inc/minipres');
  44. echo minipres(_T('erreur').' 404',
  45. _T('info_acces_interdit'));
  46. }
  47. // et on finit comme ca d'un coup
  48. exit;
  49. }
  50. ?>