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'] = "
  1. \n" . join( "
  2. \n
  3. ", $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); } }