Changeset 12849 in spip-zone


Ignore:
Timestamp:
Jun 11, 2007, 1:48:25 PM (14 years ago)
Author:
cedric@…
Message:

"prendre les parametres dans le #ENV et non dans l'url
permettre la surcharge de ul,s,su,wf par criteres site,tri,section,recherche_section
un critere {groupbysite} pour grouper par site"

Location:
_plugins_/_test_/mnogosearch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_test_/mnogosearch/inc/mnogo_distant.php

    r3869 r12849  
    2626       
    2727
    28 function mnogo_getresults($recherche, $debut, $nombre){
     28function mnogo_getresults($recherche, $debut, $nombre, $c=false){
    2929        global $tables_principales;
    3030        global $mnogo_resultats_synthese;
    3131        global $mnogo_resultats;
    3232        $url = isset($GLOBALS['meta']['mnogo_url_search'])?$GLOBALS['meta']['mnogo_url_search']:"";
    33         $qs = mnogo_querystring($recherche,$debut,$nombre);
     33        $qs = mnogo_querystring($recherche,$debut,$nombre,$c);
    3434        $url .= (strpos($url,"?")!==FALSE)?"&$qs":"?$qs";
     35        $hashwere = hash_where($recherche, $c);
     36        $hash = mnogo_hash($recherche, $c);
     37
    3538
    3639        $arbre = array();
     
    4851                $resume = applatit_arbre($arbre['recherche'][0]['balise_MNOGO_RESUME_RESULTATS']);
    4952                // regarder si le resume etait la et a change
    50                 $res = spip_query("SELECT * FROM spip_mnogosearch_summary WHERE ".hash_where($recherche));
     53                $res = spip_query("SELECT * FROM spip_mnogosearch_summary WHERE $hashwere");
    5154                if ($row = spip_fetch_array($res)){
    5255                        $changed = false;
     
    5457                        $changed = $changed OR ($row['resume_resultats']!=$resume);
    5558                        if ($changed){
    56                                 spip_query("UPDATE FROM spip_mnogosearch SET valide='non' WHERE ".hash_where($recherche));
    57                                 spip_query("UPDATE FROM spip_mnogosearch_summary SET resume_resultats=".spip_abstract_quote($resume).", total=".spip_abstract_quote($total).", maj=NOW(), WHERE ".hash_where($recherche));
     59                                spip_query("UPDATE FROM spip_mnogosearch SET valide='non' WHERE $hashwere");
     60                                spip_query("UPDATE FROM spip_mnogosearch_summary SET resume_resultats=".spip_abstract_quote($resume).", total=".spip_abstract_quote($total).", maj=NOW(), WHERE $hashwere");
    5861                        }
    5962                }
    6063                else
    61                         spip_query("INSERT INTO spip_mnogosearch_summary SET resume_resultats=".spip_abstract_quote($resume).", total=".spip_abstract_quote($total).", maj=NOW(), hash=0x".mnogo_hash($recherche));
     64                        spip_query("INSERT INTO spip_mnogosearch_summary SET resume_resultats=".spip_abstract_quote($resume).", total=".spip_abstract_quote($total).", maj=NOW(), hash=0x$hash");
    6265
    6366                if (isset($arbre['recherche'][0]['resultats'][0]['resultat'][$dernier-$premier])){
    64                         $hashwere = hash_where();
    65                         $value['hash'] = "0x".mnogo_hash($recherche);
     67                        $value['hash'] = "0x".$hash;
    6668                        foreach ($arbre['recherche'][0]['resultats'][0]['resultat'] as $key=>$liste){
    6769                                $value['numero'] = $key+$premier;
  • _plugins_/_test_/mnogosearch/mnogo_mes_options.php

    r12543 r12849  
    99        $id_table = $boucle->id_table;
    1010        $boucle->from[$id_table] =  "spip_mnogosearch";
    11         $boucle->select[] = 'numero';
    12 
     11        $boucle->select[] = "$id_table.numero";
     12        $boucle->select[] = "$id_table.points";
     13        // Ne pas executer la requete en cas de hash vide
     14        $boucle->hash = "
     15        // RECHERCHE
     16        \$liste_args = \$Pile[0];
     17        \$liste_args['recherche'] = ".$boucle->modificateur['recherche'].";"
     18        . ((isset($boucle->modificateur['groupbysite']) && $boucle->modificateur['groupbysite'])?"
     19        \$liste_args['GroupBySite']='yes';
     20        ":"")
     21        . ((isset($boucle->modificateur['ul']))?"
     22        \$liste_args['site']= ".$boucle->modificateur['site'].";
     23        ":"")
     24        . ((isset($boucle->modificateur['tri']))?"
     25        \$liste_args['s']= ".$boucle->modificateur['tri'].";
     26        ":"")
     27        . ((isset($boucle->modificateur['section']))?"
     28        \$liste_args['su']= ".$boucle->modificateur['section'].";
     29        ":"")
     30        . ((isset($boucle->modificateur['recherche_sections']))?"
     31        \$liste_args['wf']= ".$boucle->modificateur['recherche_sections'].";
     32        ":"")
     33        . "mnogo_checkresults(\$liste_args['recherche'],\$debut_boucle,\$fin_boucle-\$debut_boucle+1, \$liste_args);
     34        \$rech_where = hash_where(\$liste_args['recherche'],\$liste_args);
     35                ";
    1336        $out = calculer_boucle($id_boucle, $boucles);
    1437        $out = str_replace("\$Numrows['$id_boucle']['compteur_boucle']++;","\$Numrows['$id_boucle']['compteur_boucle']=\$Pile[\$SP]['numero'];",$out);
     
    2144        \$Numrows['$id_boucle']['grand_total']=\$GLOBALS['mnogo_resultats_synthese']['MNOGO_TOTAL'];";
    2245       
    23         $out = $partition1."
    24         mnogo_checkresults(\$GLOBALS['recherche'],\$debut_boucle,\$fin_boucle-\$debut_boucle+1);
    25         ".str_replace($partition,$partition_cor,$out);
     46        $out = $partition1 . str_replace($partition,$partition_cor,$out);
    2647        return $out;
    2748}
     
    3556        $boucle = &$boucles[$idb];
    3657        if ($boucle->id_table=='mnogosearch'){
    37                 // Ne pas executer la requete en cas de hash vide
    38                 $boucle->hash = "
    39         // RECHERCHE
    40         \$rech_where = hash_where(\$GLOBALS['recherche']);
    41                 ";
     58                if (isset($crit->param[0]))
     59                        $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     60                else
     61                        $quoi = '@$Pile[0]["recherche"]';
     62                $boucle->modificateur['recherche'] = $quoi;
     63                // le hash sera mis dans la fonction boucle en tenant compte d'eventuels autres modificateurs
    4264                // et la recherche trouve
    4365                $boucle->where[] = '$rech_where';
     
    4870}
    4971
    50 function mnogo_querystring($recherche,$debut,$nombre){
     72function critere_groupbysite_dist($idb, &$boucles, $crit) {
     73        global $table_des_tables;
     74        $boucle = &$boucles[$idb];
     75        if ($boucle->id_table=='mnogosearch'){
     76                $boucle->modificateur['groupbysite'] = true;
     77        }
     78}
     79function critere_sur_le_site_dist($idb, &$boucles, $crit) {
     80        global $table_des_tables;
     81        $boucle = &$boucles[$idb];
     82        if ($boucle->id_table=='mnogosearch'){
     83                if (isset($crit->param[0])){
     84                        $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     85                        $boucle->modificateur['ul'] = $quoi;
     86                }
     87        }
     88}
     89function critere_tri_dist($idb, &$boucles, $crit) {
     90        global $table_des_tables;
     91        $boucle = &$boucles[$idb];
     92        if ($boucle->id_table=='mnogosearch'){
     93                if (isset($crit->param[0])){
     94                        $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     95                        $boucle->modificateur['tri'] = $quoi;
     96                }
     97        }
     98}
     99function critere_section_dist($idb, &$boucles, $crit) {
     100        global $table_des_tables;
     101        $boucle = &$boucles[$idb];
     102        if ($boucle->id_table=='mnogosearch'){
     103                if (isset($crit->param[0])){
     104                        $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     105                        $boucle->modificateur['section'] = $quoi;
     106                }
     107        }
     108}
     109function critere_recherche_sections_dist($idb, &$boucles, $crit) {
     110        global $table_des_tables;
     111        $boucle = &$boucles[$idb];
     112        if ($boucle->id_table=='mnogosearch'){
     113                if (isset($crit->param[0])){
     114                        $quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
     115                        $boucle->modificateur['recherche_sections'] = $quoi;
     116                }
     117        }
     118}
     119
     120
     121function mnogo_querystring($recherche,$debut,$nombre, $c=false){
    51122        $default_qs=array('q'=>'','m'=>'bool','wm'=>'wrd','sp'=>1,'sy'=>1,'wf'=>'2221','type'=>'','ul'=>'','fmt'=>'xml','np'=>0,'ps'=>10,'GroupBySite'=>'no');
    52123        $key_translate = array('recherche'=>'q','site'=>'ul');
     
    54125                $default_qs = $GLOBALS['mnogosearch_default_qs'];
    55126
    56         foreach($_REQUEST as $key=>$value){
     127        $key_translate = array_flip($key_translate);
     128        foreach($default_qs as $key=>$value){
     129                $k = $key;
    57130                if (isset($key_translate[$key]))
    58                         $key = $key_translate[$key];
    59                 if (isset($default_qs[$key]))
     131                        $k = $key_translate[$key];
     132                if (($value = _request($k,$c))!==NULL)
    60133                        $default_qs[$key] = $value;
    61134        }
     
    83156}
    84157
    85 function mnogo_hash($recherche=NULL){
    86         if ($recherche==NULL) $recherche = _request('recherche');
    87         $query = mnogo_querystring($recherche, 0,10);
     158function mnogo_hash($recherche=NULL, $c=false){
     159        if ($recherche==NULL) $recherche = _request('recherche',$c);
     160        $query = mnogo_querystring($recherche, 0,10, $c);
    88161        $h = substr(md5($query), 0, 16);
    89162        return $h;
    90163}
    91 function hash_where($recherche=NULL){
    92         $h = mnogo_hash($recherche);
     164function hash_where($recherche=NULL, $c=false){
     165        $h = mnogo_hash($recherche, $c);
    93166       
    94167        // Attention en MySQL 3.x il faut passer par HEX(hash)
     
    104177}
    105178
    106 function mnogo_checkresults($recherche, $debut, $nombre){
     179function mnogo_checkresults($recherche, $debut, $nombre, $c=false){
    107180        if ($recherche!==NULL){
    108                 $res = spip_query("SELECT * FROM spip_mnogosearch_summary WHERE ".hash_where($recherche));
     181                $hashwhere = hash_where($recherche, $c);
     182                $res = spip_query("SELECT * FROM spip_mnogosearch_summary WHERE $hashwhere");
    109183                // verifier que cette recherche a deja ete faite
    110184                $refresh = true;
     
    116190                if (!$refresh){
    117191                        $res = spip_query("SELECT numero FROM spip_mnogosearch WHERE numero>=".spip_abstract_quote($debut)
    118                         ." AND numero<=".spip_abstract_quote(min($debut+$nombre,$row['total']))." AND valide='oui' AND ".hash_where($recherche));
     192                        ." AND numero<=".spip_abstract_quote(min($debut+$nombre,$row['total']))." AND valide='oui' AND $hashwhere");
    119193                        if (spip_num_rows($res)<$nombre)
    120194                                $refresh = true;
     
    122196                if ($refresh){
    123197                        include_spip('inc/mnogo_distant');
    124                         mnogo_getresults($recherche,$debut,$nombre);
    125                         $res = spip_query("SELECT * FROM spip_mnogosearch_summary WHERE ".hash_where($recherche));
     198                        mnogo_getresults($recherche,$debut,$nombre, $c);
     199                        $res = spip_query("SELECT * FROM spip_mnogosearch_summary WHERE $hashwhere");
    126200                        $row = spip_fetch_array($res);
    127201                }
  • _plugins_/_test_/mnogosearch/recherche_mnogo.html

    r3869 r12849  
    5151                                                <BOUCLE_test(MNOGOSEARCH) {recherche} {pagination}>
    5252                                                <li>
    53                                                 <h3 class="titre">#NUMERO - <a href="#URL">#TITRE</a></h3>
     53                                                <h3 class="titre">#NUMERO - <a href="#URL">#TITRE</a> ##POINTS</h3>
    5454                                                <small>[(#DATE|affdate)] - #MIME_TYPE [(#TAILLE|taille_en_octets)] [- <a href='#CONFIG{mnogo_url_search}(#CACHE_URL)'>(cache)</a>]</small>
    5555                                                <div class="texte">#DESCRIPTIF</div>
Note: See TracChangeset for help on using the changeset viewer.