Esempio n. 1
0
/**
 * Traiter
 * @return array
 */
function formulaires_sauvegarder_traiter_dist()
{
    $status_file = base_dump_meta_name(0);
    $dir_dump = dump_repertoire();
    $archive = $dir_dump . basename(_request('nom_sauvegarde'), ".sqlite");
    if (_request('tout_sauvegarder')) {
        // ici on prend toutes les tables sauf celles exclues par defaut
        // (tables de cache en pratique)
        $exclude = lister_tables_noexport();
        list($tables, ) = base_liste_table_for_dump($exclude);
        $tables = base_lister_toutes_tables('', $tables, $exclude);
    } else {
        $tables = _request('tables');
    }
    include_spip('inc/dump');
    $res = dump_init($status_file, $archive, $tables);
    if ($res === true) {
        // on lance l'action sauvegarder qui va realiser la sauvegarde
        // et finira par une redirection vers la page sauvegarde_fin
        include_spip('inc/actions');
        $redirect = generer_action_auteur('sauvegarder', $status_file);
        return array('message_ok' => 'ok', 'redirect' => $redirect);
    } else {
        return array('message_erreur' => $res);
    }
}
Esempio n. 2
0
/**
 * Telecharger un dump quand on est webmestre
 * 
 * @param string $arg
 */
function action_telecharger_dump_dist($arg = null)
{
    if (!$arg) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    $file = dump_repertoire() . basename($arg, '.sqlite') . '.sqlite';
    if (file_exists($file) and autoriser('webmestre')) {
        $f = basename($file);
        // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
        header('Content-Type: application/octet-stream');
        header("Content-Disposition: attachment; filename=\"{$f}\";");
        header("Content-Transfer-Encoding: binary");
        // fix for IE catching or PHP bug issue
        header("Pragma: public");
        header("Expires: 0");
        // set expiration time
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        if ($cl = filesize($file)) {
            header("Content-Length: " . $cl);
        }
        readfile($file);
    } else {
        http_status(404);
        include_spip('inc/minipres');
        echo minipres(_T('erreur') . ' 404', _T('info_acces_interdit'));
    }
    // et on finit comme ca d'un coup
    exit;
}
/**
 * Telecharger un dump quand on est webmestre
 *
 * @param string $arg
 */
function action_supprimer_dump_dist($arg = null)
{
    if (!$arg) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    $fichier = $arg;
    if (autoriser('webmestre')) {
        // verifier que c'est bien une sauvegarde
        include_spip("inc/dump");
        $dir = dump_repertoire();
        $dumps = dump_lister_sauvegardes($dir);
        foreach ($dumps as $dump) {
            if ($dump['fichier'] == $fichier) {
                spip_unlink($dir . $fichier);
            }
        }
    }
}
Esempio n. 4
0
/**
 * 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);
    }
}