[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / dump / formulaires / sauvegarder.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14 include_spip('base/dump');
15 include_spip('inc/dump');
16
17 /**
18 * Charger #FORMULAIRE_SAUVEGARDER
19 * @return array
20 */
21 function formulaires_sauvegarder_charger_dist(){
22 $dir_dump = dump_repertoire();
23
24 // ici on liste tout, les tables exclue sont simplement non cochees
25 $exclude = lister_tables_noexport();
26 list($tables,) = base_liste_table_for_dump($exclude);
27 $tables = base_lister_toutes_tables('',$tables);
28
29 $valeurs = array(
30 '_dir_dump'=>joli_repertoire($dir_dump),
31 '_dir_img'=>joli_repertoire(_DIR_IMG),
32 '_spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html',
33 'nom_sauvegarde' => basename(dump_nom_fichier($dir_dump,'sqlite'),'.sqlite'),
34 'tout_sauvegarder' => (_request('nom_sauvegarde') AND !_request('tout_sauvegarder'))?'':'oui',
35 '_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>",
36 base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde')?(_request('tables')?_request('tables'):array()):null)
37 ) . "</li></ol>\n",
38 /* Si la fonction n'existe pas (vieux plugin migration actif), on met 'spip', ca n'affichera rien
39 mais ne perturbe pas la sauvegarde qui utilisera bien le bon prefixe */
40 '_prefixe' => function_exists('base_prefixe_tables')?base_prefixe_tables(''):'spip',
41 );
42
43 return $valeurs;
44 }
45
46 /**
47 * Verifier
48 * @return array
49 */
50 function formulaires_sauvegarder_verifier_dist() {
51 $erreurs = array();
52 if (!$nom = _request('nom_sauvegarde'))
53 $erreurs['nom_sauvegarde'] = _T('info_obligatoire');
54 elseif (!preg_match(',^[\w_][\w_.]*$,', $nom)
55 OR basename($nom)!==$nom)
56 $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
57
58 return $erreurs;
59 }
60
61 /**
62 * Traiter
63 * @return array
64 */
65 function formulaires_sauvegarder_traiter_dist() {
66 $status_file = base_dump_meta_name(0);
67 $dir_dump = dump_repertoire();
68 $archive = $dir_dump . basename(_request('nom_sauvegarde'),".sqlite");
69
70 if (_request('tout_sauvegarder')) {
71 // ici on prend toutes les tables sauf celles exclues par defaut
72 // (tables de cache en pratique)
73 $exclude = lister_tables_noexport();
74 list($tables,) = base_liste_table_for_dump($exclude);
75 $tables = base_lister_toutes_tables('',$tables,$exclude);
76 }
77 else
78 $tables = _request('tables');
79
80 include_spip('inc/dump');
81 $res = dump_init($status_file, $archive, $tables);
82
83 if ($res===true) {
84 // on lance l'action sauvegarder qui va realiser la sauvegarde
85 // et finira par une redirection vers la page sauvegarde_fin
86 include_spip('inc/actions');
87 $redirect = generer_action_auteur('sauvegarder', $status_file);
88 return array('message_ok'=>'ok','redirect'=>$redirect);
89 }
90 else
91 return array('message_erreur'=>$res);
92 }
93
94 ?>