Changeset 86148 in spip-zone for _plugins_/fulltext


Ignore:
Timestamp:
Nov 18, 2014, 3:13:00 PM (6 years ago)
Author:
nicolas.dorigny@…
Message:

Pour les recherches en jointures, tester systématiquement si la table spip_${jtable}s_${table}s existe.
Dans la plupart des cas, elle n'existe effectivement pas.

Location:
_plugins_/fulltext/branches/v1
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fulltext/branches/v1/inc/recherche_to_array.php

    r82959 r86148  
    153153                                        $subscore = "MATCH(".implode($mkeys,',').") AGAINST ($p".($boolean ? ' IN BOOLEAN MODE':'').")";
    154154
    155                                         if (in_array($jtable, $lesliens))
     155                                        if (in_array($jtable, $lesliens)) {
    156156                                                $join = "
    157157                                                LEFT JOIN (
     
    164164                                                 ) AS o$i ON o$i.id_objet=t.$_id_table
    165165                                                ";
    166                                         else
     166                                        } else if(in_array("spip_${jtable}s_${table}s", array_keys(lister_tables_spip()))) {
    167167                                                $join = "
    168168                                                LEFT JOIN (
     
    174174                                                 ) AS o$i ON o$i.$_id_table=t.$_id_table
    175175                                                ";
     176                                        } else {
     177                                                $join = "
     178                                                , (select 0 as score) AS o$i
     179                                                ";
     180                                        }
    176181                                        #var_dump($join);
    177182                                        $from .= $join;
     
    310315                        $ij =  id_table_objet($jtable);
    311316                        $lesliens = recherche_tables_liens();
    312                         if (in_array($jtable, $lesliens))
    313                                 $s = sql_select("id_objet as $it", "spip_${jtable}s_liens", array("objet='$table'",sql_in('id_'.${jtable}, array_keys($jj))), '','','','',$serveur);
    314                         else
    315                                 $s = sql_select("$it,$ij", "spip_${jtable}s_${table}s", sql_in('id_'.${jtable}, array_keys($jj)), '','','','',$serveur);
    316                         while ($t = sql_fetch($s)) {
    317                                 $id = $t[$it];
    318                                 $joint = $jj[$t[$ij]];
    319                                 if (!isset($r))
    320                                         $r = array();
    321                                 if (!isset($r[$id]))
    322                                         $r[$id] = array();
    323                                 if ($joint['score'])
    324                                         $r[$id]['score'] += $joint['score'];
    325                                 if ($joint['champs'])
    326                                 foreach($joint['champs'] as $c => $val)
    327                                         $r[$id]['champs'][$jtable.'.'.$c] = $val;
    328                                 if ($joint['matches'])
    329                                 foreach($joint['matches'] as $c => $val)
    330                                         $r[$id]['matches'][$jtable.'.'.$c] = $val;
    331                         }
     317                        $s = null;
     318                        if (in_array($jtable, $lesliens)) {
     319                                $s = sql_select("id_objet as $it", "spip_${jtable}s_liens", array("objet='$table'", sql_in('id_' . ${jtable}, array_keys($jj))), '', '', '', '', $serveur);
     320                        } else if(in_array("spip_${jtable}s_${table}s", array_keys(lister_tables_spip()))) {
     321                                $s = sql_select("$it,$ij", "spip_${jtable}s_${table}s", sql_in('id_' . ${jtable}, array_keys($jj)), '', '', '', '', $serveur);
     322                        }
     323                        if($s) {
     324                                while( $t = sql_fetch($s) ) {
     325                                        $id     = $t[$it];
     326                                        $joint = $jj[$t[$ij]];
     327                                        if( !isset($r) )
     328                                                $r = array();
     329                                        if( !isset($r[$id]) )
     330                                                $r[$id] = array();
     331                                        if( $joint['score'] )
     332                                                $r[$id]['score'] += $joint['score'];
     333                                        if( $joint['champs'] )
     334                                                foreach( $joint['champs'] as $c => $val )
     335                                                        $r[$id]['champs'][$jtable . '.' . $c] = $val;
     336                                        if( $joint['matches'] )
     337                                                foreach( $joint['matches'] as $c => $val )
     338                                                        $r[$id]['matches'][$jtable . '.' . $c] = $val;
     339                                }
     340                        }
     341                       
     342                               
    332343                }
    333344        }
  • _plugins_/fulltext/branches/v1/paquet.xml

    r84587 r86148  
    22        prefix="fulltext"
    33        categorie="navigation"
    4         version="0.8.2"
     4        version="0.8.3"
    55        etat="test"
    66        compatibilite="[2.0.0;3.0.*]"
  • _plugins_/fulltext/branches/v1/plugin.xml

    r84587 r86148  
    88        </slogan>
    99        <auteur>Fil, Gael Chareyre</auteur>
    10         <version>0.8.2</version>
     10        <version>0.8.3</version>
    1111        <version_base>0.2</version_base>
    1212        <etat>test</etat>
Note: See TracChangeset for help on using the changeset viewer.