Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 210 | Rev 297 | 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
 
92 aurelien 3
class OdsStation extends OdsTriple {
31 aurelien 4
 
5
	/**
6
     * Méthode appelée avec une requête de type GET.
7
     *
8
     */
9
    function getElement($param = array()) {
10
 
255 aurelien 11
    	if(isset($param[0]) && isset($param[1])) {
31 aurelien 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
 
105 aurelien 38
    	$elements_requis = array('id_participant','station_nom', 'station_commune', 'station_lat', 'station_lon','station_milieu','station_alt');
31 aurelien 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
    	$id_participant = $params['id_participant'];
52
 
194 aurelien 53
        if(isset($params['station_code_insee']) && trim($params['station_code_insee']) != '') {
54
 
173 aurelien 55
    		$commune = $params['station_code_insee'];
194 aurelien 56
			if(strlen($commune) == 4) {
57
				$commune = '0'.$commune;
58
			}
173 aurelien 59
    	} else {
60
    		$commune = $params['station_commune'];
61
    	}
62
 
31 aurelien 63
    	$requete_creation_station = 'INSERT INTO ods_stations '.
64
					'(os_ce_participant, os_nom, os_ce_commune, os_latitude, os_longitude, os_altitude, os_ce_environnement, os_commentaire) '.
65
					'VALUES ('.
33 aurelien 66
							$this->proteger($id_participant).','.
67
							$this->proteger($params['station_nom']).','.
194 aurelien 68
							$this->proteger($commune).','.
33 aurelien 69
							$this->proteger($params['station_lat']).','.
70
							$this->proteger($params['station_lon']).','.
71
							$this->proteger($params['station_alt']).','.
72
							$this->proteger($params['station_milieu']).','.
73
							$this->proteger($params['station_description']).')';
31 aurelien 74
 
75
		$creation_station = $this->executerRequeteSimple($requete_creation_station);
76
 
77
		if(!$creation_station) {
46 aurelien 78
    		$retour['erreurs'] = 'erreur d\'insertion';
79
    	} else {
80
    		$retour['id_nouvelle_station'] = $this->renvoyerDernierIdInsere();
31 aurelien 81
    	}
82
 
46 aurelien 83
    	$this->envoyer($retour);
31 aurelien 84
 
85
    }
86
 
87
    /**
88
     * Méthode appelée pour mettre à jour un élément
89
     */
90
    public function updateElement($uid, $params)    {
91
 
105 aurelien 92
	    $elements_requis = array('id_participant','station_nom', 'station_commune', 'station_lat', 'station_lon','station_milieu','station_alt');
93
    	$erreurs = array();
94
 
95
    	foreach($elements_requis as $requis) {
96
    		if(!isset($params[$requis])) {
97
    			$erreurs[$requis] = 'erreur ';
98
    		}
31 aurelien 99
    	}
100
 
105 aurelien 101
    	if(!empty($erreurs)) {
102
    		$this->envoyer($erreurs);
103
    	}
104
 
105
    	$id_participant = $params['id_participant'];
106
 
107
    	if(!isset($uid[0])) {
108
    		return;
31 aurelien 109
    	} else {
105 aurelien 110
    		$id_station = $uid[0];;
31 aurelien 111
    	}
112
 
194 aurelien 113
    	if(isset($params['station_code_insee']) && trim($params['station_code_insee']) != '') {
114
 
173 aurelien 115
    		$commune = $params['station_code_insee'];
194 aurelien 116
			if(strlen($commune) == 4) {
117
				$commune = '0'.$commune;
118
			}
173 aurelien 119
    	} else {
120
    		$commune = $params['station_commune'];
121
    	}
122
 
31 aurelien 123
        $requete_modification_station = 'UPDATE ods_stations '.
124
			'SET '.
33 aurelien 125
			'os_nom ='.$this->proteger($params['station_nom']).','.
194 aurelien 126
			'os_ce_commune ='.$this->proteger($commune).','.
33 aurelien 127
			'os_latitude ='.$this->proteger($params['station_lat']).','.
128
			'os_longitude ='.$this->proteger($params['station_lon']).','.
129
			'os_altitude ='.$this->proteger($params['station_alt']).','.
130
			'os_ce_environnement ='.$this->proteger($params['station_milieu']).','.
131
			'os_commentaire ='.$this->proteger($params['station_description']).' '.
105 aurelien 132
			'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
33 aurelien 133
        	'AND os_id_station = '.$this->proteger($id_station);
31 aurelien 134
 
105 aurelien 135
		$modification_station = $this->executerRequeteSimple($requete_modification_station);
31 aurelien 136
 
105 aurelien 137
		$retour = array();
138
 
31 aurelien 139
		if(!$modification_station) {
105 aurelien 140
    		$retour['erreurs'] = 'Erreur lors de la modification de la station';
141
    	} else {
142
    		$retour['reponse'] = 'OK';
31 aurelien 143
    	}
105 aurelien 144
 
145
    	$this->envoyer($retour);
31 aurelien 146
    }
147
 
148
    /**
149
     * Méthode appelée pour supprimer un élément
150
     */
151
    public function deleteElement($uid) {
210 aurelien 152
 
153
    	if(isset($uid[0])) {
31 aurelien 154
    		$id_participant = $uid[0];
155
    	} else {
156
    		return;
157
    	}
158
 
210 aurelien 159
    	if(isset($uid[1])) {
31 aurelien 160
    		$id_station = $uid[1];
161
    	} else {
162
    		return;
163
    	}
210 aurelien 164
 
31 aurelien 165
    	$requete_suppression_station = 'DELETE FROM ods_stations '.
210 aurelien 166
    	'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
33 aurelien 167
        	'AND os_id_station = '.$this->proteger($id_station);
210 aurelien 168
 
31 aurelien 169
    	$suppression_station = $this->executerRequeteSimple($requete_suppression_station);
170
 
171
    	if(!$suppression_station) {
172
    		// TODO: comment gère t'on les erreurs ?
173
    	}
174
 
175
    	$this->envoyer();
176
 
177
    }
178
 
179
	private function obtenirListeStationPourParticipant($id_participant) {
180
 
33 aurelien 181
    	$requete_liste_station = 'SELECT * FROM ods_stations WHERE os_ce_participant = '.$this->proteger($id_participant);
31 aurelien 182
 
183
    	$liste_station = $this->executerRequete($requete_liste_station);
184
 
185
    	$liste_station_formatees = array();
186
 
187
    	foreach($liste_station as $indice => $station) {
188
 
189
    		$station_champs_formates = $this->formaterChampsStationPourEnvoi($station);
190
		    $liste_station_formatees[$station['os_id_station']] = $station_champs_formates;
191
    	}
192
 
193
    	return $liste_station_formatees;
194
	}
195
 
196
    private function obtenirInformationsStation($id_station) {
197
 
33 aurelien 198
    	$requete_infos_station = 'SELECT * FROM ods_stations WHERE os_id_station = '.$this->proteger($id_station);
31 aurelien 199
 
200
    	$infos_station = $this->executerRequete($requete_infos_station);
201
 
202
    	$infos_station_formatees = array();
203
 
204
    	if(!empty($infos_station)) {
205
    		$infos_station = $infos_station[0];
206
    		$infos_station_formatees = $this->formaterChampsStationPourEnvoi($infos_station);
207
    	}
208
 
209
    	return $infos_station_formatees;
210
    }
211
 
212
    private function formaterChampsStationPourEnvoi($station) {
213
 
173 aurelien 214
    	if(is_numeric($station['os_ce_commune'])) {
215
    		$commune = $this->obtenirInformationsCommuneParCodeInsee($station['os_ce_commune']);
216
    	} else {
217
    		$commune = $station['os_ce_commune'];
218
    	}
219
 
31 aurelien 220
    	$station_champs_formates = array(
221
		    	'id' => $station['os_id_station'],
222
		    	'nom' => $station['os_nom'],
173 aurelien 223
				'code_insee' => $station['os_ce_commune'],
224
    			'commune' => $commune,
92 aurelien 225
				'id_milieu' => $station['os_ce_environnement'],
226
    			'milieu' => $this->obtenirInformationsMilieuParId($station['os_ce_environnement']),
31 aurelien 227
				'latitude' => $station['os_latitude'],
228
				'longitude' => $station['os_longitude'],
229
    			'altitude' => $station['os_altitude'],
230
				'description' => $station['os_commentaire']
231
		    );
232
 
233
		return $station_champs_formates;
234
    }
235
 
236
	private function obtenirInformationsCommuneParCodeInsee($code_insee_commune) {
237
 
173 aurelien 238
    	$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_code_insee = '.$this->proteger($code_insee_commune);
239
    	$infos_commune = $this->executerRequete($requete_infos_commune);
31 aurelien 240
 
105 aurelien 241
		//TODO: en attendant de stocker les ids
173 aurelien 242
		return $infos_commune[0]['oc_nom'];
67 aurelien 243
 
105 aurelien 244
    	//return $infos_commune;
31 aurelien 245
    }
246
 
92 aurelien 247
    private function obtenirInformationsMilieuParId($id_milieu) {
31 aurelien 248
 
92 aurelien 249
    	$informations_milieu = $this->obtenirValeurTripleParId($id_milieu);
31 aurelien 250
    	return $informations_milieu;
251
 
252
    }
253
}
254
?>