Subversion Repositories eFlore/Applications.cel

Rev

Rev 1520 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1500 delphine 1
<?php
2
class Dao extends Bdd {
1520 aurelien 3
 
4
	private $temps_derniere_requete = 0;
5
 
1500 delphine 6
	public function rechercherCoordonnees() {
1523 aurelien 7
		$requete = "SELECT longitude, latitude ".
8
			"FROM cel_obs ".
9
			"GROUP BY longitude , latitude ";
1500 delphine 10
		$resultat = $this->recupererTous($requete);
1520 aurelien 11
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 12
		return $resultat;
13
	}
14
 
1517 aurelien 15
	public function rechercherCoordonneesSansCorrespondances() {
1523 aurelien 16
		$requete = 'SELECT longitude, latitude '.
17
			'FROM cel_obs '.
18
			"WHERE code_insee_calcule = '' ".
19
			'	AND DATE_ADD(date_modification, INTERVAL 25 HOUR) >= CURDATE() '.
20
			'GROUP BY longitude , latitude ';
1517 aurelien 21
		$resultat = $this->recupererTous($requete);
1520 aurelien 22
		$this->reinitialiserTempsDerniereRequete();
1517 aurelien 23
		return $resultat;
24
	}
25
 
1523 aurelien 26
	public function creerColonneCodeInseeCalcule() {
27
		$create = 'ALTER TABLE cel_obs '.
28
			'ADD code_insee_calcule VARCHAR(5) NOT NULL ';
1500 delphine 29
		$this->requeter($create);
1520 aurelien 30
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 31
	}
32
 
1523 aurelien 33
	public function ajouterCodeInseeCalcule($latitude, $longitude, $code_insee) {
34
		$insert = 'UPDATE cel_obs '.
35
			"SET code_insee_calcule = ".$this->proteger($code_insee)." ".
36
			"WHERE latitude = ".$this->proteger($latitude)." ".
37
			"	AND longitude = ".$this->proteger($longitude)." ";
1500 delphine 38
		$this->requeter($insert);
1520 aurelien 39
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 40
	}
41
 
1523 aurelien 42
	public function modifierCodeInseeEtZoneGeo($coordonnees) {
43
		$update = "UPDATE cel_obs ".
44
			"SET ce_zone_geo = concat('INSEE-C:' , code_insee_calcule), ".
45
		    	"zone_geo = ".$this->proteger($coordonnees['nom'])." ".
46
			"WHERE ce_zone_geo = '' AND zone_geo = '' ".
47
			"	AND latitude = ".$this->proteger($coordonnees['latitude'])." ".
48
			"	AND longitude = ".$this->proteger($coordonnees['longitude'])." ";
1500 delphine 49
		$this->requeter($update);
1520 aurelien 50
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 51
	}
1520 aurelien 52
 
53
	// Il peut se passer assez de temps sans qu'aucune requete ne soit effectuée
54
	// (cas d'un grand nombre d'enregistrements à la suite pour lesquels on ne trouve
55
	// aucun département). Pour éviter cela on teste régulièrement la connection
56
	public function testerActiviteConnection() {
57
		$temps_courant = microtime(true);
58
		$temps_depuis_derniere_requete = $temps_courant - $this->temps_derniere_requete;
59
		if($temps_depuis_derniere_requete >= 18) {
60
			$this->ping();
61
			$this->reinitialiserTempsDerniereRequete();
62
		}
63
	}
64
 
65
	private function reinitialiserTempsDerniereRequete() {
66
		$this->temps_derniere_requete = microtime(true);
67
	}
1500 delphine 68
}
69
?>