* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ class CoordSearch extends Cel { public function getRessource() { return $this->getElement(array()); } public function getElement($uid){ $header = ''; $retour = []; $params = $this->traiterParametres(); $recherche_zones_geo = new RechercheInfosZoneGeo($this->config); if( !empty($params)) { if ($this->estUneRequeteReverseGeocoding($params)) { $informations = $recherche_zones_geo->obtenirInfosPourCoordonnees([ 'latitude' => $params['lat'], 'longitude' => $params['lon'], ]); } elseif ($this->estUneRequeteGeocodingCodeInseeCommune($params)) { $informations = $recherche_zones_geo->obtenirInfosPourCodeInseeCommune($params['code']); } elseif ($this->estUneRequeteGeocoding($params)) { $informations = $recherche_zones_geo->obtenirInfosPourNom( $params['zone'], $params['pays'], $params['code'] ); } elseif ($this->estUneRequeteGeocodingGroupe($params)) { // renvoie des infos sur un groupes de zones géographiques, si celui-ci // est décrit dans la table cel_groupes_zones_geo $informations = $recherche_zones_geo->obtenirInfosPourGroupeZonesFrance($params['groupe_zones']); } $altitude = $recherche_zones_geo->obtenirAltitude($informations); $informations = array_merge($informations, $altitude); $header = 'Content-Type: application/json; charset=UTF-8'; $retour = json_encode($informations); } else { $header = 'HTTP/1.0 400 Bad Request'; $retour = 'zone ou Coordonnées ou code INSEE non spécifié.e'; } header($header); echo $retour; } protected function traiterParametres() { $params = array('lon', 'lat', 'zone', 'groupe_zones', 'code', 'pays'); $parametresTraites = array(); foreach($params as $p) { $val = ''; // @TODO plutôt null ? if (!empty($_REQUEST[$p])) { $val = $_REQUEST[$p]; } $parametresTraites[$p] = $val; } return $parametresTraites; } protected function estUneRequeteReverseGeocoding($params) { return ($params['lat'] != '' && $params['lon'] != ''); } protected function estUneRequeteGeocoding($params) { return ($params['zone'] != ''); } protected function estUneRequeteGeocodingCodeInseeCommune($params) { return ($params['code'] != '' && 5 === strlen($params['code'])); } protected function estUneRequeteGeocodingGroupe($params) { return ($params['groupe_zones'] != ''); } }