Blame | Last modification | View Log | RSS feed
<?phpfinal class DonneesFloradata extends SourceDonnees {public function __construct($limitesCarte, $taxon, $source) {parent::__construct($limitesCarte, $taxon, $source);}final public function recupererStations() {$bdd = new Bdd();$bdd->requeter("USE ".Config::get('bdd_nom_floradata'));$condition = "longitude IS NULL OR latitude IS NULL OR longitude=0 OR latitude=0 "."OR longitude>180 OR latitude>90 OR mots_cles_texte LIKE '%sensible%'";$requete ="SELECT COUNT(id_observation) AS nb_observations, "."Floor(If({$condition},wgs84_latitude,latitude)*10)/10 AS lat, "."Floor(If({$condition},wgs84_longitude,longitude)*10)/10 AS lng "."FROM cel_obs LEFT JOIN cel_zones_geo cz ON ce_zone_geo=id_zone_geo "."WHERE transmission=1 AND ".$this->construireWhereTaxon()." AND "."("."("."longitude BETWEEN ".$this->limitesCarte['ouest']." AND ".$this->limitesCarte['est']." "."AND latitude BETWEEN ".$this->limitesCarte['sud']." AND ".$this->limitesCarte['nord'].") OR ("."({$condition}) AND "."wgs84_longitude BETWEEN ".$this->limitesCarte['ouest']." AND ".$this->limitesCarte['est']." "."AND wgs84_latitude BETWEEN ".$this->limitesCarte['sud']." AND ".$this->limitesCarte['nord'].")".") "."GROUP BY Floor(If({$condition},wgs84_latitude,latitude)*10)/10, Floor(If({$condition},wgs84_longitude,longitude)*10)/10 "."ORDER BY lat DESC, lng ASC";return $bdd->recupererTous($requete);}final protected function construireWhereTaxon() {$criteres = array();$nomRang = $this->obtenirNomRang($this->taxon);if ($nomRang == 'famille') {$criteres[] = "famille=".$this->bdd->proteger($this->taxon['nom_sci']);} else {$criteres[] = "nt=".$this->taxon['num_taxonomique'];$sousTaxons = $this->recupererSynonymesEtSousEspeces();foreach ($sousTaxons as $sousTaxon) {$criteres[] ="nt=".$sousTaxon['num_taxonomique'];}}return "(".implode(' OR ',array_unique($criteres)).")";}}?>