Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev Author Line No. Line
31 aurelien 1
<?php
2
 
3
class OdsStation extends GestionTriple {
4
 
5
	/**
6
     * Méthode appelée avec une requête de type GET.
7
     *
8
     */
9
    function getElement($param = array()) {
10
 
11
    	if(isset($param[0])) {
12
    		$id_participant = $param[0];
13
    	} else {
14
    		return;
15
    	}
16
 
17
		if($param[1] == "*") {
18
 
19
			$info = $this->obtenirListeStationPourParticipant($id_participant);
20
 
21
		} else if(is_numeric($param[1])) {
22
 
23
			$id_station = $param[1];
24
 
25
			$info = $this->obtenirInformationsStation($id_station);
26
		}
27
 
28
        // Envoi sur la sortie standard
29
        $this->envoyer($info);
30
 
31
    }
32
 
33
    /**
34
     * Méthode appelée pour ajouter un élément.
35
     */
36
    public function createElement($params) {
37
 
38
    	$elements_requis = array('id_participant','station_nom', 'station_commune', 'station_lat', 'station_lon','station_milieu');
39
    	$erreurs = array();
40
 
41
    	foreach($elements_requis as $requis) {
42
    		if(!isset($params[$requis])) {
43
    			//$erreurs[$requis] = 'erreur ';
44
    		}
45
    	}
46
 
47
    	if(!empty($erreurs)) {
48
    		$this->envoyer($erreurs);
49
    	}
50
 
51
    	$station['alt'] = '0';
52
 
53
    	$id_participant = $params['id_participant'];
54
 
55
    	$requete_creation_station = 'INSERT INTO ods_stations '.
56
					'(os_ce_participant, os_nom, os_ce_commune, os_latitude, os_longitude, os_altitude, os_ce_environnement, os_commentaire) '.
57
					'VALUES ('.
33 aurelien 58
							$this->proteger($id_participant).','.
59
							$this->proteger($params['station_nom']).','.
60
							$this->proteger($params['station_commune']).','.
61
							$this->proteger($params['station_lat']).','.
62
							$this->proteger($params['station_lon']).','.
63
							$this->proteger($params['station_alt']).','.
64
							$this->proteger($params['station_milieu']).','.
65
							$this->proteger($params['station_description']).')';
31 aurelien 66
 
67
		$creation_station = $this->executerRequeteSimple($requete_creation_station);
68
 
69
		if(!$creation_station) {
46 aurelien 70
    		$retour['erreurs'] = 'erreur d\'insertion';
71
    	} else {
72
    		$retour['id_nouvelle_station'] = $this->renvoyerDernierIdInsere();
31 aurelien 73
    	}
74
 
46 aurelien 75
    	$this->envoyer($retour);
31 aurelien 76
 
77
    }
78
 
79
    /**
80
     * Méthode appelée pour mettre à jour un élément
81
     */
82
    public function updateElement($uid, $params)    {
83
 
84
	    if(!isset($uid[0])) {
85
    		$id_participant = $uid[0];
86
    	} else {
87
    		return;
88
    	}
89
 
90
    	if(!isset($uid[1])) {
91
    		$id_station = $uid[1];
92
    	} else {
93
    		return;
94
    	}
95
 
96
        $requete_modification_station = 'UPDATE ods_stations '.
97
			'SET '.
33 aurelien 98
			'os_nom ='.$this->proteger($params['station_nom']).','.
99
        	'os_latitude ='.$this->proteger($params['station_commune']).','.
100
			'os_latitude ='.$this->proteger($params['station_lat']).','.
101
			'os_longitude ='.$this->proteger($params['station_lon']).','.
102
			'os_altitude ='.$this->proteger($params['station_alt']).','.
103
			'os_ce_environnement ='.$this->proteger($params['station_milieu']).','.
104
			'os_commentaire ='.$this->proteger($params['station_description']).' '.
105
			'WHERE os_ce_particant = '.$this->proteger($id_participant).' '.
106
        	'AND os_id_station = '.$this->proteger($id_station);
31 aurelien 107
 
108
		$modification_station = $this->executerRequeteSimple($requete_creation_station);
109
 
110
		if(!$modification_station) {
111
    		// TODO: comment gère t'on les erreurs ?
112
    	}
113
 
114
    	$this->envoyer();
115
    }
116
 
117
    /**
118
     * Méthode appelée pour supprimer un élément
119
     */
120
    public function deleteElement($uid) {
121
 
122
    	// Pour le moment, pas de suppression des stations
123
    	return ;
124
 
125
    	if(!isset($uid[0])) {
126
    		$id_participant = $uid[0];
127
    	} else {
128
    		return;
129
    	}
130
 
131
    	if(!isset($uid[1])) {
132
    		$id_station = $uid[1];
133
    	} else {
134
    		return;
135
    	}
136
 
137
    	$requete_suppression_station = 'DELETE FROM ods_stations '.
33 aurelien 138
    	'WHERE os_ce_particant = '.$this->proteger($id_participant).' '.
139
        	'AND os_id_station = '.$this->proteger($id_station);
31 aurelien 140
 
141
    	// TODO : supprimer également tout ce qui est associé à la station (observations, etc...)
142
    	$suppression_station = $this->executerRequeteSimple($requete_suppression_station);
143
 
144
    	if(!$suppression_station) {
145
    		// TODO: comment gère t'on les erreurs ?
146
    	}
147
 
148
    	$this->envoyer();
149
 
150
    }
151
 
152
 
153
    // +---------------------------------------------------------------------------------------------------------------+
154
    // METHODES D'ACCES A LA BASE DE DONNEES
155
	private function obtenirListeStationPourParticipant($id_participant) {
156
 
33 aurelien 157
    	$requete_liste_station = 'SELECT * FROM ods_stations WHERE os_ce_participant = '.$this->proteger($id_participant);
31 aurelien 158
 
159
    	$liste_station = $this->executerRequete($requete_liste_station);
160
 
161
    	$liste_station_formatees = array();
162
 
163
    	foreach($liste_station as $indice => $station) {
164
 
165
    		$station_champs_formates = $this->formaterChampsStationPourEnvoi($station);
166
		    $liste_station_formatees[$station['os_id_station']] = $station_champs_formates;
167
    	}
168
 
169
    	return $liste_station_formatees;
170
	}
171
 
172
    private function obtenirInformationsStation($id_station) {
173
 
33 aurelien 174
    	$requete_infos_station = 'SELECT * FROM ods_stations WHERE os_id_station = '.$this->proteger($id_station);
31 aurelien 175
 
176
    	$infos_station = $this->executerRequete($requete_infos_station);
177
 
178
    	$infos_station_formatees = array();
179
 
180
    	if(!empty($infos_station)) {
181
    		$infos_station = $infos_station[0];
182
    		$infos_station_formatees = $this->formaterChampsStationPourEnvoi($infos_station);
183
    	}
184
 
185
    	return $infos_station_formatees;
186
    }
187
 
188
    private function formaterChampsStationPourEnvoi($station) {
189
 
190
    	$station_champs_formates = array(
191
		    	'id' => $station['os_id_station'],
192
		    	'nom' => $station['os_nom'],
193
				'id_commune' => $station['os_ce_commune'],
194
    			'commune' => 'Montpellier',//$this->obtenirInformationsCommuneParCodeInsee($station['os_ce_commune']),
195
				'milieu' => 'Urbain',//$this->obtenirInformationsMilieuParAbreviation($station['os_milieu']),
196
				'latitude' => $station['os_latitude'],
197
				'longitude' => $station['os_longitude'],
198
    			'altitude' => $station['os_altitude'],
199
				'description' => $station['os_commentaire']
200
		    );
201
 
202
		return $station_champs_formates;
203
    }
204
 
205
    private function obtenirInformationsCommuneParId($id_commune) {
206
 
33 aurelien 207
    	$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_id_commune = '.$this->proteger($id_commune);
31 aurelien 208
    	$infos_commune = $this->executerRequete($requete_infos_commune);
209
 
210
    	return $infos_commune;
211
    }
212
 
213
	private function obtenirInformationsCommuneParCodeInsee($code_insee_commune) {
214
 
33 aurelien 215
    	$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_code_insee = '.$this->proteger($code_insee_commune);
31 aurelien 216
    	$infos_commune = $this->executerRequete($requete_infos_commune);
217
 
218
    	return $infos_commune;
219
    }
220
 
221
    private function obtenirInformationsMilieuParAbreviation($abreviation_milieu) {
222
 
223
    	$informations_milieu = $this->obtenirValeurTripleParAbreviation($abreviation_milieu);
224
    	return $informations_milieu;
225
 
226
    }
227
}
228
?>