X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fbase%2Fdump.php;fp=www%2Fecrire%2Fbase%2Fdump.php;h=c4e8fb348e16906c8c8bff021843cf14590348a4;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/base/dump.php b/www/ecrire/base/dump.php new file mode 100644 index 0000000..c4e8fb3 --- /dev/null +++ b/www/ecrire/base/dump.php @@ -0,0 +1,199 @@ + $tables_principales + * @global $tables_auxiliaires + * @global $tables_jointures + * @param array $exclude_tables + * @return array + */ +function base_liste_table_for_dump($exclude_tables = array()){ + $tables_for_dump = array(); + $tables_pointees = array(); + global $tables_principales; + global $tables_auxiliaires; + global $tables_jointures; + + // on construit un index des tables de liens + // pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees + $tables_for_link = array(); + foreach($tables_jointures as $table => $liste_relations) + if (is_array($liste_relations)) + { + $nom = $table; + if (!isset($tables_auxiliaires[$nom])&&!isset($tables_principales[$nom])) + $nom = "spip_$table"; + if (isset($tables_auxiliaires[$nom])||isset($tables_principales[$nom])){ + foreach($liste_relations as $link_table){ + if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/){ + $tables_for_link[$link_table][] = $nom; + } + else if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/){ + $tables_for_link["spip_$link_table"][] = $nom; + } + } + } + } + + $liste_tables = array_merge(array_keys($tables_principales),array_keys($tables_auxiliaires)); + foreach($liste_tables as $table){ + // $name = preg_replace("{^spip_}","",$table); + if ( !isset($tables_pointees[$table]) + && !in_array($table,$exclude_tables) + && !isset($tables_for_link[$table])){ + $tables_for_dump[] = $table; + $tables_pointees[$table] = 1; + } + } + foreach ($tables_for_link as $link_table =>$liste){ + $connecte = true; + foreach($liste as $connect_table) + if (!in_array($connect_table,$tables_for_dump)) + $connecte = false; + if ($connecte) + # on ajoute les liaisons en premier + # si une restauration est interrompue, + # cela se verra mieux si il manque des objets + # que des liens + array_unshift($tables_for_dump,$link_table); + } + return array($tables_for_dump, $tables_for_link); +} + +?>