sauvegarder.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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('base/dump');
  13. include_spip('inc/dump');
  14. /**
  15. * Charger #FORMULAIRE_SAUVEGARDER
  16. * @return array
  17. */
  18. function formulaires_sauvegarder_charger_dist(){
  19. $dir_dump = dump_repertoire();
  20. // ici on liste tout, les tables exclue sont simplement non cochees
  21. $exclude = lister_tables_noexport();
  22. list($tables,) = base_liste_table_for_dump($exclude);
  23. $tables = base_lister_toutes_tables('',$tables);
  24. $valeurs = array(
  25. '_dir_dump'=>joli_repertoire($dir_dump),
  26. '_dir_img'=>joli_repertoire(_DIR_IMG),
  27. '_spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html',
  28. 'nom_sauvegarde' => basename(dump_nom_fichier($dir_dump,'sqlite'),'.sqlite'),
  29. 'tout_sauvegarder' => (_request('nom_sauvegarde') AND !_request('tout_sauvegarder'))?'':'oui',
  30. '_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>",
  31. base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde')?(_request('tables')?_request('tables'):array()):null)
  32. ) . "</li></ol>\n",
  33. /* Si la fonction n'existe pas (vieux plugin migration actif), on met 'spip', ca n'affichera rien
  34. mais ne perturbe pas la sauvegarde qui utilisera bien le bon prefixe */
  35. '_prefixe' => function_exists('base_prefixe_tables')?base_prefixe_tables(''):'spip',
  36. );
  37. return $valeurs;
  38. }
  39. /**
  40. * Verifier
  41. * @return array
  42. */
  43. function formulaires_sauvegarder_verifier_dist() {
  44. $erreurs = array();
  45. if (!$nom = _request('nom_sauvegarde'))
  46. $erreurs['nom_sauvegarde'] = _T('info_obligatoire');
  47. elseif (!preg_match(',^[\w_][\w_.]*$,', $nom)
  48. OR basename($nom)!==$nom)
  49. $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
  50. return $erreurs;
  51. }
  52. /**
  53. * Traiter
  54. * @return array
  55. */
  56. function formulaires_sauvegarder_traiter_dist() {
  57. $status_file = base_dump_meta_name(0);
  58. $dir_dump = dump_repertoire();
  59. $archive = $dir_dump . basename(_request('nom_sauvegarde'),".sqlite");
  60. if (_request('tout_sauvegarder')) {
  61. // ici on prend toutes les tables sauf celles exclues par defaut
  62. // (tables de cache en pratique)
  63. $exclude = lister_tables_noexport();
  64. list($tables,) = base_liste_table_for_dump($exclude);
  65. $tables = base_lister_toutes_tables('',$tables,$exclude);
  66. }
  67. else
  68. $tables = _request('tables');
  69. include_spip('inc/dump');
  70. $res = dump_init($status_file, $archive, $tables);
  71. if ($res===true) {
  72. // on lance l'action sauvegarder qui va realiser la sauvegarde
  73. // et finira par une redirection vers la page sauvegarde_fin
  74. include_spip('inc/actions');
  75. $redirect = generer_action_auteur('sauvegarder', $status_file);
  76. return array('message_ok'=>'ok','redirect'=>$redirect);
  77. }
  78. else
  79. return array('message_erreur'=>$res);
  80. }
  81. ?>