Skip to content
Extraits de code Groupes Projets
Valider a80e3c00 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

report de [14078] [14833] [14834] [14836]

parent af4bf26d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -274,16 +274,23 @@ function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serve ...@@ -274,16 +274,23 @@ function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serve
array_merge($options, array('jointures' => false)) array_merge($options, array('jointures' => false))
) )
) { ) {
foreach ($joints as $jtable => $jj) { foreach ($joints as $table_liee => $ids_trouves) {
$it = id_table_objet($table); if (!$rechercher_joints = charger_fonction("rechercher_joints_${table}_${table_liee}","inc",true)){
$ij = id_table_objet($jtable); $cle_depart = id_table_objet($table);
if ($jtable == 'document') $cle_arrivee = id_table_objet($table_liee);
$s = sql_select("id_objet AS $it, $ij", "spip_documents_liens", array("objet='$table'",sql_in('id_'.${jtable}, array_keys($jj))), '','','','',$serveur); $table_sql = preg_replace('/^spip_/', '', table_objet_sql($table));
$table_liee_sql = preg_replace('/^spip_/', '', table_objet_sql($table_liee));
if ($table_liee == 'document')
$s = sql_select("id_objet as $cle_depart, $cle_arrivee", "spip_documents_liens", array("objet='$table'",sql_in('id_'.${table_liee}, array_keys($ids_trouves))), '','','','',$serveur);
else
$s = sql_select("$cle_depart,$cle_arrivee", "spip_${table_liee_sql}_${table_sql}", sql_in('id_'.${table_liee}, array_keys($ids_trouves)), '','','','',$serveur);
}
else else
$s = sql_select("$it,$ij", "spip_${jtable}s_${table}s", sql_in('id_'.${jtable}, array_keys($jj)), '','','','',$serveur); list($cle_depart,$cle_arrivee,$s) = $rechercher_joints($table,$table_liee,array_keys($ids_trouves), $serveur);
while ($t = sql_fetch($s)) { while ($t = sql_fetch($s)) {
$id = $t[$it]; $id = $t[$cle_depart];
$joint = $jj[$t[$ij]]; $joint = $ids_trouves[$t[$cle_arrivee]];
if (!isset($results[$table])) if (!isset($results[$table]))
$results[$table] = array(); $results[$table] = array();
if (!isset($results[$table][$id])) if (!isset($results[$table][$id]))
...@@ -292,10 +299,10 @@ function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serve ...@@ -292,10 +299,10 @@ function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serve
$results[$table][$id]['score'] += $joint['score']; $results[$table][$id]['score'] += $joint['score'];
if ($joint['champs']) if ($joint['champs'])
foreach($joint['champs'] as $c => $val) foreach($joint['champs'] as $c => $val)
$results[$table][$id]['champs'][$jtable.'.'.$c] = $val; $results[$table][$id]['champs'][$table_liee.'.'.$c] = $val;
if ($joint['matches']) if ($joint['matches'])
foreach($joint['matches'] as $c => $val) foreach($joint['matches'] as $c => $val)
$results[$table][$id]['matches'][$jtable.'.'.$c] = $val; $results[$table][$id]['matches'][$table_liee.'.'.$c] = $val;
} }
} }
} }
......
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