Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 255 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 255 Rev 297
Line 12... Line 12...
12
    		$id_participant = $param[0];
12
    		$id_participant = $param[0];
13
    	} else {
13
    	} else {
14
    		return;
14
    		return;
15
    	}
15
    	}
Line 16... Line 16...
16
       
16
       
17
		if($param[1] == "*") {
-
 
18
        
17
		if($param[1] == "*") { 
19
			$info = $this->obtenirListeStationPourParticipant($id_participant);
-
 
20
			
18
			$info = $this->obtenirListeStationPourParticipant($id_participant);
21
		} else if(is_numeric($param[1])) {
-
 
22
			
19
		} else if(is_numeric($param[1])) {
23
			$id_station = $param[1];
-
 
24
			
20
			$id_station = $param[1];
25
			$info = $this->obtenirInformationsStation($id_station);
21
			$info = $this->obtenirInformationsStation($id_station);
Line 26... Line -...
26
		}
-
 
27
       
22
		}
28
        // Envoi sur la sortie standard
-
 
29
        $this->envoyer($info);
23
       
Line 30... Line 24...
30
    
24
        $this->envoyer($info);
31
    }
25
    }
32
   
26
   
Line 47... Line 41...
47
    	if(!empty($erreurs)) {
41
    	if(!empty($erreurs)) {
48
    		$this->envoyer($erreurs);
42
    		$this->envoyer($erreurs);
49
    	}
43
    	}
Line 50... Line 44...
50
    	
44
    	
-
 
45
    	$id_participant = $params['id_participant'];
Line 51... Line 46...
51
    	$id_participant = $params['id_participant'];
46
    	$commune = $this->traiterParametreCommune($params);
52
    	
-
 
53
        if(isset($params['station_code_insee']) && trim($params['station_code_insee']) != '') {
47
    	
54
        	
-
 
55
    		$commune = $params['station_code_insee'];
-
 
56
			if(strlen($commune) == 4) {
-
 
57
				$commune = '0'.$commune;
-
 
58
			}
-
 
59
    	} else {
-
 
Line 60... Line 48...
60
    		$commune = $params['station_commune'];
48
    	// description n'est pas obligatoire, et également pour le moment inutilisé
61
    	}
49
    	$params['station_description'] = isset($params['station_description']) ? $params['station_description'] : '';
62
    	
50
    	
63
    	$requete_creation_station = 'INSERT INTO ods_stations '.
51
    	$requete_creation_station = 'INSERT INTO ods_stations '.
Line 105... Line 93...
105
    	$id_participant = $params['id_participant'];
93
    	$id_participant = $params['id_participant'];
Line 106... Line 94...
106
    	
94
    	
107
    	if(!isset($uid[0])) {
95
    	if(!isset($uid[0])) {
108
    		return;
96
    		return;
109
    	} else {
97
    	} else {
110
    		$id_station = $uid[0];;
98
    		$id_station = $uid[0];
Line 111... Line -...
111
    	}
-
 
112
    	
-
 
113
    	if(isset($params['station_code_insee']) && trim($params['station_code_insee']) != '') {
-
 
114
    		
-
 
115
    		$commune = $params['station_code_insee'];
-
 
116
			if(strlen($commune) == 4) {
-
 
117
				$commune = '0'.$commune;
-
 
118
			}
99
    	}
119
    	} else {
-
 
Line 120... Line 100...
120
    		$commune = $params['station_commune'];
100
    	
121
    	}
101
    	$commune = $this->traiterParametreCommune($params);
122
    	
102
    	
123
        $requete_modification_station = 'UPDATE ods_stations '.
103
        $requete_modification_station = 'UPDATE ods_stations '.
Line 142... Line 122...
142
    		$retour['reponse'] = 'OK';
122
    		$retour['reponse'] = 'OK';
143
    	}
123
    	}
Line 144... Line 124...
144
 
124
 
145
    	$this->envoyer($retour);
125
    	$this->envoyer($retour);
-
 
126
    }
-
 
127
    
-
 
128
    private function traiterParametreCommune($params) { 
-
 
129
    	// Si on a pas de code INSEE on mettra la valeur brute que 
-
 
130
    	// l'utilisateur a saisi afin de ne pas perdre d'infos
-
 
131
    	$commune = $params['station_commune'];
-
 
132
    	// Si un code INSEE semble présent
-
 
133
    	if(isset($params['station_code_insee']) && trim($params['station_code_insee']) != '') {
-
 
134
    		// Si c'est le cas affectation directe
-
 
135
    		if($this->estUnCodeInsee($params)) {
-
 
136
    			$commune = $params['station_code_insee'];
-
 
137
    			// Cas du code saisi sans le 0 de gauche
-
 
138
    			$commune = (strlen($commune) == 4) ? '0'.$commune : $commune;
-
 
139
    		} elseif($this->estUnCommunePlusDepartement($params)) {
-
 
140
    			// Cas du département sur un ou deux chiffres + une commune
-
 
141
    			// tentative de retrouve le code INSEE complet
-
 
142
    			$params['station_code_insee'] = (strlen($params['station_code_insee']) == 1) ? '0'.$params['station_code_insee'] : $params['station_code_insee'];
-
 
143
    			$infos = $this->obtenirInformationsCommuneParNomEtDepartement($params['station_commune'], $params['station_code_insee']);
-
 
144
    			$commune = ($infos != null) ? $infos['oc_code_insee'] : $commune;
-
 
145
    			//TODO: quoi faire si on a 3 chiffres par exemple ou plus de 5 chiffres ?
-
 
146
    		}
-
 
147
    	}
-
 
148
 
-
 
149
    	return $commune;
-
 
150
    }
-
 
151
    
-
 
152
    private function estUnCodeInsee($params) {
-
 
153
    	return  is_numeric($params['station_code_insee']) &&
-
 
154
    			(strlen($params['station_code_insee']) == 5 ||
-
 
155
    			strlen($params['station_code_insee']) == 4);
-
 
156
    }
-
 
157
    
-
 
158
    private function estUnCommunePlusDepartement($params) {
-
 
159
    	return  is_numeric($params['station_code_insee']) &&
-
 
160
    			(strlen($params['station_code_insee']) == 2 || 
-
 
161
    			strlen($params['station_code_insee']) == 1) &&
-
 
162
    			isset($params['station_commune']) &&
-
 
163
    			trim($params['station_commune']) != "";
Line 146... Line 164...
146
    }
164
    }
147
   
165
   
148
    /**
166
    /**
149
     * Méthode appelée pour supprimer un élément
167
     * Méthode appelée pour supprimer un élément
Line 236... Line 254...
236
	private function obtenirInformationsCommuneParCodeInsee($code_insee_commune) {
254
	private function obtenirInformationsCommuneParCodeInsee($code_insee_commune) {
Line 237... Line 255...
237
    	
255
    	
238
    	$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_code_insee = '.$this->proteger($code_insee_commune);
256
    	$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_code_insee = '.$this->proteger($code_insee_commune);
Line 239... Line -...
239
    	$infos_commune = $this->executerRequete($requete_infos_commune);
-
 
240
    	
257
    	$infos_commune = $this->executerRequete($requete_infos_commune);
241
		//TODO: en attendant de stocker les ids
-
 
242
		return $infos_commune[0]['oc_nom'];
-
 
243
		
258
    	
Line -... Line 259...
-
 
259
		return $infos_commune[0]['oc_nom'];
-
 
260
    }
-
 
261
    
-
 
262
    private function obtenirInformationsCommuneParNomEtDepartement($nom, $departement) {
-
 
263
    	// un remplacement par des underscores permet de s'affranchir des problèmes de saisie
-
 
264
    	// des communes avec des tirets espaces etc...
-
 
265
    	$nom = str_replace(array("'","-",'"',' ') ,'_', $nom);
-
 
266
    	$requete_infos_commune = 'SELECT oc_nom, oc_code_insee FROM ods_communes '.
-
 
267
    							 'WHERE oc_code_insee LIKE '.$this->proteger($departement.'%').' AND '.
-
 
268
    							 'oc_nom LIKE '.$this->proteger($nom);
-
 
269
    	
-
 
270
    	$infos_commune = $this->executerRequete($requete_infos_commune);
-
 
271
    	$retour = null;
-
 
272
    	if($infos_commune && isset($infos_commune[0])) {
-
 
273
    		$retour = $infos_commune[0];
-
 
274
    	}
-
 
275
 
-
 
276
    	return $retour;
244
    	//return $infos_commune;
277
    }
Line 245... Line 278...
245
    }
278
    
246
    
279