Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 1140 → Rev 1141

/trunk/services/modules/0.1/osm/ZoneAdmin.php
23,7 → 23,7
*/
class ZoneADmin {
 
const PATTERN_LAT = '/^[0-9]+(?:[.][0-9]+|)$/';
const PATTERN_LAT = '/^[-]?[0-9]+(?:[.][0-9]+|)$/';
const PATTERN_LON = '/^[-]?[0-9]+(?:[.][0-9]+|)$/';
const MIME_JSON = 'application/json';
 
33,6 → 33,7
private $lat = null;
private $lon = null;
private $zone = null;
private $niveaux = null;
 
public function __construct(Bdd $bdd) {
$this->bdd = $bdd;
44,6 → 45,7
$this->lat = $this->parametres['lat'];
$this->lon = $this->parametres['lon'];
$this->zone = isset($this->parametres['zone']) ? $this->parametres['zone'] : null;
$this->niveaux = isset($this->parametres['niveau']) ? explode(',', $this->parametres['niveau']) : null;
 
$zoneTrouveeInfos = $this->localiserPointLatLon();
$corps = $this->formaterResultats($zoneTrouveeInfos);
60,7 → 62,7
if (! array_key_exists('lat', $this->parametres)) {
$messages[] = "Vous devez indiquer une latitude en degré décimal à l'aide du paramètres d'url : lat";
} else if (!preg_match(self::PATTERN_LAT, $lat)) {
$messages[] = "La valeur de latitude doit être un nombre décimal positif dont le séparateur décimal est un point. Ex. : 44 ou 43.03";
$messages[] = "La valeur de latitude doit être un nombre décimal dont le séparateur décimal est un point. Ex. : 44 ou 43.03";
}
if (! array_key_exists('lon', $this->parametres)) {
$messages[] = "Vous devez indiquer une longitude en degré décimal à l'aide du paramètres d'url : lon";
131,6 → 133,8
 
private function construireRequeteUnion() {
$zone = isset($this->zone) ? $this->bdd->proteger($this->zone) : null;
$niveaux = isset($this->niveaux) ? $this->niveaux : null;
$requeteTpl = 'SELECT osm_id, '.
"(($this->lon - centre_lng) * ($this->lon -centre_lng) + ($this->lat - centre_lat) * ($this->lat - centre_lat)) AS distance ".
'FROM osm_zones_admin '.
138,10 → 142,10
(isset($zone) ? "AND zone = $zone " : '').
'ORDER BY distance ASC '.
"LIMIT %s ";
$niveaux = array(2,3,4,5,6,7,8);
$niveaux = isset($niveaux) ? $niveaux : array(2,3,4,5,6,7,8);
$requetesAUnir = array();
foreach ($niveaux as $niveau) {
$requetesAUnir[] = sprintf($requeteTpl, $niveau, ($niveau * 2));
$requetesAUnir[] = sprintf($requeteTpl, $this->bdd->proteger($niveau), ($niveau * 2));
}
$requete = '('.implode(') UNION (', $requetesAUnir).') -- '.__FILE__.' : '.__LINE__;
return $requete;