dump_repertoire(),
'choisi' => _request('fichier') ? _request('fichier') : _request('nom'),
'nom_sauvegarde' => '',
'tout_restaurer' => (_request('check_tables') and !_request('tout_restaurer')) ? '' : 'oui',
'fichier' => '',
'tri' => 'nom',
);
return $valeurs;
}
/**
* Verifier
*
* @return array
*/
function formulaires_restaurer_verifier_dist() {
$erreurs = array();
$nom = '';
if (!$fichier = _request('fichier') and !$nom = _request('nom_sauvegarde')) {
$erreurs['fichier'] = _T('info_obligatoire');
} elseif ($fichier) {
$fichier = basename($fichier); // securite
if (!file_exists(dump_repertoire() . $fichier)) {
$erreurs['fichier'] = _T('dump:erreur_nom_fichier');
} else {
$nom = $fichier;
}
} else {
$nom = basename($nom); // securite
if (!file_exists(dump_repertoire() . $nom)) {
$erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
$nom = '';
}
}
if (!$nom) {
$erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez');
}
if ($nom) {
$archive = dump_repertoire() . $nom;
if (!$args = dump_connect_args($archive)) {
$erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible');
}
dump_serveur($args);
$tables = base_lister_toutes_tables('dump');
$tables = base_saisie_tables('tables', $tables, array(), _request('tables') ? _request('tables') : array(), 'dump');
$erreurs['tables'] = "
- \n" . join(
"
\n- ",
$tables
) . "
\n";
if (!count(_request('tables')) and !_request('tout_restaurer') and _request('check_tables')) {
$erreurs['tout_restaurer'] = _T('dump:selectionnez_table_a_restaurer');
}
}
if ($nom
and (!count($erreurs) or (count($erreurs) == 1 and isset($erreurs['tables'])))
) {
if (_request('confirm') !== $nom) {
$erreurs['message_confirm'] =
_T(
'dump:info_selection_sauvegarde',
array('fichier' => '' . joli_repertoire(dump_repertoire() . $nom) . '')
)
. "
";
$erreurs['message_confirm'] .= "';
} else {
// passer a traiter()
unset($erreurs['tables']);
}
}
if (count($erreurs) and !isset($erreurs['message_erreur'])) {
$erreurs['message_erreur'] = '';
} // pas de message general automatique ici
return $erreurs;
}
/**
* Traiter
*
* @return array
*/
function formulaires_restaurer_traiter_dist() {
$archive = (_request('fichier') ? _request('fichier') : _request('nom'));
$dir_dump = dump_repertoire();
$archive = $dir_dump . basename($archive, '.sqlite');
$status_file = base_dump_meta_name(0) . '_restauration';
if (_request('tout_restaurer')) {
$args = dump_connect_args($archive);
dump_serveur($args);
$tables = base_lister_toutes_tables('dump');
} else {
$tables = _request('tables');
}
include_spip('inc/dump');
$res = dump_init($status_file, $archive, $tables, array('spip_meta' => "impt='oui'"));
if ($res === true) {
// on lance l'action restaurer qui va realiser la sauvegarde
// et finira par une redirection vers la page sauvegarde_fin
include_spip('inc/actions');
$redirect = generer_action_auteur('restaurer', $status_file);
return array('message_ok' => 'ok', 'redirect' => $redirect);
} else {
return array('message_erreur' => $res);
}
}