Changeset 82626 in spip-zone


Ignore:
Timestamp:
May 20, 2014, 6:17:17 PM (5 years ago)
Author:
marcimat@…
Message:

Quelques écrasements qui ont été effacés, et renommage aussi de la fonction de filtre dans l'itérateur.

Location:
_plugins_/indexer/trunk
Files:
3 edited

Legend:

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

    r82625 r82626  
    5656        {recherche #ENV*{recherche}}
    5757
    58         {pages #DEBUT_DOCUMENTS}
    59 
    6058        {filter #ENV{annee},  'YEAR(date) = @valeur' }
    6159        {filter #ENV{tag},    'IN(properties.tags, @valeurs)',    'LENGTH(properties.tags) = 0'}
  • _plugins_/indexer/trunk/iterateur/sphinx.php

    r82620 r82626  
    122122                $this->setFacet($this->command['facet']);
    123123
    124                 $this->setSelectFilter($this->command['filter']);
     124                $this->setFilter($this->command['filter']);
    125125
    126126                $this->setSnippet($this->command);
     
    141141                // decaler les docs en fonction de la pagination demandee
    142142                if (is_array($result['query']['docs'])
    143                 AND $pagination = $this->queryApi->limit) {
    144                         list($debut) = array_map('intval',explode(',', $pagination));
     143                        AND $pagination = $this->getPaginationLimit()) {
     144
     145                        list($debut) = array_map('intval', $pagination);
    145146
    146147                        $result['query']['docs'] = array_pad($result['query']['docs'], - count($result['query']['docs']) - $debut, null);
     
    242243        }
    243244
     245
     246        /**
     247        * Affecte une limite à la requête Sphinx (et sauve ses bornes)
     248        *
     249        * @param int Début
     250        * @param int Nombre de résultats
     251        **/
     252        public function setPaginationLimit($debut, $nombre) {
     253                $this->pagination_limit = array($debut, $nombre);
     254                $this->queryApi->limit("$debut,$nombre");
     255        }
     256
     257        /**
     258        * Retourne les limites de pagination précédemment sauvées
     259        *
     260        * @param int Début
     261        * @param int Nombre de résultats
     262        **/
     263        public function getPaginationLimit() {
     264                return $this->pagination_limit;
     265                # return explode(',', $this->queryApi->getLimit());
     266        }
     267
    244268        /**
    245269         * Définir la pagination
     
    250274        public function setPagination($pagination) {
    251275                # {pages #DEBUT_DOCUMENTS, 20}
    252                 if (is_array($pagination)) {
     276                if (is_array($pagination) and $pagination) {
    253277                        $debut = intval($pagination[0]);
    254                         if (isset($pagination[1]))
     278                        $nombre = 20;
     279                        if (isset($pagination[1])) {
    255280                                $nombre = intval($pagination[1]);
    256                         else
    257                                 $nombre = 20;
    258                         $this->queryApi
    259                                 ->limit("$debut,$nombre");
     281                        }
     282                        $this->setPaginationLimit($debut, $nombre);
    260283                        return true;
    261284                }
     
    379402         * @return bool
    380403        **/
    381         public function setSelectFilter($filters) {
     404        public function setFilter($filters) {
    382405                // compter le nombre de filtres ajoutés à la requête.
    383406                static $nb = 0;
     
    410433
    411434                        // préparer les données
     435                        $sans = ($valeur == '-'); // si aucun demandé
    412436                        $valeur = $this->quote($valeur);
    413437                        $valeurs = array_map(array($this, 'quote'), $valeurs);
    414438                        $valeurs = implode(', ', $valeurs);
    415439
    416                         if (($valeur == '-') and $filter['select_null']) {
     440                        if (($sens == '-') and $filter['select_null']) {
    417441                                $f = $filter['select_null'];
    418442                        } elseif ($filter['select_oui']) {
  • _plugins_/indexer/trunk/iterateur/sphinx2.php

    r82625 r82626  
    128128                $this->setFacet($this->command['facet']);
    129129
    130                 $this->setSelectFilter($this->command['filter']);
     130                $this->setFilter($this->command['filter']);
    131131
    132132                $this->setSnippet($this->command);
     133
    133134
    134135                $this->setPagination($this->command['pagination']);
     
    147148                // decaler les docs en fonction de la pagination demandee
    148149                if (is_array($result['query']['docs'])
    149                 AND $pagination = $this->queryApi->limit) {
    150                         list($debut) = array_map('intval',explode(',', $pagination));
     150                        AND $pagination = $this->getPaginationLimit()) {
     151
     152                        list($debut) = array_map('intval', $pagination);
    151153
    152154                        $result['query']['docs'] = array_pad($result['query']['docs'], - count($result['query']['docs']) - $debut, null);
     
    251253        }
    252254
     255
     256        /**
     257        * Affecte une limite à la requête Sphinx (et sauve ses bornes)
     258        *
     259        * @param int Début
     260        * @param int Nombre de résultats
     261        **/
     262        public function setPaginationLimit($debut, $nombre) {
     263                $this->pagination_limit = array($debut, $nombre);
     264                $this->queryApi->limit("$debut,$nombre");
     265        }
     266
     267        /**
     268        * Retourne les limites de pagination précédemment sauvées
     269        *
     270        * @param int Début
     271        * @param int Nombre de résultats
     272        **/
     273        public function getPaginationLimit() {
     274                return $this->pagination_limit;
     275                # return explode(',', $this->queryApi->getLimit());
     276        }
     277
    253278        /**
    254279         * Définir la pagination
    255280         *
    256          * @param array $pagination (#DEBUT_DOCUMENTS,20)
     281         * @param array $pagination
    257282         * @return bool True si une pagination est demandee
    258283        **/
    259284        public function setPagination($pagination) {
    260                 # {pages #DEBUT_DOCUMENTS, 20}
    261                 if (is_array($pagination)) {
     285                # {pagination 20}
     286                if (is_array($pagination) and $pagination) {
    262287                        $debut = intval($pagination[0]);
    263                         if (isset($pagination[1]))
     288                        $nombre = 20;
     289                        if (isset($pagination[1])) {
    264290                                $nombre = intval($pagination[1]);
    265                         else
    266                                 $nombre = 20;
    267                         $this->queryApi
    268                                 ->limit("$debut,$nombre");
     291                        }
     292                        $this->setPaginationLimit($debut, $nombre);
    269293                        return true;
    270294                }
     
    388412         * @return bool
    389413        **/
    390         public function setSelectFilter($filters) {
     414        public function setFilter($filters) {
    391415                // compter le nombre de filtres ajoutés à la requête.
    392416                static $nb = 0;
     
    419443
    420444                        // préparer les données
     445                        $sans = ($valeur == '-'); // si aucun demandé
    421446                        $valeur = $this->quote($valeur);
    422447                        $valeurs = array_map(array($this, 'quote'), $valeurs);
    423448                        $valeurs = implode(', ', $valeurs);
    424449
    425                         if (($valeur == '-') and $filter['select_null']) {
     450                        if (($sans == '-') and $filter['select_null']) {
    426451                                $f = $filter['select_null'];
    427452                        } elseif ($filter['select_oui']) {
Note: See TracChangeset for help on using the changeset viewer.