Skip to content
Extraits de code Groupes Projets
Valider 973be349 rédigé par esj's avatar esj
Parcourir les fichiers

Pourquoi faire simple quand on peut faire compliqué: depuis la nuit des temps...

Pourquoi faire simple quand on peut faire compliqué: depuis la nuit des temps SPIP faisait une requete mysql_field_name pour exporter une table alors que le spip_fetch_array qui suit contient aussi ces informations. Et un peu plus de lisibilité.
parent ab8f54ab
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -142,8 +142,6 @@ function exec_export_all_dist()
echo "<div style='text-align: left'>\n";
$etape = 1;
foreach($tables_for_dump as $table){
$liens = $tables_for_link[$table];
if ($etape_actuelle <= $etape) {
$r = spip_query("SELECT COUNT(*) FROM $table");
$r = spip_fetch_array($r, SPIP_NUM);
......@@ -151,14 +149,13 @@ function exec_export_all_dist()
echo "\n<br /><strong>",$etape, '. ', $table,"</strong> ";
if (!$r) echo _T('texte_vide');
else {
$cpt = export_objets($table, $liens, $etape, $sous_etape,$dir, $archive, $gz, $r);
$filetable = $dir . $archive . '_' . $etape;
ramasse_parties($dir . $archive . ".$etape", $filetable, $cpt);
$liens = $tables_for_link[$table];
export_objets($table, $liens, $etape, $sous_etape,$dir, $archive, $gz, $r);
}
if ($GLOBALS['flag_ob_flush']) ob_flush();
flush();
$etape++;
$sous_etape = 0;
$status_dump = "$gz::$archive::" . $etape . "::0";
ecrire_meta("status_dump", $status_dump,'non');
}
}
echo "</div>\n";
......
......@@ -61,8 +61,9 @@ define('_EXPORT_TRANCHES_LIMITE', 400);
// La constante ci-dessus determine la taille des tranches,
// chaque tranche etant copiee immediatement dans un fichier
// et son numero memorisee dans le serveur SQL.
// En cas d'abandon sur Time-out, le travail pourra ainsi avancer
// charge a l'appelant de coller tous les morceaux de 1 a N
// En cas d'abandon sur Time-out, le travail pourra ainsi avancer.
// Au final, on regroupe les tranches en un seul fichier
// et on memorise dans le serveur qu'on va passer a la table suivante.
// http://doc.spip.org/@export_objets
function export_objets($table, $liens, $etape, $cpt, $dir, $archive, $gz, $total) {
......@@ -73,9 +74,6 @@ function export_objets($table, $liens, $etape, $cpt, $dir, $archive, $gz, $total
while (1){ // on ne connait pas le nb de paquets d'avance
if ($GLOBALS['flag_ob_flush']) ob_flush();
flush();
$string = build_while($debut, $table);
// attention $string vide ne suffit pas a sortir
// car les admins restreints peuvent parcourir
......@@ -95,9 +93,14 @@ function export_objets($table, $liens, $etape, $cpt, $dir, $archive, $gz, $total
// a la relecture on en profitera pour mettre le cache a jour
$status_dump = "$gz::$archive::$etape::$cpt";
ecrire_meta("status_dump", $status_dump,'non');
}
echo " $total.";
return $cpt;
$filetable = $dir . $archive . '_' . $etape;
ramasse_parties($dir . $archive . ".$etape", $filetable, $cpt);
$status_dump = "$gz::$archive::" . ($etape+1) . "::0";
ecrire_meta("status_dump", $status_dump,'non');
}
// Construit la version xml des champs d'une table
......@@ -109,27 +112,16 @@ function build_while($debut, $table) {
static $table_fields=array();
$result = spip_query("SELECT * FROM $table LIMIT $debut," . _EXPORT_TRANCHES_LIMITE);
// Recuperer les noms des champs
// Ces infos sont donnees par le abstract_showtable
// les instructions natives mysql ne devraient pas apparaitre ici
if (!isset($table_fields[$table])){
$nfields = mysql_num_fields($result);
for ($i = 0; $i < $nfields; ++$i)
$table_fields[$table][$i] = mysql_field_name($result, $i);
} else $nfields = count($table_fields[$table]);
$string = '';
$all = $connect_toutes_rubriques
||(!in_array('id_rubrique',$table_fields[$table]));
while ($row = spip_fetch_array($result,SPIP_ASSOC)) {
if ((!isset($row['impt']) OR $row['impt']=='oui')
AND ($all OR autoriser('publierdans','rubrique',$row['id_rubrique']))) {
AND ($connect_toutes_rubriques
OR !isset($row['id_rubrique'])
OR autoriser('publierdans','rubrique',$row['id_rubrique']))) {
$attributs = "";
$string .= "<$table$attributs>\n";
for ($i = 0; $i < $nfields; ++$i) {
$k = $table_fields[$table][$i];
foreach ($row as $k => $v) {
$string .= "<$k>" . text_to_xml($row[$k]) . "</$k>\n";
}
$string .= "</$table>\n\n";
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter