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/Query.php

    r82818 r82870  
    7070
    7171        function quote($value, $type='') {
    72                 return
    73                         (is_numeric($value)) ? strval($value) :
    74                                 (!is_array($value) ? ("'" . addslashes($value) . "'") :
    75                                         join(",", array_map(array($this, 'quote'), $value))
    76                                 );
     72                // If it's an array, quote all internal values
     73                if (is_array($value)) {
     74                        foreach ($value as $k=>$v) {
     75                                $value[$k] = $this->quote($v);
     76                        }
     77                        return join(',', $value);
     78                }
     79                // If there's a knowed type, cast the value, or consider as a string
     80                elseif ($type) {
     81                        if (preg_match('/(int|entier)/i', $type)) {
     82                                return intval($value);
     83                        }
     84                        elseif (preg_match('/(double|float)/i', $type)) {
     85                                return floatval($value);
     86                        }
     87                        else {
     88                                return "'" . addslashes(strval($value)) . "'";
     89                        }
     90                }
     91                // If no type, all numeric valuee is return as numeric : "1234" => 1234
     92                else{
     93                        return is_numeric($value) ? strval($value) : "'" . addslashes($value) . "'";
     94                }
    7795        }
    7896
Note: See TracChangeset for help on using the changeset viewer.