sauvegarder.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. /**
  13. *
  14. * On arrive ici depuis le #FORMULAIRE_SAUVEGARDER
  15. * - l'initialisation a ete faite avant redirection
  16. * - on enchaine sur inc/sauvegarder, qui remplit le dump et renvoie ici a chaque timeout
  17. * - a chaque coup on relance inc/sauvegarder
  18. * - lorsque inc/sauvegarder a fini, il retourne true
  19. * - on renvoie vers exec=sauvegarder pour afficher le resume
  20. *
  21. */
  22. include_spip('base/dump');
  23. include_spip('inc/dump');
  24. /**
  25. * Sauvegarder par morceaux
  26. *
  27. * @param string $arg
  28. */
  29. function action_sauvegarder_dist($arg=null){
  30. if (!$arg) {
  31. $securiser_action = charger_fonction('securiser_action', 'inc');
  32. $arg = $securiser_action();
  33. }
  34. $status_file = $arg;
  35. $redirect = parametre_url(generer_action_auteur('sauvegarder',$status_file),"step",intval(_request('step')+1),'&');
  36. // lancer export qui va se relancer jusqu'a sa fin
  37. $sauvegarder = charger_fonction('sauvegarder', 'inc');
  38. utiliser_langue_visiteur();
  39. // quand on sort de $export avec true c'est qu'on a fini
  40. if ($sauvegarder($status_file,$redirect)) {
  41. dump_end($status_file,'sauvegarder');
  42. include_spip('inc/headers');
  43. echo redirige_formulaire(generer_url_ecrire("sauvegarder",'status='.$status_file,'',true, true));
  44. }
  45. // forcer l'envoi du buffer par tous les moyens !
  46. echo(str_repeat("<br />\r\n",256));
  47. while (@ob_get_level()){
  48. @ob_flush();
  49. @flush();
  50. @ob_end_flush();
  51. }
  52. }
  53. ?>