Changeset 82620 in spip-zone


Ignore:
Timestamp:
May 20, 2014, 1:18:40 PM (5 years ago)
Author:
fil@…
Message:

renommer select_filter en filter, ce qui resoud le bug sous SPIP 2.1 et devrait aussi le resoudre chez luis

Location:
_plugins_/indexer/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/content/sphinx.html

    r82618 r82620  
    3939        {pages #DEBUT_DOCUMENTS}
    4040
    41         {select_filter #ENV{annee},  'YEAR(date) = @valeur' }
    42         {select_filter #ENV{tag},    'IN(properties.tags, @valeurs)',    'LENGTH(properties.tags) = 0'}
    43         {select_filter #ENV{auteur}, 'IN(properties.authors, @valeurs)', 'LENGTH(properties.authors) = 0'}
     41        {filter #ENV{annee},  'YEAR(date) = @valeur' }
     42        {filter #ENV{tag},    'IN(properties.tags, @valeurs)',    'LENGTH(properties.tags) = 0'}
     43        {filter #ENV{auteur}, 'IN(properties.authors, @valeurs)', 'LENGTH(properties.authors) = 0'}
    4444
    4545        {par #GET{tri}}{inverse #GET{sens_tri}}
  • _plugins_/indexer/trunk/doc/boucle_sphinx.md

    r82616 r82620  
    177177----
    178178
    179     {select_filter #TRUC, select si contenu, select si '-'}
    180     {select_filter #ENV{auteur}, 'IN(properties.authors, @valeurs)', 'LENGTH(properties.authors) = 0'}
    181     {select_filter #ENV{tag}, 'IN(properties.tag, @valeurs)', 'LENGTH(properties.tags) = 0'}
    182     {select_filter #ENV{annee}, 'YEAR(date) = @valeur' }
     179    {filter #TRUC, select si contenu, select si '-'}
     180    {filter #ENV{auteur}, 'IN(properties.authors, @valeurs)', 'LENGTH(properties.authors) = 0'}
     181    {filter #ENV{tag}, 'IN(properties.tag, @valeurs)', 'LENGTH(properties.tags) = 0'}
     182    {filter #ENV{annee}, 'YEAR(date) = @valeur' }
    183183   
    184184   
  • _plugins_/indexer/trunk/iterateur/sphinx.php

    r82618 r82620  
    88 * @package SPIP\Indexer\Iterateur\Sphinx
    99**/
     10
     11include_spip('iterateur/data');
    1012
    1113/**
     
    9092
    9193        /**
    92          * Limites demandés de la requête en cas de pagination
    93          * @var array(debut, nombre)
    94          */
    95         protected $pagination_limit = array();
    96 
    97         /**
    9894         * Constructeur
    9995         *
     
    109105                        'snippet'   => array(),
    110106                        'facet'     => array(),
    111                         'select_filter' => array(),
     107                        'filter' => array(),
    112108                );
    113109
     
    126122                $this->setFacet($this->command['facet']);
    127123
    128                 $this->setSelectFilter($this->command['select_filter']);
     124                $this->setSelectFilter($this->command['filter']);
    129125
    130126                $this->setSnippet($this->command);
     
    145141                // decaler les docs en fonction de la pagination demandee
    146142                if (is_array($result['query']['docs'])
    147                 AND $pagination = $this->getPaginationLimit()) {
    148                         list($debut) = array_map('intval', $pagination);
     143                AND $pagination = $this->queryApi->limit) {
     144                        list($debut) = array_map('intval',explode(',', $pagination));
    149145
    150146                        $result['query']['docs'] = array_pad($result['query']['docs'], - count($result['query']['docs']) - $debut, null);
     
    254250        public function setPagination($pagination) {
    255251                # {pages #DEBUT_DOCUMENTS, 20}
    256                 if (is_array($pagination) and $pagination) {
    257                         $nombre = 20;
     252                if (is_array($pagination)) {
    258253                        $debut = intval($pagination[0]);
    259                         if (isset($pagination[1])) {
     254                        if (isset($pagination[1]))
    260255                                $nombre = intval($pagination[1]);
    261                         }
    262                         $this->setPaginationLimit($debut, $nombre);
     256                        else
     257                                $nombre = 20;
     258                        $this->queryApi
     259                                ->limit("$debut,$nombre");
    263260                        return true;
    264261                }
    265         }
    266 
    267         /**
    268          * Affecte une limite à la requête Sphinx (et sauve ses bornes)
    269          *
    270          * @param int Début
    271          * @param int Nombre de résultats
    272         **/
    273         public function setPaginationLimit($debut, $nombre) {
    274                 $this->pagination_limit = array($debut, $nombre);
    275                 $this->queryApi->limit("$debut,$nombre");
    276         }
    277 
    278         /**
    279          * Retourne les limites de pagination précédemment sauvées
    280          *
    281          * @param int Début
    282          * @param int Nombre de résultats
    283         **/
    284         public function getPaginationLimit() {
    285                 return $this->pagination_limit;
    286                 # return explode(',', $this->queryApi->getLimit());
    287262        }
    288263
     
    435410
    436411                        // préparer les données
    437                         $sans = ($valeur == '-'); // si aucun demandé
    438412                        $valeur = $this->quote($valeur);
    439413                        $valeurs = array_map(array($this, 'quote'), $valeurs);
    440414                        $valeurs = implode(', ', $valeurs);
    441415
    442                         if (($sans == '-') and $filter['select_null']) {
     416                        if (($valeur == '-') and $filter['select_null']) {
    443417                                $f = $filter['select_null'];
    444418                        } elseif ($filter['select_oui']) {
     
    448422                        // remplacer d'abord le pluriel !
    449423                        $f = str_replace(array('@valeurs', '@valeur'), array($valeurs, $valeur), $f);
    450 
    451424                        $this->queryApi->select("($f) AS f$nb");
    452425                        $this->queryApi->where("f$nb = 1");
     
    609582 * @param object $crit
    610583 */
    611 function critere_SPHINX_select_filter_dist($idb, &$boucles, $crit) {
     584function critere_SPHINX_filter_dist($idb, &$boucles, $crit) {
    612585        $boucle = &$boucles[$idb];
    613586        // critere multiple
    614         $boucle->hash .= "\n\tif (!isset(\$sfilter_init)) { \$command['select_filter'] = array(); \$sfilter_init = true; }\n";
    615 
    616         $boucle->hash .= "\t\$command['select_filter'][] = [\n"
     587        $boucle->hash .= "\n\tif (!isset(\$sfilter_init)) { \$command['filter'] = array(); \$sfilter_init = true; }\n";
     588
     589        $boucle->hash .= "\t\$command['filter'][] = array(\n"
    617590                . (isset($crit->param[0]) ? "\t\t'valeur'      => ". calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent) . ",\n" : '')
    618591                . (isset($crit->param[1]) ? "\t\t'select_oui'  => ". calculer_liste($crit->param[1], array(), $boucles, $boucles[$idb]->id_parent) . ",\n" : '')
    619592                . (isset($crit->param[2]) ? "\t\t'select_null' => ". calculer_liste($crit->param[2], array(), $boucles, $boucles[$idb]->id_parent) . ",\n" : '')
    620                 . "\t];\n";
     593                . "\t);\n";
    621594}
    622595
  • _plugins_/indexer/trunk/liste/sphinx_documents.html

    r82601 r82620  
    99        [<div class="pagination">(#DEBUT_DOCUMENTS|?{#PAGINATION,#ANCRE_PAGINATION})</div>]
    1010        <ul class='liste-items'>
    11 <BOUCLE_documents(DATA){source tableau, #DOCS}{pagination 10}>
    12             [(#SET{properties,#PROPERTIES|json_decode})]
     11<BOUCLE_documents(DATA){source tableau, #DOCS}{pagination 100}>
     12            [(#SET{properties,#PROPERTIES|json_decode{1}})]
    1313            <li class='item'>
    1414                <article class='entry article hentry'>
    15                     <strong class='h3-like entry-title'>#SCORE <a href="#URI">#TITLE</a></strong>
     15                    <strong class='h3-like entry-title'>#SCORE/#ENV{max} = [(#SCORE|mult{100}|div{#ENV{max}}|intval)%] <a href="#URI">#TITLE</a></strong>
    1616                    <p class="publication">
    17                         [<time pubdate="pubdate" datetime="[(#DATE|date_iso)]">(#DATE|affdate_jourcourt)</time>][<span class="authors"><span class="sep">, </span> <:par_auteur:> (#GET{properties/authors}|implode{', '})</span>]
     17                        [<time pubdate="pubdate" datetime="[(#DATE|date_iso)]">(#DATE|affdate_jourcourt)</time>][<span class="authors"><span class="sep">, </span> <:par_auteur:> (#GET{properties}|table_valeur{authors}|implode{', '})</span>]
    1818                    </p>
    1919                    [<div class="introduction entry-content">(#SNIPPET|sinon{#SUMMARY})</div>]
Note: See TracChangeset for help on using the changeset viewer.