Subversion Repositories eFlore/Applications.cel

Rev

Rev 1523 | Go to most recent revision | Blame | Compare with Previous | 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 = '' ".
                        '       AND DATE_ADD(date_modification, INTERVAL 25 HOUR) >= CURDATE() '. 
                        'GROUP BY longitude , latitude ';
                $resultat = $this->recupererTous($requete);
                $this->reinitialiserTempsDerniereRequete();
                return $resultat;
        }
        
        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 modifierCodeInseeEtZoneGeo($coordonnees) {
                $update = "UPDATE cel_obs ".
                        "SET ce_zone_geo = concat('INSEE-C:' , code_insee_calcule), ".
                        "zone_geo = ".$this->proteger($coordonnees['nom'])." ".
                        "WHERE ce_zone_geo = '' AND zone_geo = '' ".
                        "       AND 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);
        }
}
?>