Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 215 | Rev 254 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 215 Rev 228
1
<?php
1
<?php
2
 
2
 
3
class OdsObservation extends OdsTriple {
3
class OdsObservation extends OdsTriple {
4
 
4
 
5
	const PREFIXE = 'get';
5
	const PREFIXE = 'get';
6
	const ABBR_LISTE_EVENEMENTS = 'evenement';
6
	const ABBR_LISTE_EVENEMENTS = 'evenement';
7
	
7
	
8
	
8
	
9
/**
9
/**
10
 * Méthodes d'extractions d'informations
10
 * Méthodes d'extractions d'informations
11
 */
11
 */
12
	
12
	
13
	/**
13
	/**
14
     * Méthode appelée avec une requête de type GET.
14
     * Méthode appelée avec une requête de type GET.
15
     *
15
     *
16
     */
16
     */
17
    function getElement($param = array()) {
17
    function getElement($param = array()) {
18
    	
18
    	
19
    	$type = $param[0];
19
    	$type = $param[0];
20
    	    	
20
    	    	
21
        if ($type == '*' || is_numeric($type)) {
21
        if ($type == '*' || is_numeric($type)) {
22
            $info = $this->getElementParDefaut($param);
22
            $info = $this->getElementParDefaut($param);
23
        } else {
23
        } else {
24
            $methode = self::PREFIXE.$type;
24
            $methode = self::PREFIXE.$type;
25
            if (method_exists($this, $methode)) {
25
            if (method_exists($this, $methode)) {
26
                array_shift($param);
26
                array_shift($param);
27
                $info = $this->$methode($param);
27
                $info = $this->$methode($param);
28
            } else {
28
            } else {
29
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
29
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
30
            }
30
            }
31
        }
31
        }
32
 
32
 
33
        $this->envoyer($info);
33
        $this->envoyer($info);
34
    }
34
    }
35
    
35
    
36
	private function getElementParDefaut($params) {
36
	private function getElementParDefaut($params) {
37
   		
37
   		
38
   	}
38
   	}
39
   	
39
   	
40
   	private function getObservationsPourStation($params) {
40
   	private function getObservationsPourStation($params) {
41
   		
41
   		
42
   		$id_station = $params[0];
42
   		$id_station = $params[0];
43
   		$annee = $params[1];
43
   		$annee = $params[1];
44
   		
44
   		
45
   		return ;
45
   		return ;
46
 
46
 
47
   	}
47
   	}
48
    
48
    
49
    private function getObservationsPourIndividu($params) {
49
    private function getObservationsPourIndividu($params) {
50
    	
50
    	
51
    	$id_individu = $params[0];
51
    	$id_individu = $params[0];
52
   		$annee = $params[1];
52
   		$annee = $params[1];
53
   		
53
   		
54
   		$requete_liste_observation_individu = 'SELECT * FROM ods_observations '.
54
   		$requete_liste_observation_individu = 'SELECT * FROM ods_observations '.
55
   												  'WHERE oo_ce_individu ='.$this->proteger($id_individu).' '.
55
   												  'WHERE oo_ce_individu ='.$this->proteger($id_individu).' '.
-
 
56
   												  'AND DAY(oo_date) != "00" '.
56
   												  'ORDER BY YEAR(oo_date) DESC, MONTH(oo_date) ASC, DAY(oo_date) ASC '; 
57
   												  'ORDER BY YEAR(oo_date) DESC, MONTH(oo_date) ASC, DAY(oo_date) ASC '; 
57
   		
58
   		
58
   		$liste_observation_individu = $this->executerRequete($requete_liste_observation_individu);
59
   		$liste_observation_individu = $this->executerRequete($requete_liste_observation_individu);
59
   		
60
   		
60
   		$liste_observation_individu_formatees = array();
61
   		$liste_observation_individu_formatees = array();
61
   		
62
   		
62
   		foreach($liste_observation_individu as $observation_individu) {
63
   		foreach($liste_observation_individu as $observation_individu) {
63
   			
64
   			
64
   			$annee_obs = date("Y",strtotime($observation_individu['oo_date']));
65
   			$annee_obs = date("Y",strtotime($observation_individu['oo_date']));
65
   			$stade_observation_complet = $this->getInformationEvenementParId($observation_individu['oo_ce_evenement']);
66
   			$stade_observation_complet = $this->getInformationEvenementParId($observation_individu['oo_ce_evenement']);
66
   			
67
   			
67
   			$abbr_stade_observation = $stade_observation_complet['ot_cle'];
68
   			$abbr_stade_observation = $stade_observation_complet['ot_cle'];
68
   			
69
   			
69
   			$infos_stades = $this->renvoyerInformationStadeAPartirChaineTriple($abbr_stade_observation);
70
   			$infos_stades = $this->renvoyerInformationStadeAPartirChaineTriple($abbr_stade_observation);
70
   			
71
   			
71
   			$titre_stade = $infos_stades['nom'];
72
   			$titre_stade = $infos_stades['nom'];
72
   			$numero_stade = $infos_stades['numero'];
73
   			$numero_stade = $infos_stades['numero'];
73
   			$abreviation_stade = $infos_stades['abreviation'];
74
   			$abreviation_stade = $infos_stades['abreviation'];
74
   			
75
   			
-
 
76
   			$tableau_date =  date_parse($observation_individu['oo_date']);
-
 
77
   			
-
 
78
   			if(!$this->estUneDateInvalide($tableau_date['day'], $tableau_date['month'], $tableau_date['year'])) {
-
 
79
   				   			
75
   			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observation_individu['oo_date']));
80
	   			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observation_individu['oo_date']));
76
   			
81
	   			
-
 
82
	   			$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade] = $date_observation_formatee;
77
   			$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade] = $date_observation_formatee;
83
	   			$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade] = $date_observation_formatee;
78
   			$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade] = $date_observation_formatee;
84
   			}
79
   			
85
   			
80
   		}
86
   		}
81
   		
87
   		
82
   		krsort($liste_observation_individu_formatees);
88
   		krsort($liste_observation_individu_formatees);
83
    		    	
89
    		    	
84
		return $liste_observation_individu_formatees;
90
		return $liste_observation_individu_formatees;
85
    }
91
    }
86
    
92
    
87
/**
93
/**
88
 * Méthodes de création et modification d'informations
94
 * Méthodes de création et modification d'informations
89
 */    
95
 */    
90
       
96
       
91
     /**
97
     /**
92
     * Méthode appelée pour mettre à jour un élément
98
     * Méthode appelée pour mettre à jour un élément
93
     */
99
     */
94
    public function updateElement($uid, $params)    {
100
    public function updateElement($uid, $params)    {
95
    	
101
    	
96
    	$elements_requis = array('id_participant','id_individu');
102
    	$elements_requis = array('id_participant','id_individu');
97
    	$erreurs = array();
103
    	$erreurs = array();
98
        
104
        
99
    	foreach($elements_requis as $requis) {
105
    	foreach($elements_requis as $requis) {
100
    		if(!isset($params[$requis])) {
106
    		if(!isset($params[$requis])) {
101
    			$erreurs[$requis] = 'erreur ';
107
    			$erreurs[$requis] = 'erreur ';
102
    		}
108
    		}
103
    	}
109
    	}
104
    	
110
    	
105
    	if(!isset($params['annee_en_cours'])) {
111
    	if(!isset($params['annee_en_cours'])) {
106
    		$annee_en_cours = date('Y');
112
    		$annee_en_cours = date('Y');
107
    	} else {
113
    	} else {
108
    		$annee_en_cours = $params['annee_en_cours'];
114
    		$annee_en_cours = $params['annee_en_cours'];
109
    	}
115
    	}
110
    	
116
    	
111
    	if(!empty($erreurs)) {
117
    	if(!empty($erreurs)) {
112
    		$this->envoyer($erreurs);
118
    		$this->envoyer($erreurs);
113
    	}
119
    	}
114
    	
120
    	
115
    	$id_participant = $params['id_participant'];
121
    	$id_participant = $params['id_participant'];
116
    	unset($params['id_participant']);
122
    	unset($params['id_participant']);
117
    	$id_individu = $params['id_individu'];
123
    	$id_individu = $params['id_individu'];
118
    	unset($params['id_individu']);
124
    	unset($params['id_individu']);
119
    	
125
    	
120
    	$requete_obs_deja_saisies_cette_annee = 'SELECT * FROM ods_observations WHERE oo_ce_individu = '.$this->proteger($id_individu).' '.
126
    	$requete_obs_deja_saisies_cette_annee = 'SELECT * FROM ods_observations WHERE oo_ce_individu = '.$this->proteger($id_individu).' '.
121
    		'AND oo_ce_participant = '.$this->proteger($id_participant).' '.
127
    		'AND oo_ce_participant = '.$this->proteger($id_participant).' '.
122
    		'AND YEAR(oo_date) = '.$this->proteger($annee_en_cours);
128
    		'AND YEAR(oo_date) = '.$this->proteger($annee_en_cours);
123
 
129
 
124
    	$obs_deja_saisies_cette_annee = $this->executerRequete($requete_obs_deja_saisies_cette_annee);
130
    	$obs_deja_saisies_cette_annee = $this->executerRequete($requete_obs_deja_saisies_cette_annee);
125
    	    	    	
131
    	    	    	
126
    	foreach($params as $cle => $valeur) {
132
    	foreach($params as $cle => $valeur) {
127
    		if($est_une_valeur_obs = $this->renvoyerIdEvenementSiChampDeFormulaireObservation($cle)) {
133
    		if($est_une_valeur_obs = $this->renvoyerIdEvenementSiChampDeFormulaireObservation($cle)) {
128
    			
134
    			
129
    			$valeur = $this->formaterDateObservationPourBdd($valeur);
135
    			$valeur = $this->formaterDateObservationPourBdd($valeur);
130
    			    			
136
    			    			
131
    			$obs_a_traiter = array('date_evenement' => $valeur,
137
    			$obs_a_traiter = array('date_evenement' => $valeur,
132
    									'id_evenement' => $est_une_valeur_obs,
138
    									'id_evenement' => $est_une_valeur_obs,
133
    									'id_individu' => $id_individu,
139
    									'id_individu' => $id_individu,
134
    									'commentaire' => '');
140
    									'commentaire' => '');
135
    			
141
    			
136
    			if($a_modifier_ou_inserer = $this->renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($est_une_valeur_obs,$obs_deja_saisies_cette_annee)) {
142
    			if($a_modifier_ou_inserer = $this->renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($est_une_valeur_obs,$obs_deja_saisies_cette_annee)) {
137
    				$obs_a_traiter['id_observation'] = $a_modifier_ou_inserer;
143
    				$obs_a_traiter['id_observation'] = $a_modifier_ou_inserer;
138
    				$this->modifierObservation($id_participant, $obs_a_traiter);
144
    				$this->modifierObservation($id_participant, $obs_a_traiter);
139
    			} else {
145
    			} else {
140
    				$this->insererObservation($id_participant, $obs_a_traiter);
146
    				$this->insererObservation($id_participant, $obs_a_traiter);
141
    			}
147
    			}
142
    		}
148
    		}
143
    	}
149
    	}
144
       
150
       
145
        $this->envoyer();      
151
        $this->envoyer();      
146
    }
152
    }
147
    
153
    
148
    private function insererObservation($id_participant, $donnees_obs_a_inserer) {
154
    private function insererObservation($id_participant, $donnees_obs_a_inserer) {
149
    	
155
    	
150
    	$nouvel_ordre = 1;
156
    	$nouvel_ordre = 1;
151
    	
157
    	
152
    	$requete_max_ordre = 'SELECT MAX(oo_ordre) as max_ordre FROM ods_observations WHERE '.
158
    	$requete_max_ordre = 'SELECT MAX(oo_ordre) as max_ordre FROM ods_observations WHERE '.
153
    		'oo_ce_participant = '.$this->proteger($id_participant);
159
    		'oo_ce_participant = '.$this->proteger($id_participant);
154
    	
160
    	
155
    	$resultat_requete_ordre = $this->executerRequete($requete_max_ordre);
161
    	$resultat_requete_ordre = $this->executerRequete($requete_max_ordre);
156
    	
162
    	
157
    	if(count($resultat_requete_ordre) > 0) {
163
    	if(count($resultat_requete_ordre) > 0) {
158
    		$nouvel_ordre = $resultat_requete_ordre[0]['max_ordre'] + 1; 
164
    		$nouvel_ordre = $resultat_requete_ordre[0]['max_ordre'] + 1; 
159
    	}
165
    	}
160
    	
166
    	
161
    	$requete_nouvelle_observation = 'INSERT INTO ods_observations '.
167
    	$requete_nouvelle_observation = 'INSERT INTO ods_observations '.
162
    		'(oo_ce_participant, oo_ordre, oo_ce_individu, oo_ce_evenement, oo_date, oo_commentaire, oo_date_saisie, oo_date_modification) '.
168
    		'(oo_ce_participant, oo_ordre, oo_ce_individu, oo_ce_evenement, oo_date, oo_commentaire, oo_date_saisie, oo_date_modification) '.
163
    		'VALUES '.
169
    		'VALUES '.
164
    		'( '.
170
    		'( '.
165
    		    $this->proteger($id_participant).','.
171
    		    $this->proteger($id_participant).','.
166
	    		$this->proteger($nouvel_ordre).','.
172
	    		$this->proteger($nouvel_ordre).','.
167
	    		$this->proteger($donnees_obs_a_inserer['id_individu']).','.
173
	    		$this->proteger($donnees_obs_a_inserer['id_individu']).','.
168
	    		$this->proteger($donnees_obs_a_inserer['id_evenement']).','.
174
	    		$this->proteger($donnees_obs_a_inserer['id_evenement']).','.
169
	    		$this->proteger($donnees_obs_a_inserer['date_evenement']).','.
175
	    		$this->proteger($donnees_obs_a_inserer['date_evenement']).','.
170
	    		'"",'.
176
	    		'"",'.
171
	    		'NOW(),'.
177
	    		'NOW(),'.
172
	    		'NOW()'.
178
	    		'NOW()'.
173
    		')'; 
179
    		')'; 
174
	    		
180
	    		
175
	    return $this->executerRequeteSimple($requete_nouvelle_observation);
181
	    return $this->executerRequeteSimple($requete_nouvelle_observation);
176
    }
182
    }
177
    
183
    
178
	private function modifierObservation($id_participant, $donnees_obs_a_inserer) {
184
	private function modifierObservation($id_participant, $donnees_obs_a_inserer) {
179
 
185
 
180
    	$requete_modification_observation = 'UPDATE ods_observations '.
186
    	$requete_modification_observation = 'UPDATE ods_observations '.
181
    		'SET '.
187
    		'SET '.
182
    			'oo_date = '.$this->proteger($donnees_obs_a_inserer['date_evenement']).', '. 
188
    			'oo_date = '.$this->proteger($donnees_obs_a_inserer['date_evenement']).', '. 
183
    			'oo_commentaire = '.$this->proteger($donnees_obs_a_inserer['commentaire']).', '. 
189
    			'oo_commentaire = '.$this->proteger($donnees_obs_a_inserer['commentaire']).', '. 
184
    			'oo_date_modification = NOW() '.
190
    			'oo_date_modification = NOW() '.
185
    		'WHERE oo_id_observation = '.$donnees_obs_a_inserer['id_observation'].' '.
191
    		'WHERE oo_id_observation = '.$donnees_obs_a_inserer['id_observation'].' '.
186
    		'AND oo_ce_participant = '.$this->proteger($id_participant);
192
    		'AND oo_ce_participant = '.$this->proteger($id_participant);
187
    	
193
    	
188
    	return $this->executerRequeteSimple($requete_modification_observation);
194
    	return $this->executerRequeteSimple($requete_modification_observation);
189
    }
195
    }
190
    
196
    
191
    private function renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($id_evenement, $tableau_observations_cette_annee) {
197
    private function renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($id_evenement, $tableau_observations_cette_annee) {
192
    	
198
    	
193
    	foreach($tableau_observations_cette_annee as $observation_cette_annee) {
199
    	foreach($tableau_observations_cette_annee as $observation_cette_annee) {
194
    		
200
    		
195
    		if($id_evenement == $observation_cette_annee['oo_ce_evenement']) {
201
    		if($id_evenement == $observation_cette_annee['oo_ce_evenement']) {
196
    			return $observation_cette_annee['oo_id_observation'];
202
    			return $observation_cette_annee['oo_id_observation'];
197
    		}
203
    		}
198
    	}
204
    	}
199
    	
205
    	
200
    	return false;
206
    	return false;
201
    }
207
    }
202
    
208
    
203
	private function renvoyerIdEvenementSiChampDeFormulaireObservation($champ) {
209
	private function renvoyerIdEvenementSiChampDeFormulaireObservation($champ) {
204
    	    	
210
    	    	
205
    	$tab_champ = split('observation_',$champ);
211
    	$tab_champ = split('observation_',$champ);
206
    	
212
    	
207
    	if(count($tab_champ) > 1 && is_numeric($tab_champ[1])) {
213
    	if(count($tab_champ) > 1 && is_numeric($tab_champ[1])) {
208
    		return $tab_champ[1];
214
    		return $tab_champ[1];
209
    	}
215
    	}
210
    	
216
    	
211
    	return false;
217
    	return false;
212
    }
218
    }
213
    
219
    
214
    private function formaterDateObservationPourBdd($date) {
220
    private function formaterDateObservationPourBdd($date) {
215
		    		
221
		    		
216
		$format = $this->config['appli']['format_date'];
222
		$format = $this->config['appli']['format_date'];
217
					
223
					
218
		if(!isset($format)) {
224
		if(!isset($format)) {
219
			$format = 'd/m/Y';
225
			$format = 'd/m/Y';
220
		}
226
		}
221
		
227
		
222
		$recherche = array('d','m','Y');
228
		$recherche = array('d','m','Y');
223
		$remplacement = array('([0-9]{1,2})','([0-9]{1,2})','([0-9]{4})');
229
		$remplacement = array('([0-9]{1,2})','([0-9]{1,2})','([0-9]{4})');
224
		
230
		
225
		$pattern_date_simple = str_replace($recherche, $remplacement, $format);
231
		$pattern_date_simple = str_replace($recherche, $remplacement, $format);
226
		
232
		
227
		$date_tab = split('/', $date);
233
		$date_tab = split('/', $date);
228
		$time = mktime(0,0,0,$date_tab[1],$date_tab[0],$date_tab[2]);
234
		$time = mktime(0,0,0,$date_tab[1],$date_tab[0],$date_tab[2]);
229
		
235
		
230
		if($this->estUneDateInvalide($date_tab[1],$date_tab[0],$date_tab[2])) {
236
		if($this->estUneDateInvalide($date_tab[1],$date_tab[0],$date_tab[2])) {
231
			$date_a_renvoyer = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0];
237
			$date_a_renvoyer = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0];
232
		} else {
238
		} else {
233
			
239
			
234
			if(!ereg($pattern_date_simple, $date)) {			
240
			if(!ereg($pattern_date_simple, $date)) {			
235
				$time = strtotime($date);
241
				$time = strtotime($date);
236
			}
242
			}
237
			
243
			
238
			$date_a_renvoyer = date('Y-m-d h:i:s', $time); 	
244
			$date_a_renvoyer = date('Y-m-d h:i:s', $time); 	
239
		}	
245
		}	
240
		
246
		
241
		return $date_a_renvoyer;
247
		return $date_a_renvoyer;
242
	} 
248
	} 
243
	
249
	
244
	private function estUneDateInvalide($jour, $mois, $annee) {
250
	private function estUneDateInvalide($jour, $mois, $annee) {
245
		return ($jour == '00' || $mois == '00' || $annee == '0000');
251
		return ($jour == '00' || $mois == '00' || $annee == '0000');
246
	}
252
	}
247
   
253
   
248
    /**
254
    /**
249
     * Méthode appelée pour supprimer un élément
255
     * Méthode appelée pour supprimer un élément
250
     */
256
     */
251
    public function deleteElement($uid) {
257
    public function deleteElement($uid) {
252
        
258
        
253
        // Envoie sur la sortie standard
259
        // Envoie sur la sortie standard
254
        $this->envoyer();
260
        $this->envoyer();
255
    }
261
    }
256
}
262
}
257
?>
263
?>