restaurer.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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/actions');
  14. function base_restaurer_dist($titre='', $reprise=false) {
  15. $status_file = _DUMP_STATUS_FILE;
  16. $status_file = _DIR_TMP.basename($status_file).".txt";
  17. if (!lire_fichier($status_file, $status)
  18. OR !$status = unserialize($status)) {
  19. }
  20. else {
  21. $redirect = parametre_url(generer_action_auteur('restaurer',_DUMP_STATUS_FILE),"step",intval(_request('step')+1),'&');
  22. $timeout = ini_get('max_execution_time');
  23. // valeur conservatrice si on a pas reussi a lire le max_execution_time
  24. if (!$timeout) $timeout=30; // parions sur une valeur tellement courante ...
  25. $max_time = time()+$timeout/2;
  26. include_spip('inc/minipres');
  27. @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure
  28. $titre = _T('dump:restauration_en_cours') . " (".count($status['tables']).") ";
  29. $balise_img = chercher_filtre('balise_img');
  30. $titre .= $balise_img(chemin_image('searching.gif'));
  31. echo ( install_debut_html($titre));
  32. // script de rechargement auto sur timeout
  33. echo http_script("window.setTimeout('location.href=\"".$redirect."\";',".($timeout*1000).")");
  34. echo "<div style='text-align: left'>\n";
  35. dump_serveur($status['connect']);
  36. spip_connect('dump');
  37. // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde
  38. if (_request('step')) {
  39. $options = array(
  40. 'callback_progression' => 'dump_afficher_progres',
  41. 'max_time' => $max_time,
  42. 'no_erase_dest' => lister_tables_noerase(),
  43. 'where' => $status['where']?$status['where']:array(),
  44. 'desc_tables_dest' => array()
  45. );
  46. if ($desc = sql_getfetsel('valeur','spip_meta',"nom='dump_structure_temp'",'','','','','dump')
  47. AND $desc = unserialize($desc))
  48. $options['desc_tables_dest'] = $desc;
  49. #var_dump(sql_allfetsel('nom,valeur','spip_meta',"",'','','','','dump'));
  50. #die();
  51. $res = base_copier_tables($status_file, $status['tables'], 'dump', '', $options);
  52. }
  53. else {
  54. // mais on en profite pour reparer les version base pour etre sur de ne pas les perdre
  55. sql_updateq("spip_meta",array('impt'=>'oui'),"nom='version_installee'",'','dump');
  56. sql_updateq("spip_meta",array('impt'=>'oui'),"nom LIKE '%_base_version'",'','dump');
  57. }
  58. echo ( "</div>\n");
  59. if (!$res)
  60. echo dump_relance($redirect);
  61. echo (install_fin_html());
  62. ob_end_flush();
  63. flush();
  64. if (!$res)
  65. exit;
  66. // quand on sort de $export avec true c'est qu'on a fini
  67. dump_end(_DUMP_STATUS_FILE,'restaurer');
  68. include_spip('inc/headers');
  69. echo redirige_formulaire(generer_url_ecrire("restaurer",'status='._DUMP_STATUS_FILE,'',true, true));
  70. }
  71. }
  72. ?>