recupererTous($requete); $this->reinitialiserTempsDerniereRequete(); return $resultat; } public function rechercherCoordonneesFrancaisesSansCorrespondances() { $conditions = array( $this->getConditionCoordonneesValides(), $this->getConditionInfosGeoIncompletes(), $this->getConditionlimiteeALaFrance(), $this->getConditionModifObsRecente() ); return $this->rechercherCoordonnees($conditions); } public function rechercherCoordonneesFrancaisesSansCorrespondanceDepuisLeDebut() { $conditions = array( $this->getConditionCoordonneesValides(), $this->getConditionInfosGeoIncompletes(), $this->getConditionlimiteeALaFrance() ); return $this->rechercherCoordonnees($conditions); } public function rechercherPaysSansCorrespondance() { $conditions = array( $this->getConditionCoordonneesValides(), $this->getConditionSansPays(), $this->getConditionModifObsRecente() ); return $this->rechercherCoordonnees($conditions); } public function rechercherPaysSansCorrespondanceDepuisLeDebut() { $conditions = array( $this->getConditionCoordonneesValides(), $this->getConditionSansPays() ); return $this->rechercherCoordonnees($conditions); } public function rechercherToutSansCorrespondance() { $conditions = array( $this->getConditionCoordonneesValides(), '('. $this->getConditionInfosGeoIncompletes().' OR '. $this->getConditionSansPays(). ') ', $this->getConditionModifObsRecente() ); return $this->rechercherCoordonnees($conditions); } public function rechercherSansCorrespondanceDepuisLeDebut() { $conditions = array( $this->getConditionCoordonneesValides(), '('. $this->getConditionInfosGeoIncompletes().' OR '. $this->getConditionSansPays(). ') ' ); return $this->rechercherCoordonnees($conditions); } private function getConditionModifObsRecente() { $condition = 'DATE_ADD(date_modification, INTERVAL 25 HOUR) >= CURDATE() '; return $condition; } private function getConditionInfosGeoIncompletes() { $condition = '('. 'ce_zone_geo IS NULL OR ce_zone_geo = "" OR '. 'zone_geo IS NULL OR zone_geo = "" '. ') '; return $condition; } private function getConditionlimiteeALaFrance() { $condition = '('. '(latitude <= 51.071667 AND latitude >= 41.316667) AND '. '(longitude <= 9.513333 AND longitude >= -5.140278) '. ') '; return $condition; } private function getConditionSansPays() { $condition = '(pays IS NULL OR pays = "XX" OR pays = "")'; return $condition; } private function getConditionCoordonneesValides() { $condition = '(latitude IS NOT NULL AND longitude IS NOT NULL '. ' AND latitude != 0 AND latitude != "" '. ' AND longitude != 0 AND longitude != "" '. ' AND latitude >= -90 AND latitude <= 90 '. ' AND longitude >= -180 AND longitude <= 180) '; return $condition; } public function creerColonneCodeInseeCalcule() { $create = 'ALTER TABLE cel_obs '. 'ADD code_insee_calcule VARCHAR(5) NOT NULL '; $this->requeter($create); $this->reinitialiserTempsDerniereRequete(); } public function ajouterCodeInseeCalcule($latitude, $longitude, $code_insee) { $insert = 'UPDATE cel_obs '. "SET ". "code_insee_calcule = ".$this->proteger($code_insee)." ". "WHERE latitude = ".$this->proteger($latitude)." ". " AND longitude = ".$this->proteger($longitude)." "; $this->requeter($insert); $this->reinitialiserTempsDerniereRequete(); } public function affecterPaysFranceAuxCommunesRenseignees() { $update = "UPDATE cel_obs SET pays = 'FR' ". "WHERE ". "ce_zone_geo LIKE 'INSEE-C:_____' AND ". "zone_geo != '' AND ". "zone_geo IS NOT NULL AND ". "(pays IS NULL OR pays = '') "; return $this->executer($update); } public function modifierCodeInseeEtZoneGeo($coordonnees) { $codeP = $this->proteger($coordonnees['code_insee']); $codeInseeP = $this->proteger('INSEE-C:'.$coordonnees['code_insee']); $nomP = $this->proteger($coordonnees['nom']); $update = "UPDATE cel_obs ". "SET ". "pays = 'FR', ". "code_insee_calcule = ".$codeP.", ". "ce_zone_geo = ".$codeInseeP.", ". "zone_geo = IF(zone_geo = '' OR zone_geo = NULL, ".$nomP.", zone_geo) ". "WHERE ". " latitude = ".$this->proteger($coordonnees['latitude'])." ". " AND longitude = ".$this->proteger($coordonnees['longitude'])." "; $this->requeter($update); $this->reinitialiserTempsDerniereRequete(); } public function modifierPays($coordonnees) { $codePaysP = $this->proteger($coordonnees['code_pays']); $nomP = $this->proteger($coordonnees['nom']); $update = "UPDATE cel_obs ". "SET ". "pays = ".$codePaysP.", ". "zone_geo = IF(zone_geo = '' OR zone_geo = NULL, ".$nomP.", zone_geo) ". "WHERE ". " latitude = ".$this->proteger($coordonnees['latitude'])." ". " AND longitude = ".$this->proteger($coordonnees['longitude'])." "; $this->requeter($update); $this->reinitialiserTempsDerniereRequete(); } // Il peut se passer assez de temps sans qu'aucune requete ne soit effectuée // (cas d'un grand nombre d'enregistrements à la suite pour lesquels on ne trouve // aucun département). Pour éviter cela on teste régulièrement la connection public function testerActiviteConnection() { $temps_courant = microtime(true); $temps_depuis_derniere_requete = $temps_courant - $this->temps_derniere_requete; if($temps_depuis_derniere_requete >= 18) { $this->ping(); $this->reinitialiserTempsDerniereRequete(); } } private function reinitialiserTempsDerniereRequete() { $this->temps_derniere_requete = microtime(true); } }