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

Correction de #954: bien gérer le critère '''doublons''' dans une table...

Correction de #954: bien gérer le critère '''doublons''' dans une table externe. La fonction '''trouver_def_table''' n'était pas utilisée à l'initialisation du compilateur c'était incohérent avec la suite. Mais il reste une dizaine d'occurrences du préfixe de table "'spip_'" qu'il faudrait revoir, il y a peut-être le même bug derrière.
parent 5e433f5a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -695,31 +695,29 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) { ...@@ -695,31 +695,29 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
// tableau des informations sur le squelette // tableau des informations sur le squelette
$descr = array('nom' => $nom, 'sourcefile' => $sourcefile); $descr = array('nom' => $nom, 'sourcefile' => $sourcefile);
// une boucle documents est conditionnee par tout le reste! // Initialiser les champs necessaires a la compilation
// et signaler une boucle documents (les autres influent dessus)
foreach($boucles as $id => $boucle) { foreach($boucles as $id => $boucle) {
$type = $boucle->type_requete; $type = $boucle->type_requete;
if ($type != 'boucle') { if ($type != 'boucle') {
$boucles[$id]->descr = &$descr; $table = isset($table_des_tables[$type])
if (isset($table_des_tables[$type])) { ? $table_des_tables[$type]
$boucles[$id]->id_table = $x = $table_des_tables[$type]; : $type;
$boucles[$id]->primary = $tables_principales["spip_$x"]['key']["PRIMARY KEY"]; $show = trouver_def_table($table, $boucles[$id]);
if ((!$boucles[$id]->jointures) if ($show) {
AND (is_array($x = $tables_jointures['spip_' . $x]))) $nom_table = $show[0];
$boucles[$id]->jointures = $x; $show = $show[1]['key'];
} else if (isset($tables_auxiliaires['spip_' .$type])) { $boucles[$id]->descr = &$descr;
// table auxiliaire $boucles[$id]->id_table = $table;
$boucles[$id]->id_table = $type; $boucles[$id]->primary = $show["PRIMARY KEY"];
$boucles[$id]->primary = $tables_auxiliaires['spip_' . $type]['key']["PRIMARY KEY"]; if ((!$boucles[$id]->jointures)
} else { AND (is_array($x = $tables_jointures[$nom_table])))
// table non Spip. $boucles[$id]->jointures = $x;
$boucles[$id]->id_table = $type; spip_log("j $nom_table $x $table");
$serveur = $boucle->sql_serveur; if (($type == 'documents') && $boucle->doublons)
$x = $tables_des_serveurs_sql[$serveur ? $serveur : 'localhost'][$type]['key']; { $descr['documents'] = true; }
$boucles[$id]->primary = ($x["PRIMARY KEY"] ? $x["PRIMARY KEY"] : $x["KEY"]); }
}
} }
if (($boucle->type_requete == 'documents') && $boucle->doublons)
{ $descr['documents'] = true; }
} }
// Commencer par reperer les boucles appelees explicitement // Commencer par reperer les boucles appelees explicitement
// car elles indexent les arguments de maniere derogatoire // car elles indexent les arguments de maniere derogatoire
......
...@@ -1048,7 +1048,8 @@ function trouver_def_table($nom, &$boucle) ...@@ -1048,7 +1048,8 @@ function trouver_def_table($nom, &$boucle)
} }
erreur_squelette(_T('zbug_table_inconnue', array('table' => $nom)), erreur_squelette(_T('zbug_table_inconnue', array('table' => $nom)),
$boucle->id_boucle); $boucle->id_boucle);
} return false;
}
// http://doc.spip.org/@trouver_champ_exterieur // http://doc.spip.org/@trouver_champ_exterieur
function trouver_champ_exterieur($cle, $joints, &$boucle, $checkarrivee = false) function trouver_champ_exterieur($cle, $joints, &$boucle, $checkarrivee = false)
......
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