Subversion Repositories eFlore/Applications.cel

Rev

Rev 1518 | Blame | Last modification | View Log | RSS feed

<?php
class Dao extends Bdd {
        
        private $temps_derniere_requete = 0;
        
        public function rechercherCoordonnees() {
                $requete = "SELECT longitude, latitude
                                        FROM `cel_obs`
                                        GROUP BY `longitude` , `latitude`";
                $resultat = $this->recupererTous($requete);
                $this->reinitialiserTempsDerniereRequete();
                return $resultat;
        }
        
        public function rechercherCoordonneesSansCorrespondances() {
                $requete = "SELECT longitude, latitude
                                                FROM `cel_obs`
                                                WHERE code_insee_calcule = '' 
                                                GROUP BY `longitude` , `latitude`";
                $resultat = $this->recupererTous($requete);
                $this->reinitialiserTempsDerniereRequete();
                return $resultat;
        }
        
        public function creerColonneCodeInseeCalculee() {
                $create = "ALTER TABLE `cel_obs` ADD `code_insee_calcule` VARCHAR( 5 ) NOT NULL";
                $this->requeter($create);
                $this->reinitialiserTempsDerniereRequete();
        }
        
        public function ajouterCodeInseeCalculee($latitude, $longitude, $code_insee) {
                $insert = "UPDATE `cel_obs` SET `code_insee_calcule` = '$code_insee' ".
                                        "WHERE latitude = $latitude AND longitude = $longitude";
                $this->requeter($insert);
                $this->reinitialiserTempsDerniereRequete();
        }
        
        public function modifierCodeInsee() {
                $update = "UPDATE `cel_obs` SET `ce_zone_geo` = concat('INSEE-C:' , `code_insee_calcule`) ".
                                                "WHERE  ce_zone_geo = '' ";
                $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);
        }
}
?>