Changeset 96150 in spip-zone


Ignore:
Timestamp:
Mar 22, 2016, 4:35:02 PM (3 years ago)
Author:
cedric@…
Message:

Report de r78483 : bugfix : Le critère {branche} ne prenait pas en compte correctement les jointures décomposées id_objet,objet (code qui n'avait pas suivi celui du core) et échouait sur une boucle (MOTS) (même si c'est un peu tordu)

Location:
_plugins_/polyhierarchie/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/polyhierarchie/trunk

  • _plugins_/polyhierarchie/trunk/polyhier_fonctions.php

    r96147 r96150  
    191191       
    192192        //Trouver une jointure
     193        $champ = "id_rubrique";
    193194        $desc = $boucle->show;
    194195        //Seulement si necessaire
    195         if (!array_key_exists('id_rubrique', $desc['field'])) {
    196                 $cle = trouver_jointure_champ('id_rubrique', $boucle);
     196        if (!array_key_exists($champ, $desc['field'])){
     197                $cle = trouver_jointure_champ($champ, $boucle);
     198                $trouver_table = charger_fonction("trouver_table", "base");
     199                $desc = $trouver_table($boucle->from[$cle]);
     200                if (count(trouver_champs_decomposes($champ, $desc))>1){
     201                        $decompose = decompose_champ_id_objet($champ);
     202                        $champ = array_shift($decompose);
     203                        $boucle->where[] = array("'='", _q($cle.".".reset($decompose)), '"'.sql_quote(end($decompose)).'"');
     204                }
    197205        }
    198206        else {
    199207                $cle = $boucle->id_table;
    200208        }
    201        
     209
    202210        $where = array();
    203        
     211
     212        $c = "sql_in('$cle" . ".$champ', \$b = calcul_branche_polyhier_in($arg,".($tous===true?'true':"'directs'").")"
     213          . ($not ? ", 'NOT'" : '') . ")";
     214        $where[] = $c;
     215
     216
    204217        // On construit en avance la liste des rubriques
    205218        $boucle->hash .= "
Note: See TracChangeset for help on using the changeset viewer.