Changeset 78483 in spip-zone


Ignore:
Timestamp:
Nov 14, 2013, 8:34:14 AM (6 years ago)
Author:
cedric@…
Message:

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/branches/v2.0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/polyhierarchie/branches/v2.0/paquet.xml

    r78269 r78483  
    22        prefix="polyhier"
    33        categorie="navigation"
    4         version="2.0.6"
     4        version="2.0.7"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
  • _plugins_/polyhierarchie/branches/v2.0/polyhier_fonctions.php

    r62825 r78483  
    181181
    182182        //Trouver une jointure
     183        $champ = "id_rubrique";
    183184        $desc = $boucle->show;
    184185        //Seulement si necessaire
    185         if (!array_key_exists('id_rubrique', $desc['field'])) {
    186                 $cle = trouver_jointure_champ('id_rubrique', $boucle);
     186        if (!array_key_exists($champ, $desc['field'])){
     187                $cle = trouver_jointure_champ($champ, $boucle);
     188                $trouver_table = charger_fonction("trouver_table", "base");
     189                $desc = $trouver_table($boucle->from[$cle]);
     190                if (count(trouver_champs_decomposes($champ, $desc))>1){
     191                        $decompose = decompose_champ_id_objet($champ);
     192                        $champ = array_shift($decompose);
     193                        $boucle->where[] = array("'='", _q($cle.".".reset($decompose)), '"'.sql_quote(end($decompose)).'"');
     194                }
    187195        }
    188196        else $cle = $boucle->id_table;
    189197
    190         $c = "sql_in('$cle" . ".id_rubrique', \$b = calcul_branche_polyhier_in($arg,".($tous===true?'true':"'directs'").")"
     198
     199        $c = "sql_in('$cle" . ".$champ', \$b = calcul_branche_polyhier_in($arg,".($tous===true?'true':"'directs'").")"
    191200          . ($not ? ", 'NOT'" : '') . ")";
    192201        $where[] = $c;
Note: See TracChangeset for help on using the changeset viewer.