Subversion Repositories Sites.obs-saisons.fr

Rev

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

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