Changeset 58102 in spip-zone


Ignore:
Timestamp:
Feb 7, 2012, 12:10:11 PM (8 years ago)
Author:
kent1@…
Message:

Passer des clauses where directement dans les arguments

Petites améliorations de la liste

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/branches/v2/inc/gis_xmlrpc.php

    r58094 r58102  
    1111 * -* objet string : le type d'objets liés
    1212 * -* id_objet int : l'identifiant numérique de l'objet lié
    13  * -* tri string array/string : les éléments de tri
     13 * -* where array : conditions à ajouter dans la clause where du select
     14 * -* tri array : les éléments de tri
    1415 * -** Si 'distance' dans le tri
    1516 * -*** lat float : la latitude à partir de laquelle chercher
     
    2324                return false;
    2425       
    25         $limite = $args['limite'] ? $args['limite'] : '20';
    2626        $objet = 'gis';
    27         $what = 'gis.id_gis';
     27       
     28        $what[] = 'gis.id_gis';
    2829        $from = 'spip_gis as gis LEFT JOIN spip_gis_liens as lien ON gis.id_gis=lien.id_gis';
    29         $where = array();
    30         $order = array();
     30        $where = is_array($args['where']) ? $args['where'] : array();
     31        $order = is_array($args['tri']) ? $args['tri'] : array();
    3132        if((intval($args['id_objet']) > 0) && $args['objet']){
    3233                $where[] = 'lien.id_objet='.intval($args['id_objet']).' AND lien.objet='.sql_quote($args['objet']);
    33         }
    34        
    35         if(is_array($args['tri'])){
    36                 $order = $args['tri'];
    37         }else if($args['tri']){
    38                 $order = array_map('trim',explode(',',$args['tri']));
    3934        }
    4035       
     
    4742                        return new IXR_Error(-32601, attribut_html($erreur));
    4843                }else{
    49                         $what .= ", (6371 * acos( cos( radians(\"$lat\") ) * cos( radians( gis.lat ) ) * cos( radians( gis.lon ) - radians(\"$lon\") ) + sin( radians(\"$lat\") ) * sin( radians( gis.lat ) ) ) ) AS distance";
     44                        $what[] = "(6371 * acos( cos( radians(\"$lat\") ) * cos( radians( gis.lat ) ) * cos( radians( gis.lon ) - radians(\"$lon\") ) + sin( radians(\"$lat\") ) * sin( radians( gis.lat ) ) ) ) AS distance";
    5045                }
    5146        }
     
    5752                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    5853                list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet.'s', $where);
    59                 $what .= ', '.$rech_select;
     54                $what[] = $rech_select;
    6055                $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = gis.id_gis ) ';
    61                 $where = 'resultats.'.$rech_where;
     56                $where[] = 'resultats.'.$rech_where;
    6257        }
    6358       
    6459        $points_struct = array();
    6560
    66         if($points = sql_select($what,$from,$where,'',$order,$limite)){
     61        if($points = sql_select($what,$from,$where,'',$order,$args['limite'])){
    6762                while($point = sql_fetch($points)){
    6863                        $struct=array();
Note: See TracChangeset for help on using the changeset viewer.