Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 63 | Rev 83 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 63 Rev 70
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe de gestion des observations.
4
 * Classe de gestion des observations.
5
 *
5
 *
6
 * @package     ODS_saisie
6
 * @package     ODS_saisie
7
 * @category    Php 5.2
7
 * @category    Php 5.2
8
 * @author      Aurélien Peronnet <aurelien@tela-botanica.org>
8
 * @author      Aurélien Peronnet <aurelien@tela-botanica.org>
9
 * @copyright   2010 Tela-Botanica
9
 * @copyright   2010 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
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
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 $
12
 * @version     SVN: $Id: Fiche.php 152 2010-09-06 16:19:12Z jpm $
13
 */
13
 */
14
class Observation extends aControleur {
14
class Observation extends aControleur {
15
   
15
   
16
	private $id_observation_en_cours = null;
16
	private $id_observation_en_cours = null;
17
   
17
   
18
    public function __construct()  {
18
    public function __construct()  {
19
    	
19
    	
20
		parent::__construct();
20
		parent::__construct();
21
        $this->initialiser();
21
        $this->initialiser();
22
    }
22
    }
23
    
23
    
24
    public function initialiser() {
24
    public function initialiser() {
-
 
25
    	
25
    	
26
    	if(isset($_GET['$id_observation'])) {
-
 
27
    		$this->id_observation_en_cours = $_GET['id_observation'];
26
    	$this->id_observation_en_cours = $_GET['id_observation'];
28
    	}
27
    	$this->setNavigation();
29
    	$this->setNavigation();
28
    }
30
    }
29
    
31
    
30
    public function executerActionParDefaut() {
32
    public function executerActionParDefaut() {
31
    	return $this->afficherFormulaireAjoutIndividu();
33
    	return $this->afficherFormulaireAjoutIndividu();
32
    }
34
    }
33
    
35
    
34
    
36
    
35
    public function afficherFormulaireAjoutObservation($id_individu) {
37
    public function afficherFormulaireAjoutObservation($id_individu) {
36
    	$donnees = array();
38
    	$donnees = array();
37
    	$formulaire = $this->getVue('formulaires/observation_saisie',$donnees);
39
    	$formulaire = $this->getVue('formulaires/observation_saisie',$donnees);
38
    	$this->setSortie(self::RENDU_CORPS, $formulaire);     
40
    	$this->setSortie(self::RENDU_CORPS, $formulaire);     
39
    }
41
    }
40
    
42
    
41
    public function afficherFormulaireModificationObservation() {
43
    public function afficherFormulaireModificationObservation() {
42
    	
44
    	
43
    	$id_individu_a_modifier_observation = $_GET['id_individu'];
45
    	$id_individu_a_modifier_observation = $_GET['id_individu'];
44
    	
46
    	
45
    	$id_espece = $_GET['id_espece'];
47
    	$id_espece = $_GET['id_espece'];
46
    	$id_station = $_GET['id_station'];
48
    	$id_station = $_GET['id_station'];
47
    	
49
    	
48
    	$id_utilisateur = AppControleur::getUtilisateur()->getIdentifiantNumerique();
50
    	$id_utilisateur = AppControleur::getUtilisateur()->getIdentifiantNumerique();
49
    	
51
    	
50
    	$espece = new Espece();
52
    	$espece = new Espece();
51
    	$evenements = $espece->getListeEvenementPourEspece($id_espece);
53
    	$evenements = $espece->getListeEvenementPourEspece($id_espece);
52
    	
54
    	
53
    	$station = new Station();
55
    	$station = new Station();
54
    	
56
    	
55
    	$individus = $station->getIndividusStationPourEspece($id_station,$id_espece);
57
    	$individus = $station->getIndividusStationPourEspece($id_station,$id_espece);
56
    	foreach($individus as &$individu) {
58
    	foreach($individus as &$individu) {
57
    		
59
    		
58
    		$observation = new Observation();
60
    		$observation = new Observation();
59
    		$individu['observations'] = $observation->getListeObservationsPourIndividu($individu['id_individu']);
61
    		$individu['observations'] = $observation->getListeObservationsPourIndividu($individu['id_individu']);
60
    		$individu['url'] = Liens::instance()->getUrlConsultationFicheIndividu($id_station,$id_espece, $individu['id_individu']);
62
    		$individu['url'] = Liens::getUrlConsultationFicheIndividu($id_station,$id_espece, $individu['id_individu']);
61
    		
63
    		
62
    	}
64
    	}
63
    	
65
    	
64
    	$donnees['evenements'] = $evenements;
66
    	$donnees['evenements'] = $evenements;
65
    	$donnees['stades'] = $this->aplatirListeEvenementHierachiseeEnListeParStades($evenements);
67
    	$donnees['stades'] = $this->aplatirListeEvenementHierachiseeEnListeParStades($evenements);
66
    	$donnees['individus'] = $individus;
68
    	$donnees['individus'] = $individus;
67
    	$donnees['id_station'] = $_GET['id_station'];
69
    	$donnees['id_station'] = $_GET['id_station'];
68
    	$donnees['id_espece'] = $_GET['id_espece'];
70
    	$donnees['id_espece'] = $_GET['id_espece'];
69
    	
71
    	
70
    	if(isset($_GET['annee'])) {
72
    	if(isset($_GET['annee'])) {
71
    		$donnees['annee'] = $_GET['annee'];
73
    		$donnees['annee'] = $_GET['annee'];
72
    	} else {
74
    	} else {
73
    		$donnees['annee'] = date('Y');
75
    		$donnees['annee'] = date('Y');
74
    	}
76
    	}
75
    	
77
    	
76
    	$donnees['id_individu_a_modifier_observation'] = $id_individu_a_modifier_observation;
78
    	$donnees['id_individu_a_modifier_observation'] = $id_individu_a_modifier_observation;
77
 
79
 
78
        $this->setSortie(self::RENDU_CORPS, $this->getVue('formulaires/evenement_modification', $donnees));
80
        $this->setSortie(self::RENDU_CORPS, $this->getVue('formulaires/evenement_modification', $donnees));
79
    }
81
    }
80
    
82
    
81
    // +---------------------------------------------------------------------------------------------------------------+
83
    // +---------------------------------------------------------------------------------------------------------------+
82
    // METHODES POUR FABRIQUER LE MENU    
84
    // METHODES POUR FABRIQUER LE MENU    
83
    public function setNavigation() {
85
    public function setNavigation() {
84
    	
86
    	
85
    	$station = new Station();
87
    	$station = new Station();
86
    	$this->setSortie(self::RENDU_NAVIGATION, $station->construireMenuNavigation());
88
    	$this->setSortie(self::RENDU_NAVIGATION, $station->construireMenuNavigation());
87
    }
89
    }
88
    
90
    
89
    // +---------------------------------------------------------------------------------------------------------------+
91
    // +---------------------------------------------------------------------------------------------------------------+
90
    // METHODES APPELEES LORS DE LA VALIDATION D'UN FORMULAIRE
92
    // METHODES APPELEES LORS DE LA VALIDATION D'UN FORMULAIRE
91
    public function validerFormulaireAjoutObservation() {
93
    public function validerFormulaireAjoutObservation() {
92
    	
94
    	
93
    	$valeurs_formulaires = $_POST;
95
    	$valeurs_formulaires = $_POST;
94
    	
96
    	
95
    	$valeurs_verifiees = array();
97
    	$valeurs_verifiees = array();
96
    	
98
    	
97
    	$observation_dao = new ObservationDao();
99
    	$observation_dao = new ObservationDao();
98
    	$observation_dao->ajouterObservation($valeurs_verifiees);
100
    	$observation_dao->ajouterObservation($valeurs_verifiees);
99
    	
101
    	
100
    }
102
    }
101
    
103
    
102
    public function validerFormulaireModificationObservation() {
104
    public function validerFormulaireModificationObservation() {
103
    	    	
105
    	    	
104
    	$valeurs_verifiees = $this->collecterValeursFormulaireModificationObservation();
106
    	$valeurs_verifiees = $this->collecterValeursFormulaireModificationObservation();
105
    	
107
    	
106
    	$observation_dao = new ObservationDao();
108
    	$observation_dao = new ObservationDao();
107
    	$observation_dao->modifierObservation($valeurs_verifiees['id_individu'], $valeurs_verifiees);
109
    	$observation_dao->modifierObservation($valeurs_verifiees['id_individu'], $valeurs_verifiees);
108
    	
110
    	
109
    	$individu = new Individu();
111
    	$individu = new Individu();
110
    	
112
    	
111
    	$this->setSortie(self::RENDU_CORPS, $individu->getListeIndividu());
113
    	$this->setSortie(self::RENDU_CORPS, $individu->getListeIndividu());
112
    	
114
    	
113
    }
115
    }
114
    
116
    
115
	public function validerFormulaireModificationObservationAjax() {
117
	public function validerFormulaireModificationObservationAjax() {
116
    	
118
    	
117
    	$valeurs_verifiees = $this->collecterValeursFormulaireModificationObservation();
119
    	$valeurs_verifiees = $this->collecterValeursFormulaireModificationObservation();
118
    	
120
    	
119
    	$observation_dao = new ObservationDao();
121
    	$observation_dao = new ObservationDao();
120
    	$observation_dao->modifierObservation($valeurs_verifiees['id_individu'],$valeurs_verifiees);
122
    	$observation_dao->modifierObservation($valeurs_verifiees['id_individu'],$valeurs_verifiees);
121
    	
123
    	
122
    	$retour = array('reponse' => 'OK');
124
    	$retour = array('reponse' => 'OK');
123
 
125
 
124
        echo json_encode($retour);
126
        echo json_encode($retour);
125
        exit;
127
        exit;
126
    }
128
    }
127
    
129
    
128
	private function collecterValeursFormulaireModificationObservation() {
130
	private function collecterValeursFormulaireModificationObservation() {
129
		
131
		
130
		$valeurs_verifiees = array();
132
		$valeurs_verifiees = array();
131
		
133
		
132
		foreach($_POST as $nom_champ => $valeur) {
134
		foreach($_POST as $nom_champ => $valeur) {
133
			
135
			
134
			$id_si_est_champ_observation = $this->renvoyerIdEvenementSiChampDeFormulaireObservation($nom_champ);
136
			$id_si_est_champ_observation = $this->renvoyerIdEvenementSiChampDeFormulaireObservation($nom_champ);
135
			
137
			
136
			if($id_si_est_champ_observation && trim($valeur) != '') {
138
			if($id_si_est_champ_observation && trim($valeur) != '') {
137
				$valeurs_verifiees[$nom_champ] = $valeur;
139
				$valeurs_verifiees[$nom_champ] = $valeur;
138
			}
140
			}
139
		}
141
		}
140
		
142
		
141
    	$valeurs_verifiees['id_individu'] = $_POST['id_individu'];
143
    	$valeurs_verifiees['id_individu'] = $_POST['id_individu'];
142
	    $valeurs_verifiees['annee_en_cours'] =  $_POST['annee_en_cours'];
144
	    $valeurs_verifiees['annee_en_cours'] =  $_POST['annee_en_cours'];
143
	    
145
	    
144
	    //TODO: verifier valeurs plus complètement
146
	    //TODO: verifier valeurs plus complètement
145
	    
147
	    
146
	    return $valeurs_verifiees;
148
	    return $valeurs_verifiees;
147
    	
149
    	
148
    }
150
    }
149
    
151
    
150
    private function renvoyerIdEvenementSiChampDeFormulaireObservation($champ) {
152
    private function renvoyerIdEvenementSiChampDeFormulaireObservation($champ) {
151
    	    	
153
    	    	
152
    	$tab_champ = split('observation_',$champ);
154
    	$tab_champ = split('observation_',$champ);
153
    	
155
    	
154
    	if(count($tab_champ) > 1 && is_numeric($tab_champ[1])) {
156
    	if(count($tab_champ) > 1 && is_numeric($tab_champ[1])) {
155
    		return $tab_champ[1];
157
    		return $tab_champ[1];
156
    	}
158
    	}
157
    	
159
    	
158
    	return false;
160
    	return false;
159
    }
161
    }
160
    
162
    
161
    // +---------------------------------------------------------------------------------------------------------------+
163
    // +---------------------------------------------------------------------------------------------------------------+
162
    // METHODES DE RECHERCHE DE DONNEES    
164
    // METHODES DE RECHERCHE DE DONNEES    
163
    public function getListeObservationsPourIndividu($id_individu, $annee = null) {
165
    public function getListeObservationsPourIndividu($id_individu, $annee = null) {
164
    	
166
    	
165
    	$observation_dao = new ObservationDao();
167
    	$observation_dao = new ObservationDao();
166
    	$observations_pour_individu = $observation_dao->getListeObservationsPourIndividu($id_individu, $annee);
168
    	$observations_pour_individu = $observation_dao->getListeObservationsPourIndividu($id_individu, $annee);
167
    	
169
    	
168
    	return $observations_pour_individu;
170
    	return $observations_pour_individu;
169
    }
171
    }
170
    
172
    
171
        
173
        
172
    private function aplatirListeEvenementHierachiseeEnListeParStades($liste_evenements_hierarchisee) {
174
    private function aplatirListeEvenementHierachiseeEnListeParStades($liste_evenements_hierarchisee) {
173
    	
175
    	
174
    	$liste_evenements_plate_par_stade = array();
176
    	$liste_evenements_plate_par_stade = array();
175
    	
177
    	
176
    	foreach($liste_evenements_hierarchisee as $evenement_hierarchise) {
178
    	foreach($liste_evenements_hierarchisee as $evenement_hierarchise) {
177
    		foreach($evenement_hierarchise['stades'] as $id_stade => $stade) {
179
    		foreach($evenement_hierarchise['stades'] as $id_stade => $stade) {
178
    			$liste_evenements_plate_par_stade[$id_stade] = $stade;
180
    			$liste_evenements_plate_par_stade[$id_stade] = $stade;
179
    		}
181
    		}
180
    	}
182
    	}
181
    	
183
    	
182
    	return $liste_evenements_plate_par_stade;
184
    	return $liste_evenements_plate_par_stade;
183
    }
185
    }
184
    
186
    
185
    // +---------------------------------------------------------------------------------------------------------------+
187
    // +---------------------------------------------------------------------------------------------------------------+
186
    // METHODES UTILITAIRES STATIQUES (UTILES POUR LES FORMULAIRES)
188
    // METHODES UTILITAIRES STATIQUES (UTILES POUR LES FORMULAIRES)
187
    public static function individuAObservationValidePourStade($individu, $annee, $evenement, $id_stade) {
189
    public static function individuAObservationValidePourStade($individu, $annee, $evenement, $id_stade) {
188
    	
190
    	
189
    	return (isset($individu['observations'][$annee][$evenement][$id_stade]) && trim($individu['observations'][$annee][$evenement][$id_stade]) != '');
191
    	return (isset($individu['observations'][$annee][$evenement][$id_stade]) && trim($individu['observations'][$annee][$evenement][$id_stade]) != '');
190
    }
192
    }
191
    
193
    
192
    public static function renvoyerObservationStadePourIndividu($individu, $annee, $evenement, $id_stade) {
194
    public static function renvoyerObservationStadePourIndividu($individu, $annee, $evenement, $id_stade) {
193
    	    	
195
    	    	
194
    	if(self::individuAObservationValidePourStade($individu, $annee, $evenement, $id_stade)) {
196
    	if(self::individuAObservationValidePourStade($individu, $annee, $evenement, $id_stade)) {
195
    		return $individu['observations'][$annee][$evenement][$id_stade];
197
    		return $individu['observations'][$annee][$evenement][$id_stade];
196
    	}
198
    	}
197
    	
199
    	
198
    	return '';
200
    	return '';
199
    } 
201
    } 
200
} 
202
}
201
203
?>
-
 
204
202
205