Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 284 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 284 Rev 324
Line 1... Line 1...
1
<?php
1
<?php
Line 2... Line 2...
2
 
2
 
Line 3... Line 3...
3
class OdsIndividu extends JRestService {
3
class OdsIndividu extends JRestService {
4
 
4
 
5
	const PREFIXE = 'get';
5
	const PREFIXE = 'get';
6
	
6
 
7
	/**
7
	/**
8
     * Méthode appelée avec une requête de type GET.
8
     * Méthode appelée avec une requête de type GET.
9
     *
9
     *
10
     */
10
     */
11
    function getElement($param = array()) {
11
    function getElement($param = array()) {
12
    	    	
12
 
13
    	$type = $param[0];
13
    	$type = $param[0];
14
    	
14
 
15
    	if ($type == '*' || is_numeric($type)) {
15
    	if ($type == '*' || is_numeric($type)) {
16
            $info = $this->getElementParDefaut($param);
16
            $info = $this->getElementParDefaut($param);
17
        } else {
17
        } else {
Line 21... Line 21...
21
                $info = $this->$methode($param);
21
                $info = $this->$methode($param);
22
            } else {
22
            } else {
23
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
23
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
24
            }
24
            }
25
        }
25
        }
26
       
26
 
27
        // Envoi sur la sortie standard
27
        // Envoi sur la sortie standard
28
        $this->envoyer($info);
28
        $this->envoyer($info);
29
    }
29
    }
30
   
30
 
31
    /**
31
    /**
32
     * Méthode appelée pour ajouter un élément.
32
     * Méthode appelée pour ajouter un élément.
33
     */
33
     */
34
    public function createElement($params) {
34
    public function createElement($params) {
35
    	
35
 
36
        $elements_requis = array('id_participant','id_espece','id_station','individu_nom');
36
      $elements_requis = array('id_participant','id_espece','id_station','individu_nom');
37
        
37
 
38
    	foreach($elements_requis as $requis) {
38
    	foreach($elements_requis as $requis) {
39
    		if(!isset($params[$requis])) {
39
    		if(!isset($params[$requis])) {
-
 
40
					//TODO: pourquoi est-ce que c'est commenté ça ?
40
    			//$erreurs[$requis] = 'erreur ';
41
    			//$erreurs[$requis] = 'erreur ';
41
    		}
42
    		}
42
    	}
43
    	}
43
    	
44
 
44
    	if(!empty($erreurs)) {
45
    	if(!empty($erreurs)) {
45
    		$this->envoyer($erreurs);
46
    		$this->envoyer($erreurs);
46
    	}
47
    	}
47
    	
48
 
-
 
49
			// commentaire optionnel
-
 
50
			$commentaire = !empty($params['individu_commentaire']) ? $params['individu_commentaire'] : '';
-
 
51
			// limité à 1000 caractères (pas besoin de renvoyer une erreur ici car c'est un cas très peu fréquent)
-
 
52
			$commentaire = substr($commentaire, 0, 1000);
-
 
53
 
48
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
54
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
49
					'(oi_ce_espece, oi_ce_station, oi_nom) '.
55
					'(oi_ce_espece, oi_ce_station, oi_nom, oi_commentaire) '.
50
					'VALUES ('.
56
					'VALUES ('.
51
							$this->proteger($params['id_espece']).','.
57
							$this->proteger($params['id_espece']).','.
52
							$this->proteger($params['id_station']).','.		
58
							$this->proteger($params['id_station']).','.
53
							$this->proteger($params['individu_nom']).')';	
59
							$this->proteger($params['individu_nom']).','.
-
 
60
							$this->proteger($commentaire).')';
54
		$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
61
			$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
55
		
62
 
56
    	
63
 
57
    	if(!$creation_individu) {
64
    	if(!$creation_individu) {
58
    		$retour['erreurs'] = 'erreur d\'insertion';
65
    		$retour['erreurs'] = 'erreur d\'insertion';
59
    	} else {
66
    	} else {
60
    		$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();
67
    		$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();
61
    	}
68
    	}
62
    	
69
 
63
    	$this->envoyer($retour);
70
    	$this->envoyer($retour);
64
    }
71
    }
65
   
72
 
66
    /**
73
    /**
67
     * Méthode appelée pour mettre à jour un élément
74
     * Méthode appelée pour mettre à jour un élément
68
     */
75
     */
69
    public function updateElement($uid, $params)    {
76
    public function updateElement($uid, $params)    {
70
    	
77
 
71
        if(isset($uid[0])) {
78
      if(isset($uid[0])) {
72
    		$id_individu = $uid[0];
79
    		$id_individu = $uid[0];
73
    	} else {
80
    	} else {
74
    		return;
81
    		return;
75
    	}
82
    	}
76
    	
83
 
-
 
84
			// commentaire optionnel
-
 
85
			$commentaire = !empty($params['individu_commentaire']) ? $params['individu_commentaire'] : '';
-
 
86
			// limité à 1000 caractères (pas besoin de renvoyer une erreur ici car c'est un cas très peu fréquent)
-
 
87
			$commentaire = substr($commentaire, 0, 1000);
-
 
88
 
77
        $requete_modification_individu = 'UPDATE ods_individus '.
89
      $requete_modification_individu = 'UPDATE ods_individus '.
78
					'SET oi_nom = '.$this->proteger($params['individu_nom']).' '.
90
			'SET oi_nom = '.$this->proteger($params['individu_nom']).' ';
79
        			'WHERE oi_id_individu = '.$this->proteger($id_individu);
-
 
80
        
91
 
-
 
92
			// mise à jour éventuelle du commentaire optionnel
-
 
93
			if(!empty($params['individu_commentaire'])) {
-
 
94
				$requete_modification_individu .= ', oi_commentaire = '.$this->proteger($params['individu_commentaire']).' ';
-
 
95
			}
-
 
96
      $requete_modification_individu .= 'WHERE oi_id_individu = '.$this->proteger($id_individu);
81
		$modification_individu = $this->executerRequeteSimple($requete_modification_individu);
97
			$modification_individu = $this->executerRequeteSimple($requete_modification_individu);
82
       
98
 
83
        $this->envoyer();      
99
      $this->envoyer();
84
    }
100
    }
85
   
101
 
86
    /**
102
    /**
87
     * Méthode appelée pour supprimer un élément
103
     * Méthode appelée pour supprimer un élément
88
     */
104
     */
89
    public function deleteElement($uid) {
105
    public function deleteElement($uid) {
90
    	
106
 
91
        if(isset($uid[0])) {
107
        if(isset($uid[0])) {
92
    		$id_participant = $uid[0];
108
    		$id_participant = $uid[0];
93
    	} else {
109
    	} else {
94
    		return;
110
    		return;
95
    	}
111
    	}
96
    	
112
 
97
    	if(isset($uid[1])) {
113
    	if(isset($uid[1])) {
98
    		$id_individu = $uid[1];
114
    		$id_individu = $uid[1];
99
    	} else {
115
    	} else {
100
    		return;
116
    		return;
101
    	}
117
    	}
102
    	    	
118
 
103
    	$requete_suppression_individu = 'DELETE FROM ods_individus '.
119
    	$requete_suppression_individu = 'DELETE FROM ods_individus '.
104
    		'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.
120
    		'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.
105
        	'AND oi_ce_station IN '.
121
        	'AND oi_ce_station IN '.
106
        		'(SELECT os_id_station FROM ods_stations '.
122
        		'(SELECT os_id_station FROM ods_stations '.
107
        			'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
123
        			'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
108
    			')';
124
    			')';
109
    	
125
 
110
    	$suppression_individu = $this->executerRequeteSimple($requete_suppression_individu);
126
    	$suppression_individu = $this->executerRequeteSimple($requete_suppression_individu);
111
    	
127
 
112
    	if(!$suppression_individu) {
128
    	if(!$suppression_individu) {
113
    		// TODO: comment gère t'on les erreurs ?
129
    		// TODO: comment gère t'on les erreurs ?
114
    	}
130
    	}
115
       
131
 
116
        // Envoie sur la sortie standard
132
        // Envoie sur la sortie standard
117
        $this->envoyer();
133
        $this->envoyer();
118
    }
134
    }
119
    
135
 
120
    private function getElementParDefaut($params) {
136
    private function getElementParDefaut($params) {
121
    	return $this->getInformationsIndividu($params);
137
    	return $this->getInformationsIndividu($params);
122
    }
138
    }
123
    
139
 
124
    private function getInformationsIndividu($params) {
140
    private function getInformationsIndividu($params) {
125
    	
141
 
126
    	$id_individu = $params[0];
142
    	$id_individu = $params[0];
Line 127... Line 143...
127
 
143
 
128
    	$requete_informations_individu = 'SELECT * FROM ods_individus '. 
144
    	$requete_informations_individu = 'SELECT * FROM ods_individus '.
129
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
145
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
130
    	
146
 
131
    	$informations_individu = $this->executerRequete($requete_informations_individu);
147
    	$informations_individu = $this->executerRequete($requete_informations_individu);
132
    	
148
 
133
    	if(!empty($informations_individu)) {
149
    	if(!empty($informations_individu)) {
134
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
150
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
135
    	}
151
    	}
136
    	
152
 
137
    	return $informations_individu_formatees;
153
    	return $informations_individu_formatees;
138
    	
154
 
139
    }
155
    }
140
    
156
 
141
    private function getIndividusPourStation($params) {
157
    private function getIndividusPourStation($params) {
142
    	
158
 
143
    	$id_station = $params[0];
159
    	$id_station = $params[0];
144
    		    	
160
 
145
		$requete_individus_station = 'SELECT oi.* FROM ods_individus oi '. 
161
		$requete_individus_station = 'SELECT oi.* FROM ods_individus oi '.
146
		                             'INNER JOIN ods_especes oe '.
162
		                             'INNER JOIN ods_especes oe '.
147
		                             'ON oi.oi_ce_espece = oe.oe_id_espece '.
163
		                             'ON oi.oi_ce_espece = oe.oe_id_espece '.
148
		                             'AND oe.oe_espece_active = 1 '.  
164
		                             'AND oe.oe_espece_active = 1 '.
149
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
165
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
Line 150... Line 166...
150
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
166
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
151
 
167
 
152
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
168
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
153
    		
169
 
154
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);   		
170
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);
155
    	}
171
    	}
156
    	
172
 
157
    	return $liste_individus_pour_station;
173
    	return $liste_individus_pour_station;
158
    }
174
    }
159
    
175
 
160
	private function getIndividusPourStationPourEspece($params) {
176
	private function getIndividusPourStationPourEspece($params) {
161
    	
177
 
162
    	$id_station = $params[0];
178
    	$id_station = $params[0];
163
    	$id_espece = $params[1];
179
    	$id_espece = $params[1];
164
    		    	
180
 
165
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '. 
181
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '.
166
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
182
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
167
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
183
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
Line 168... Line 184...
168
		
184
 
169
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
185
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
170
 
186
 
171
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
187
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
172
    		
188
 
173
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);   		
189
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);
174
    	}
190
    	}
175
    	
191
 
176
    	return $liste_individus_pour_station_pour_espece;
192
    	return $liste_individus_pour_station_pour_espece;
177
    }
193
    }
178
    
194
 
179
	private function formaterTableauIndividuPourEnvoi($individu) {
195
	private function formaterTableauIndividuPourEnvoi($individu) {
180
    	
196
 
181
    	return array( 
197
    	return array(
182
    	    'id_individu' => $individu['oi_id_individu'],
198
    	    'id_individu' => $individu['oi_id_individu'],
-
 
199
          'id_espece' => $individu['oi_ce_espece'],
183
            'id_espece' => $individu['oi_ce_espece'],
200
          'id_station' => $individu['oi_ce_station'],
184
            'id_station' => $individu['oi_ce_station'],
201
    	  	'nom' => $individu['oi_nom'],
185
    	    'nom' => $individu['oi_nom']
202
					'commentaire' => $individu['oi_commentaire'],
186
        );
203
      );
187
    	
-
 
188
    }
204
 
-
 
205
    }