Ignore:
Timestamp:
Jun 5, 2014, 2:13:26 PM (5 years ago)
Author:
rastapopoulos@…
Message:
  • Modification de la fonction quote() pour utiliser un deuxième argument $type qui permet de forcer l'interprétation (float, int, string).
  • Prise en compte de cette possibilité dans l'API tableau en pouvant donner "type"=>truc dans la description.
  • Ajout d'un argument supplémentaire aux critères {filtermono} et {filtermultijson} pour pouvoir forcer le type des valeurs à comparer.

Toujours un peu chiant de devoir ajouter des arguments, mais c'est le propre des signatures de fonctions avec une liste précise dans un ordre précis…

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/lib/Sphinx/SphinxQL/QueryApi.php

    r82816 r82870  
    401401                        $filter['values'] = array($filter['values']);
    402402                }
     403               
     404                // No type by default
     405                if (!isset($filter['type'])) {
     406                        $filter['type'] = '';
     407                }
    403408
    404409                // For each values, we build a comparison
    405410                $comparisons = array();
    406411                foreach ($filter['values'] as $value){
    407                         $comparison = $filter['field'] . $filter['comparison'] . $this->quote($value);
     412                        $comparison = $filter['field'] . $filter['comparison'] . $this->quote($value, $filter['type']);
    408413                        if (isset($filter['not']) and $filter['not']){
    409414                                $comparison = "!($comparison)";
     
    447452                        $filter['values'] = array(array($filter['values']));
    448453                }
     454               
     455                // No type by default
     456                if (!isset($filter['type'])) {
     457                        $filter['type'] = '';
     458                }
    449459
    450460                // At depth 1, generate AND
     
    455465                                $values_in = array($values_in);
    456466                        }
    457                         $ins[] = 'IN(' . $filter['field'] . ', ' . join(', ', array_map(array($this, 'quote'), array_filter($values_in))) . ')';
     467                        // Quote all values if necessary
     468                        $values_in = array_filter($values_in);
     469                        foreach ($values_in as $k=>$v) {
     470                                $values_in[$k] = $this->quote($v, $filter['type']);
     471                        }
     472                        $ins[] = 'IN(' . $filter['field'] . ', ' . join(', ', $values_in) . ')';
    458473                }
    459474
Note: See TracChangeset for help on using the changeset viewer.