Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 210 | Rev 313 | 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
// declare(encoding='UTF-8');
3
/**
4
 * Classe de test des Controleurs.
5
 *
6
 * @package     Collection
7
 * @category    Php 5.2
8
 * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright   2010 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version     SVN: $Id: Fiche.php 152 2010-09-06 16:19:12Z jpm $
13
 */
14
class Station extends aControleur {
15
 
16
	private $id_station_en_cours = null;
17
 
18
    public function __construct()  {
19
 
20
		parent::__construct();
21
        $this->initialiser();
22
    }
23
 
24
    public function initialiser() {
25
 
70 aurelien 26
    	if(isset($_GET['id_station'])) {
27
    		$this->id_station_en_cours = $_GET['id_station'];
28
    	}
31 aurelien 29
    	$this->setNavigation();
30
 
31
    }
32
 
33
    public function executerActionParDefaut() {
34
    	return $this->afficherFormulaireSaisieStation();
35
    }
36
 
37
   	// +---------------------------------------------------------------------------------------------------------------+
38
    // METHODES D'AFFICHAGE DE FORMULAIRE
112 aurelien 39
    public function afficherFormulaireSaisieStation($donnees = array()) {
31 aurelien 40
 
302 aurelien 41
    	if($donnees == array()) {
112 aurelien 42
	    	$donnees['station_commune'] = '';
43
		    $donnees['station_milieu'] = '';
44
		    $donnees['station_nom'] = '';
45
		    $donnees['station_lat'] = '';
46
		    $donnees['station_lon'] = '';
47
		   	$donnees['station_alt'] = '';
167 aurelien 48
		   	$donnees['station_code_insee'] = '';
112 aurelien 49
    	}
83 aurelien 50
 
51
    	$donnees['milieux'] = $this->getListeMilieux();
302 aurelien 52
    	$donnees['corps_formulaire_saisie_modif'] = $this->getVue('formulaires/station_saisie_modification',$donnees);
31 aurelien 53
    	$formulaire = $this->getVue('formulaires/station_saisie',$donnees);
54
    	$this->setSortie(self::RENDU_CORPS, $formulaire);
55
    }
56
 
112 aurelien 57
	public function afficherFormulaireModificationStation($donnees = array()) {
31 aurelien 58
 
302 aurelien 59
		$id_station = $this->id_station_en_cours;
60
		if(empty($donnees)) {
61
			$infos_station = $this->getInformationsStation($id_station);
62
			$donnees['station_id'] = $id_station;
63
			$donnees['station_commune'] = $infos_station['commune'];
64
			$donnees['station_milieu'] = $infos_station['milieu'];
65
			$donnees['station_nom'] = $infos_station['nom'];
66
			$donnees['station_lat'] = $infos_station['latitude'];
67
			$donnees['station_lon'] = $infos_station['longitude'];
68
			$donnees['station_alt'] = $infos_station['altitude'];
69
			$donnees['station_code_insee'] = $infos_station['code_insee'];
70
		}
71
 
83 aurelien 72
    	$donnees['milieux'] = $this->getListeMilieux();
302 aurelien 73
    	$donnees['corps_formulaire_saisie_modif'] = $this->getVue('formulaires/station_saisie_modification',$donnees);
83 aurelien 74
 
31 aurelien 75
    	$formulaire = $this->getVue('formulaires/station_modification',$donnees);
76
    	$this->setSortie(self::RENDU_CORPS, $formulaire);
77
    }
78
 
79
    // +---------------------------------------------------------------------------------------------------------------+
80
    // METHODES APPELEES LORS DE LA VALIDATION D'UN FORMULAIRE
81
    public function validerFormulaireSaisieStation() {
82
 
112 aurelien 83
    	$valeurs_collectees = $this->collecterValeursFormulaireSaisieStation();
84
    	$verification_ou_erreurs = $this->verifierValeursStation($valeurs_collectees);
85
 
302 aurelien 86
    	if($verification_ou_erreurs !== true) {
87
    		$donnees = $valeurs_collectees;
112 aurelien 88
    		$donnees['erreurs'] = $verification_ou_erreurs;
89
    		$this->afficherFormulaireSaisieStation($donnees);
90
    		return;
91
    	}
92
 
93
    	$valeurs_verifiees = $valeurs_collectees;
95 aurelien 94
 
31 aurelien 95
    	$station_dao = new StationDao();
44 aurelien 96
    	$retour_ajout_station = $station_dao->ajouterStation($valeurs_verifiees);
97
 
98
    	if($id_nouvelle_station = $this->renvoyerIdSiAjoutStationEffectue($retour_ajout_station)) {
99
    		$this->id_station_en_cours = $id_nouvelle_station;
100
    		$this->afficherInformationsStation();
101
    		$this->setNavigation();
102
    	}
31 aurelien 103
    }
104
 
44 aurelien 105
    private function renvoyerIdSiAjoutStationEffectue($donnees_retour_dao) {
106
 
107
    	if(isset($donnees_retour_dao['id_nouvelle_station'])) {
108
    		return $donnees_retour_dao['id_nouvelle_station'];
109
    	}
110
 
111
    	return false;
112
    }
113
 
31 aurelien 114
    private function collecterValeursFormulaireSaisieStation() {
115
 
112 aurelien 116
    	$valeurs_collectees['station_commune'] = $_POST['station_commune'];
117
	    $valeurs_collectees['station_milieu'] =  $_POST['station_milieu'];
118
	    $valeurs_collectees['station_nom'] = $_POST['station_nom'];
119
	    $valeurs_collectees['station_lat'] =  $_POST['station_lat'];
120
	    $valeurs_collectees['station_lon'] = $_POST['station_lon'];
121
	   	$valeurs_collectees['station_alt'] = $_POST['station_alt'];
302 aurelien 122
	   	// à voir de ce que l'on fait de ce champs qui avait été prévu mais jamais utilisé
123
	   	//$valeurs_collectees['station_description'] = $_POST['station_description'];
167 aurelien 124
	   	$valeurs_collectees['station_code_insee'] = $_POST['station_code_insee'];
31 aurelien 125
 
112 aurelien 126
	    return $valeurs_collectees;
31 aurelien 127
 
128
    }
129
 
95 aurelien 130
	private function collecterValeursFormulaireModificationStation() {
302 aurelien 131
		$valeurs_collectees = $this->collecterValeursFormulaireSaisieStation();
112 aurelien 132
	    $valeurs_collectees['station_id'] = $_POST['station_id'];
95 aurelien 133
 
112 aurelien 134
	    return $valeurs_collectees;
95 aurelien 135
 
136
    }
137
 
112 aurelien 138
    private function verifierValeursStation($valeurs_a_verifier) {
139
 
140
    	$erreurs = array();
141
 
142
    	foreach($valeurs_a_verifier as $champ => $valeur) {
302 aurelien 143
    		if(trim($valeur) == '') {
144
    			$erreurs[$champ] .= ' Ce champ ne peut pas être vide.';
112 aurelien 145
    		}
302 aurelien 146
 
147
    		if($champ == 'station_code_insee' && !$this->estUnCodeInseeOuUnNumDpt($valeur)) {
148
    			$erreurs[$champ] .= ' La valeur de ce champ doit être un numéro de département sur 2 chiffres '.
149
    			                    'ou un code INSEE sur 5 chiffres';
150
    		}
151
 
112 aurelien 152
    	}
153
 
154
    	if(!empty($erreurs)) {
155
    		return $erreurs;
156
    	}
157
 
158
    	return true;
159
    }
160
 
302 aurelien 161
    private function estUnCodeInseeOuUnNumDpt($code) {
162
    	$lg = strlen($code);
163
    	return trim($code) != '' && is_numeric($code) && ($lg == 2 || $lg == 5);
164
    }
165
 
31 aurelien 166
    public function validerFormulaireModificationStation() {
167
 
302 aurelien 168
    	$valeurs_collectees = $this->collecterValeursFormulaireModificationStation();
169
    	$verification_ou_erreurs = $this->verifierValeursStation($valeurs_collectees);
31 aurelien 170
 
302 aurelien 171
    	if($verification_ou_erreurs !== true) {
172
 
173
    		$donnees = $valeurs_collectees;
174
    		$donnees['erreurs'] = $verification_ou_erreurs;
175
    		$this->afficherFormulaireModificationStation($donnees);
176
    		return;
177
    	}
178
 
31 aurelien 179
    	$station_dao = new StationDao();
302 aurelien 180
    	$retour_modification = $station_dao->modifierStation($verification_ou_erreurs['station_id'],$verification_ou_erreurs);
31 aurelien 181
 
95 aurelien 182
    	if($retour_modification) {
183
    		$this->afficherInformationsStation();
184
    		$this->setNavigation();
185
    	}
186
 
31 aurelien 187
    }
210 aurelien 188
 
189
    public function supprimerStation() {
190
 
191
    	$id_station_a_supprimer = $_POST['id_station_a_supprimer'];
192
 
193
    	$individus_station = $this->getIndividusStation($id_station_a_supprimer);
194
 
195
    	if(count($individus_station) > 0) {
196
    		$donnees = array();
197
    		$donnees['erreurs'] = 'Impossible de supprimer une station qui contient des données';
198
 
199
    		$this->id_station_en_cours = $id_station_a_supprimer;
200
    		$this->afficherInformationsStation($donnees);
201
    	} else {
202
    		$station_dao = new StationDao();
203
    		$retour_suppression = $station_dao->supprimerStation($id_station_a_supprimer);
204
 
205
    		$this->setNavigation();
206
    		$this->executerActionParDefaut();
207
    	}
208
 
209
    }
31 aurelien 210
 
211
	// +---------------------------------------------------------------------------------------------------------------+
212
    // METHODES D'AFFICHAGES D'INFORMATION
213
    public function afficherlisteStation($param = null) {
214
 
215
    	$id_utilisateur = AppControleur::getIdUtilisateur();
216
 
217
    	$donnees['stations'] = $this->getListeStations($id_utilisateur);
218
        $this->setSortie(self::RENDU_CORPS, $this->getVue('listes/station_liste', $donnees));
219
    }
220
 
210 aurelien 221
	public function getFicheInformationsStation($donnees = array()) {
31 aurelien 222
 
223
    	$id_station = $this->id_station_en_cours;
224
 
225
    	$donnees['id_station'] = $id_station;
226
    	$donnees['infos_station'] = $this->getInformationsStation($id_station);
210 aurelien 227
 
83 aurelien 228
    	$donnees['milieux'] = $this->getListeMilieux();
63 aurelien 229
 
210 aurelien 230
    	return $this->getVue('fiches/station_fiche', $donnees);
31 aurelien 231
 
232
    }
210 aurelien 233
 
234
    public function afficherInformationsStation($donnees = array()) {
235
 
236
    	$infos_station = $this->getFicheInformationsStation($donnees);
237
 
238
    	$this->setSortie(self::RENDU_CORPS, $infos_station);
239
 
240
    }
31 aurelien 241
 
242
    // +---------------------------------------------------------------------------------------------------------------+
243
    // METHODES POUR FABRIQUER LE MENU
70 aurelien 244
    public function construireMenuNavigation($id_espece_en_cours = null) {
31 aurelien 245
 
246
    	$id_station_en_cours = $this->id_station_en_cours;
247
 
63 aurelien 248
    	if(isset($_GET['id_espece'])) {
249
    		$id_espece_en_cours = $_GET['id_espece'];
250
    	}
251
 
252
 
31 aurelien 253
    	$stations = $this->getListeStations();
254
 
63 aurelien 255
    	foreach($stations as &$station) {
256
 
70 aurelien 257
    		$station['url'] = Liens::getUrlConsultationFicheStation($station['id']);
31 aurelien 258
    	}
259
 
83 aurelien 260
    	if($id_station_en_cours != null && $id_station_en_cours != 'saisie') {
31 aurelien 261
    		$especes_station_en_cours = $this->getEspecesStation($id_station_en_cours);
262
 
263
    	    foreach($especes_station_en_cours as &$espece) {
70 aurelien 264
    			$espece['url'] = Liens::getUrlConsultationEspeceStation($id_station_en_cours, $espece['id_espece']);
31 aurelien 265
    	    }
266
    		$stations[$id_station_en_cours]['especes'] = $especes_station_en_cours;
267
    	}
268
 
269
    	$donnees['stations'] = $stations;
270
    	$donnees['id_station_en_cours'] = $id_station_en_cours;
70 aurelien 271
 
272
    	$donnees['id_espece_en_cours'] = $id_espece_en_cours;
31 aurelien 273
 
274
    	$menu_navigation = $this->getVue('navigation/menu', $donnees);
275
 
276
        return $menu_navigation;
277
 
278
    }
279
 
280
    public function setNavigation() {
281
    	$this->setSortie(self::RENDU_NAVIGATION, $this->construireMenuNavigation());
282
    }
283
 
284
    // +---------------------------------------------------------------------------------------------------------------+
285
    // METHODE D'APPELS AUX DAOS
286
    protected function getListeStations() {
287
 
288
    	$station_dao = new StationDao();
289
    	return $station_dao->getListeStations();
290
    }
291
 
292
    private function getInformationsStation($id_station) {
293
 
294
    	$station_dao = new StationDao();
295
    	$infos_station = $station_dao->getInformationsStation($id_station);
296
 
297
    	$infos_station['individus'] = $this->getIndividusStation($id_station);
298
 
299
    	return $infos_station;
300
    }
301
 
302
    private function getEspecesStation($id_station) {
303
 
304
    	$espece_dao = new EspeceDao();
305
    	$liste_especes = $espece_dao->getListeEspecesPourStation($id_station);
306
 
307
    	return $liste_especes;
308
    }
309
 
310
    public function getIndividusStation($id_station) {
311
 
312
    	$individu_dao = new IndividuDao();
313
    	$liste_individus = $individu_dao->getListeIndividusPourStation($id_station);
314
 
315
    	return $liste_individus;
316
    }
43 aurelien 317
 
318
	public function getIndividusStationPourEspece($id_station,$id_espece) {
319
 
320
    	$individu_dao = new IndividuDao();
321
    	$liste_individus = $individu_dao->getListeIndividusPourStationPourEspece($id_station, $id_espece);
322
 
323
    	return $liste_individus;
324
    }
83 aurelien 325
 
326
    public function getListeMilieux() {
327
 
328
    	$triple_dao = new TripleDao();
329
    	$liste_milieux = $triple_dao->getListeMilieux();
330
 
331
    	return $liste_milieux;
332
    }
70 aurelien 333
}
334
?>