コード例 #1
0
ファイル: sauvegarder.php プロジェクト: genma/spip_ynh
/**
 * 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);
    }
}
コード例 #2
0
ファイル: migrer_vers.php プロジェクト: nursit/Migration
/**
 * Initialiser une migration vers
 * @param string $status_file
 * @param array $tables
 * @param array $files
 * @param array $where
 * @param string $action
 * @return bool|string
 */
function migrer_vers_init($status_file, $tables=null, $files = null,$where=array(),$action='migration_vers'){
	$status_file = _DIR_TMP.basename($status_file).".txt";

	if (lire_fichier($status_file, $status)
		AND $status = unserialize($status)
		AND $status['etape']!=='fini'
		AND filemtime($status_file)>=time()-120) // si le fichier status est trop vieux c'est un abandon
		return _T("migration:erreur_{$action}_deja_en_cours");

	if (!$tables)
		list($tables,) = base_liste_table_for_dump(lister_tables_noexport());
	if (!$files){
		$files = preg_files(_DIR_IMG,'.');
	}
	$squelettes = '';
	$dir_squels = explode(':',migration_determiner_dossier_squelette());
	if (count($dir_squels)){
		$squelettes = array();
		foreach($dir_squels as $dir_squel)
			$squelettes[$dir_squel] = preg_files($dir_squel,'.');
	}
	$status = array('tables'=>$tables,'files'=>$files,'squelettes'=>$squelettes,'where'=>$where);

	$status['etape'] = 'init';
	if (!ecrire_fichier($status_file, serialize($status)))
		return _T('migration:avis_probleme_ecriture_fichier',array('fichier'=>$status_file));

	return true;
}
コード例 #3
0
function formulaires_assistant_migration_traiter_dist(){

	$s = lire_migration_vers_status();
	include_spip('base/dump');
	$status_file = base_dump_meta_name(substr(md5($s['target']),0,8));

	// 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);

	include_spip('inc/migrer_vers');
	$res = migrer_vers_init($status_file, $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('migrer_vers', $status_file);
		return array('message_ok'=>_T('migration:message_connexion_ok'),'redirect'=>$redirect);
	}
	else
		return array('message_erreur'=>$res);
}
コード例 #4
0
ファイル: dump.php プロジェクト: xablen/Semaine14_SPIP_test
/**
 * Initialiser un dump
 *
 * @param string $status_file Fichier contenant les informations serialisees sur le statut de l'export
 * @param string $archive Nom de l'archive (stockee dans le fichier de statut)
 * @param array $tables Liste des tables a exporter (autocaculee par defaut)
 * @param array $where Condition sur l'export
 * @param string $action Pour differencier la sauvegarde de l'import
 * @return bool/string
 */
function dump_init($status_file, $archive, $tables = null, $where = array(), $action = 'sauvegarde')
{
    $status_file = _DIR_TMP . basename($status_file) . ".txt";
    if (lire_fichier($status_file, $status) and $status = unserialize($status) and $status['etape'] !== 'fini' and filemtime($status_file) >= time() - 120) {
        return _T("dump:erreur_" . $action . "_deja_en_cours");
    }
    if (!($type_serveur = dump_type_serveur())) {
        return _T('dump:erreur_sqlite_indisponible');
    }
    if (!$tables) {
        list($tables, ) = base_liste_table_for_dump(lister_tables_noexport());
    }
    $status = array('tables' => $tables, 'where' => $where, 'archive' => $archive);
    $status['connect'] = dump_connect_args($archive);
    dump_serveur($status['connect']);
    if (!spip_connect('dump')) {
        return _T('dump:erreur_creation_base_sqlite');
    }
    // la constante sert a verifier qu'on utilise bien le connect/dump du plugin,
    // et pas une base externe homonyme
    if (!defined('_DUMP_SERVEUR_OK')) {
        return _T('erreur_connect_dump', array('dump' => 'dump'));
    }
    $status['etape'] = 'init';
    if (!ecrire_fichier($status_file, serialize($status))) {
        return _T('dump:avis_probleme_ecriture_fichier', array('fichier' => $status_file));
    }
    return true;
}
コード例 #5
0
ファイル: import.php プロジェクト: rhertzog/lcs
function import_table_choix($request){
	spip_log("noimport:".implode(',',lister_tables_noimport()),'noimport');
	list($tables,) = base_liste_table_for_dump(lister_tables_noimport());
	spip_log("liste:".implode(',',$tables),'noimport');
	return $tables;
}	
コード例 #6
0
ファイル: export_all.php プロジェクト: rhertzog/lcs
function export_all_start($meta, $archive, $rub, $tables){

	// si pas de tables listees en post, utiliser la liste par defaut
	if (!$tables)
		list($tables,) = base_liste_table_for_dump(lister_tables_noexport());

	// en mode partiel, commencer par les articles et les rubriques
	// pour savoir quelles parties des autres tables sont a sauver
	if ($rub) {
		if ($t = array_search('spip_rubriques', $tables)) {
			unset($tables[$t]);
			array_unshift($tables, 'spip_rubriques');
		}
		if ($t = array_search('spip_articles', $tables)) {
			unset($tables[$t]);
			array_unshift($tables, 'spip_articles');
		}
		if ($t = array_search('spip_documents', $tables)) {
			unset($tables[$t]);
			array_push($tables, 'spip_documents');
		}
	}
	return $tables;
}
コード例 #7
0
ファイル: admin_tech.php プロジェクト: rhertzog/lcs
function options_avancees_dump(){
	list($tables,) = base_liste_table_for_dump(lister_tables_noexport());
	return controle_tables_en_base('export', $tables);
}