Changeset 42244 in spip-zone


Ignore:
Timestamp:
Nov 12, 2010, 9:29:46 PM (10 years ago)
Author:
eric@…
Message:

On consolide les scores lors de la recherche et on tri par score décroissant les résultats
Il restera à paramétrer une option de tri (score, alpha, version ?)

Location:
_plugins_/svp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/svp/formulaires/charger_plugin.html

    r42214 r42244  
    4040                                                        </li>
    4141                                                        <li class="editer_mode obligatoire[(#ENV{erreurs}|table_valeur{mode}|oui) erreur]">
    42                                                                 <label for="mode">Mode</label>
     42                                                                <label for="mode">Mode (debug)</label>
    4343                                                                [<span class="erreur_message">(#ENV{erreurs}|table_valeur{mode})</span>]
    4444                                                                <select name="mode" id="mode">
  • _plugins_/svp/inc/svp_depoter.php

    r42214 r42244  
    583583        // -- On obtient une liste d'id de plugins et d'id de paquets
    584584        $resultats = recherche_en_base($phrase, $tables, $options);
     585        // -- On prepare le tableau des scores avec les paquets trouves par la recherche
     586        $scores = array();
     587        foreach ($resultats['paquet'] as $_id => $_score) {
     588                $scores[$_id] = intval($resultats['paquet'][$_id]['score']);
     589        }
    585590        // -- On convertit les id de plugins en id de paquets
    586591        $ids_plugin = array_keys($resultats['plugin']);
    587592        $where[] = sql_in('id_plugin', $ids_plugin);
    588         $ids_paquets = sql_allfetsel('id_paquet', 'spip_paquets', $where);
    589         $ids_paquets = array_map('reset', $ids_paquets);
    590         $ids_paquets = array_map('intval', $ids_paquets);
    591         // -- On merge les deux tableaux de paquets sans doublon
    592         $ids_paquets = array_unique(array_merge(array_keys($resultats['paquet']), $ids_paquets));
    593         sort($ids_paquets);
     593        $ids = sql_allfetsel('id_paquet, id_plugin', 'spip_paquets', $where);
     594        // -- On merge les deux tableaux de paquets sans doublon en mettant a jour un tableau des scores
     595        $ids_paquets = array_keys($resultats['paquet']);
     596        foreach ($ids as $_ids) {
     597                $id_paquet = intval($_ids['id_paquet']);
     598                $id_plugin = intval($_ids['id_plugin']);
     599                if (array_search($id_paquet, $ids_paquets) === false) {
     600                        $ids_paquets[] = $id_paquet;
     601                        $scores[$id_paquet] = intval($resultats['plugin'][$id_plugin]['score']);
     602                }
     603                else {
     604                        $scores[$id_paquet] = intval($resultats['paquet'][$id_paquet]['score'])
     605                                                                + intval($resultats['plugin'][$id_plugin]['score']);
     606                }
     607        }
    594608
    595609        // Maintenant, on continue la recherche en appliquant, sur la liste des id de paquets,
     
    624638                                $paquets['slogan'] = $slogan;
    625639                                $paquets['description'] = $description;
    626                                 $paquets['score'] = $score;
     640                                $paquets['score'] = $scores[intval($paquets['id_paquet'])];
    627641                                if ($doublons)
    628642                                        // ajout systematique du paquet
     
    640654                }
    641655        }
     656       
     657        // On trie les tableau par score décroissant
     658        if ($doublons)
     659                usort($plugins, 'svp_trier_par_score');
     660        else
     661                uasort($plugins, 'svp_trier_par_score');
    642662
    643663        return $plugins;
     664}
     665
     666
     667function svp_trier_par_score($p1, $p2){
     668       
     669        if ($p1['score'] == $p2['score'])
     670                $retour = 0;
     671        else
     672                $retour = ($p1['score'] < $p2['score']) ? 1 : -1;
     673
     674        return $retour;
    644675}
    645676
  • _plugins_/svp/modeles/charger_plugin.html

    r42182 r42244  
    1 <li class="item"[ id="(#ENV{prefixe}|strtolower)-#ENV{iteration}"]>
     1<li class="item"[ id="(#ENV{prefixe}|strtolower)-#ENV{iteration}-#ENV{score}"]>
    22        [(#REM) <!-- Icone de telechargement -->]
    33        <div class="download">
Note: See TracChangeset for help on using the changeset viewer.