Subversion Repositories eFlore/Applications.cel

Rev

Rev 2525 | 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 {
2436 jpm 3
 
1520 aurelien 4
	private $temps_derniere_requete = 0;
2436 jpm 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
	}
2436 jpm 14
 
1517 aurelien 15
	public function rechercherCoordonneesSansCorrespondances() {
1523 aurelien 16
		$requete = 'SELECT longitude, latitude '.
17
			'FROM cel_obs '.
18
			"WHERE code_insee_calcule = '' ".
2436 jpm 19
			'	AND DATE_ADD(date_modification, INTERVAL 25 HOUR) >= CURDATE() '.
1523 aurelien 20
			'GROUP BY longitude , latitude ';
1517 aurelien 21
		$resultat = $this->recupererTous($requete);
1520 aurelien 22
		$this->reinitialiserTempsDerniereRequete();
1517 aurelien 23
		return $resultat;
24
	}
2525 aurelien 25
 
26
	public function rechercherCoordonneesSansCorrespondanceDepuisLeDebut() {
27
		$requete = 'SELECT longitude, latitude '.
28
				'FROM cel_obs '.
29
				"WHERE code_insee_calcule = '' ".
30
				'GROUP BY longitude , latitude ';
2526 aurelien 31
		// TODO faire une requete plus pertinente
32
		// Limitée à la france ? uniquement les coordonnées valides ? etc.. etc...
2525 aurelien 33
		$resultat = $this->recupererTous($requete);
34
		$this->reinitialiserTempsDerniereRequete();
35
		return $resultat;
36
	}
2436 jpm 37
 
1523 aurelien 38
	public function creerColonneCodeInseeCalcule() {
39
		$create = 'ALTER TABLE cel_obs '.
40
			'ADD code_insee_calcule VARCHAR(5) NOT NULL ';
1500 delphine 41
		$this->requeter($create);
1520 aurelien 42
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 43
	}
2436 jpm 44
 
1523 aurelien 45
	public function ajouterCodeInseeCalcule($latitude, $longitude, $code_insee) {
46
		$insert = 'UPDATE cel_obs '.
47
			"SET code_insee_calcule = ".$this->proteger($code_insee)." ".
48
			"WHERE latitude = ".$this->proteger($latitude)." ".
49
			"	AND longitude = ".$this->proteger($longitude)." ";
1500 delphine 50
		$this->requeter($insert);
1520 aurelien 51
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 52
	}
2436 jpm 53
 
1523 aurelien 54
	public function modifierCodeInseeEtZoneGeo($coordonnees) {
55
		$update = "UPDATE cel_obs ".
2436 jpm 56
			"SET ce_zone_geo = CONCAT('INSEE-C:' , code_insee_calcule), ".
1523 aurelien 57
		    	"zone_geo = ".$this->proteger($coordonnees['nom'])." ".
58
			"WHERE ce_zone_geo = '' AND zone_geo = '' ".
59
			"	AND latitude = ".$this->proteger($coordonnees['latitude'])." ".
60
			"	AND longitude = ".$this->proteger($coordonnees['longitude'])." ";
1500 delphine 61
		$this->requeter($update);
1520 aurelien 62
		$this->reinitialiserTempsDerniereRequete();
1500 delphine 63
	}
2436 jpm 64
 
1520 aurelien 65
	// Il peut se passer assez de temps sans qu'aucune requete ne soit effectuée
66
	// (cas d'un grand nombre d'enregistrements à la suite pour lesquels on ne trouve
67
	// aucun département). Pour éviter cela on teste régulièrement la connection
68
	public function testerActiviteConnection() {
69
		$temps_courant = microtime(true);
70
		$temps_depuis_derniere_requete = $temps_courant - $this->temps_derniere_requete;
71
		if($temps_depuis_derniere_requete >= 18) {
72
			$this->ping();
73
			$this->reinitialiserTempsDerniereRequete();
74
		}
75
	}
2436 jpm 76
 
1520 aurelien 77
	private function reinitialiserTempsDerniereRequete() {
78
		$this->temps_derniere_requete = microtime(true);
79
	}
2436 jpm 80
}