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

*EXPOSER moins gourmand

* bug '' sur la clause GROUP BY (Yves Grenier, ced.)
parent fe6271c3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -57,7 +57,7 @@ function calculer_params($type, $params, $idb, &$boucles) { ...@@ -57,7 +57,7 @@ function calculer_params($type, $params, $idb, &$boucles) {
calcul_branche($hash_recherche_strict),"") . ")) calcul_branche($hash_recherche_strict),"") . "))
AS points'; AS points';
$boucle->where[] = "rec.". $table_primary[$type] . "=$id_field"; $boucle->where[] = "rec.". $table_primary[$type] . "=$id_field";
$boucle->group = "'$id_field'"; $boucle->group = $id_field;
$boucle->where[] = '" .' . 'calcul_mysql_in("rec.hash", $boucle->where[] = '" .' . 'calcul_mysql_in("rec.hash",
calcul_branche($hash_recherche),"") . "'; calcul_branche($hash_recherche),"") . "';
$boucles[$idb]->hash = true; $boucles[$idb]->hash = true;
...@@ -142,7 +142,7 @@ function calculer_params($type, $params, $idb, &$boucles) { ...@@ -142,7 +142,7 @@ function calculer_params($type, $params, $idb, &$boucles) {
$col_table = $s; $col_table = $s;
$boucle->from[] = "$col_table AS $col_table"; $boucle->from[] = "$col_table AS $col_table";
$boucle->where[] = "$id_field=$col_table." . $table_primary[$type]; $boucle->where[] = "$id_field=$col_table." . $table_primary[$type];
$boucle->group = "'$id_field'"; $boucle->group = $id_field;
$boucle->lien = true; $boucle->lien = true;
} }
// Cas particulier pour les raccourcis 'type_mot' et 'titre_mot' // Cas particulier pour les raccourcis 'type_mot' et 'titre_mot'
...@@ -159,7 +159,7 @@ function calculer_params($type, $params, $idb, &$boucles) { ...@@ -159,7 +159,7 @@ function calculer_params($type, $params, $idb, &$boucles) {
$boucle->from[] = 'mots AS mots'; $boucle->from[] = 'mots AS mots';
$boucle->where[] = "$id_field=lien_mot." . $table_primary[$type]; $boucle->where[] = "$id_field=lien_mot." . $table_primary[$type];
$boucle->where[] = 'lien_mot.id_mot=mots.id_mot'; $boucle->where[] = 'lien_mot.id_mot=mots.id_mot';
$boucle->group = "'$id_field'"; $boucle->group = $id_field;
$col_table = 'mots'; $col_table = 'mots';
$boucle->lien = true; $boucle->lien = true;
......
...@@ -133,10 +133,10 @@ function calcul_mysql_in($val, $valeurs, $tobeornotobe) ...@@ -133,10 +133,10 @@ function calcul_mysql_in($val, $valeurs, $tobeornotobe)
function calcul_exposer ($pile, $reference) { function calcul_exposer ($pile, $reference) {
static $hierarchie; static $hierarchie;
static $ref_precedente;
$md5 = md5(serialize($reference)); if ($reference<>$ref_precedente) {
$ref_precedente = $reference;
if (!$hierarchie[$md5]) {
if ($id = $reference['id_article']) if ($id = $reference['id_article'])
$base = 'articles'; $base = 'articles';
else if ($id = $reference['id_breve']) else if ($id = $reference['id_breve'])
...@@ -148,42 +148,39 @@ function calcul_exposer ($pile, $reference) { ...@@ -148,42 +148,39 @@ function calcul_exposer ($pile, $reference) {
else if ($id = $reference['id_secteur']) else if ($id = $reference['id_secteur'])
$base = 'rubriques'; $base = 'rubriques';
if (!$base) unset ($hierarchie);
$hierarchie[$md5] = '-'; if ($base) {
else {
if ($base != 'rubriques') { if ($base != 'rubriques') {
$hierarchie[$md5][$base][$id] = true; $hierarchie[$base][$id] = true;
$id_element = 'id_'.ereg_replace('s$', '', $base); $id_element = 'id_'.ereg_replace('s$', '', $base);
$s = spip_fetch_array(spip_query( $s = spip_fetch_array(spip_query(
"SELECT id_rubrique FROM spip_$base WHERE $id_element=$id")); "SELECT id_rubrique FROM spip_$base WHERE $id_element=$id"));
$id = $s['id_rubrique']; $id = $s['id_rubrique'];
} }
$hierarchie[$md5]['rubriques'][$id] = true; $hierarchie['rubriques'][$id] = true;
while (true) { while (true) {
$s = spip_fetch_array(spip_query( $s = spip_fetch_array(spip_query(
"SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id")); "SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id"));
if ($id = $s['id_parent']) if ($id = $s['id_parent'])
$hierarchie[$md5]['rubriques'][$id] = true; $hierarchie['rubriques'][$id] = true;
else else
break; break;
} }
} }
} }
if ($hierarchie[$md5] == '-') if ($id = $pile['id_article'])
return false; return $hierarchie['articles'][$id];
else if ($id = $pile['id_article'])
return $hierarchie[$md5]['articles'][$id];
else if ($id = $pile['id_breve']) else if ($id = $pile['id_breve'])
return $hierarchie[$md5]['breves'][$id]; return $hierarchie['breves'][$id];
else if ($id = $pile['id_syndic']) else if ($id = $pile['id_syndic'])
return $hierarchie[$md5]['syndic'][$id]; return $hierarchie['syndic'][$id];
else if ($id = $pile['id_rubrique']) else if ($id = $pile['id_rubrique'])
return $hierarchie[$md5]['rubriques'][$id]; return $hierarchie['rubriques'][$id];
else if ($id = $pile['id_secteur']) else if ($id = $pile['id_secteur'])
return $hierarchie[$md5]['rubriques'][$id]; return $hierarchie['rubriques'][$id];
} }
......
...@@ -32,7 +32,7 @@ function calculer_requete(&$boucle) { ...@@ -32,7 +32,7 @@ function calculer_requete(&$boucle) {
$boucle->where[] = "lien.id_auteur=$id_table.id_auteur"; $boucle->where[] = "lien.id_auteur=$id_table.id_auteur";
$boucle->where[] = 'lien.id_article=articles.id_article'; $boucle->where[] = 'lien.id_article=articles.id_article';
$boucle->where[] = "articles.statut='publie'"; $boucle->where[] = "articles.statut='publie'";
$boucle->group = "'$id_field'"; $boucle->group = "$id_field";
} }
// pas d'auteurs poubellises // pas d'auteurs poubellises
$boucle->where[] = "NOT($id_table.statut='5poubelle')"; $boucle->where[] = "NOT($id_table.statut='5poubelle')";
...@@ -60,7 +60,7 @@ function calculer_requete(&$boucle) { ...@@ -60,7 +60,7 @@ function calculer_requete(&$boucle) {
$boucle->where[] = "petitions.id_article=articles.id_article"; $boucle->where[] = "petitions.id_article=articles.id_article";
$boucle->where[] = "petitions.id_article=$id_table.id_article"; $boucle->where[] = "petitions.id_article=$id_table.id_article";
$boucle->where[] = "$id_table.statut='publie'"; $boucle->where[] = "$id_table.statut='publie'";
$boucle->group = "'$id_field'"; $boucle->group = "$id_field";
break; break;
case 'documents': case 'documents':
......
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