$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); } ?>