Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 210 Rev 284
1
<?php
1
<?php
2
 
2
 
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 {
18
            $methode = self::PREFIXE.$type;
18
            $methode = self::PREFIXE.$type;
19
            if (method_exists($this, $methode)) {
19
            if (method_exists($this, $methode)) {
20
                array_shift($param);
20
                array_shift($param);
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
    			//$erreurs[$requis] = 'erreur ';
40
    			//$erreurs[$requis] = 'erreur ';
41
    		}
41
    		}
42
    	}
42
    	}
43
    	
43
    	
44
    	if(!empty($erreurs)) {
44
    	if(!empty($erreurs)) {
45
    		$this->envoyer($erreurs);
45
    		$this->envoyer($erreurs);
46
    	}
46
    	}
47
    	
-
 
48
    	$id_participant = $params['id_participant'];
-
 
49
    	
47
    	
50
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
48
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
51
					'(oi_ce_espece, oi_ce_station, oi_nom) '.
49
					'(oi_ce_espece, oi_ce_station, oi_nom) '.
52
					'VALUES ('.
50
					'VALUES ('.
53
							$this->proteger($params['id_espece']).','.
51
							$this->proteger($params['id_espece']).','.
54
							$this->proteger($params['id_station']).','.		
52
							$this->proteger($params['id_station']).','.		
55
							$this->proteger($params['individu_nom']).')';	
53
							$this->proteger($params['individu_nom']).')';	
56
		$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
54
		$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
57
		
55
		
58
    	
56
    	
59
    	if(!$creation_individu) {
57
    	if(!$creation_individu) {
60
    		$retour['erreurs'] = 'erreur d\'insertion';
58
    		$retour['erreurs'] = 'erreur d\'insertion';
61
    	} else {
59
    	} else {
62
    		$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();
60
    		$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();
63
    	}
61
    	}
64
    	
62
    	
65
    	$this->envoyer($retour);
63
    	$this->envoyer($retour);
66
    }
64
    }
67
   
65
   
68
    /**
66
    /**
69
     * Méthode appelée pour mettre à jour un élément
67
     * Méthode appelée pour mettre à jour un élément
70
     */
68
     */
71
    public function updateElement($uid, $params)    {
69
    public function updateElement($uid, $params)    {
72
    	
70
    	
73
        if(isset($uid[0])) {
71
        if(isset($uid[0])) {
74
    		$id_individu = $uid[0];
72
    		$id_individu = $uid[0];
75
    	} else {
73
    	} else {
76
    		return;
74
    		return;
77
    	}
75
    	}
78
    	
76
    	
79
        $requete_modification_individu = 'UPDATE ods_individus '.
77
        $requete_modification_individu = 'UPDATE ods_individus '.
80
					'SET oi_nom = '.$this->proteger($params['individu_nom']).' '.
78
					'SET oi_nom = '.$this->proteger($params['individu_nom']).' '.
81
        			'WHERE oi_id_individu = '.$this->proteger($id_individu);
79
        			'WHERE oi_id_individu = '.$this->proteger($id_individu);
82
        
80
        
83
		$modification_individu = $this->executerRequeteSimple($requete_modification_individu);
81
		$modification_individu = $this->executerRequeteSimple($requete_modification_individu);
84
       
82
       
85
        $this->envoyer();      
83
        $this->envoyer();      
86
    }
84
    }
87
   
85
   
88
    /**
86
    /**
89
     * Méthode appelée pour supprimer un élément
87
     * Méthode appelée pour supprimer un élément
90
     */
88
     */
91
    public function deleteElement($uid) {
89
    public function deleteElement($uid) {
92
    	
90
    	
93
        if(isset($uid[0])) {
91
        if(isset($uid[0])) {
94
    		$id_participant = $uid[0];
92
    		$id_participant = $uid[0];
95
    	} else {
93
    	} else {
96
    		return;
94
    		return;
97
    	}
95
    	}
98
    	
96
    	
99
    	if(isset($uid[1])) {
97
    	if(isset($uid[1])) {
100
    		$id_individu = $uid[1];
98
    		$id_individu = $uid[1];
101
    	} else {
99
    	} else {
102
    		return;
100
    		return;
103
    	}
101
    	}
104
    	    	
102
    	    	
105
    	$requete_suppression_individu = 'DELETE FROM ods_individus '.
103
    	$requete_suppression_individu = 'DELETE FROM ods_individus '.
106
    		'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.
104
    		'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.
107
        	'AND oi_ce_station IN '.
105
        	'AND oi_ce_station IN '.
108
        		'(SELECT os_id_station FROM ods_stations '.
106
        		'(SELECT os_id_station FROM ods_stations '.
109
        			'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
107
        			'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
110
    			')';
108
    			')';
111
    	
109
    	
112
    	$suppression_individu = $this->executerRequeteSimple($requete_suppression_individu);
110
    	$suppression_individu = $this->executerRequeteSimple($requete_suppression_individu);
113
    	
111
    	
114
    	if(!$suppression_individu) {
112
    	if(!$suppression_individu) {
115
    		// TODO: comment gère t'on les erreurs ?
113
    		// TODO: comment gère t'on les erreurs ?
116
    	}
114
    	}
117
       
115
       
118
        // Envoie sur la sortie standard
116
        // Envoie sur la sortie standard
119
        $this->envoyer();
117
        $this->envoyer();
120
    }
118
    }
121
    
119
    
122
    private function getElementParDefaut($params) {
120
    private function getElementParDefaut($params) {
123
    	return $this->getInformationsIndividu($params);
121
    	return $this->getInformationsIndividu($params);
124
    }
122
    }
125
    
123
    
126
    private function getInformationsIndividu($params) {
124
    private function getInformationsIndividu($params) {
127
    	
125
    	
128
    	$id_individu = $params[0];
126
    	$id_individu = $params[0];
129
 
127
 
130
    	$requete_informations_individu = 'SELECT * FROM ods_individus '. 
128
    	$requete_informations_individu = 'SELECT * FROM ods_individus '. 
131
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
129
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
132
    	
130
    	
133
    	$informations_individu = $this->executerRequete($requete_informations_individu);
131
    	$informations_individu = $this->executerRequete($requete_informations_individu);
134
    	
132
    	
135
    	if(!empty($informations_individu)) {
133
    	if(!empty($informations_individu)) {
136
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
134
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
137
    	}
135
    	}
138
    	
136
    	
139
    	return $informations_individu_formatees;
137
    	return $informations_individu_formatees;
140
    	
138
    	
141
    }
139
    }
142
    
140
    
143
    private function getIndividusPourStation($params) {
141
    private function getIndividusPourStation($params) {
144
    	
142
    	
145
    	$id_station = $params[0];
143
    	$id_station = $params[0];
146
    		    	
144
    		    	
-
 
145
		$requete_individus_station = 'SELECT oi.* FROM ods_individus oi '. 
-
 
146
		                             'INNER JOIN ods_especes oe '.
-
 
147
		                             'ON oi.oi_ce_espece = oe.oe_id_espece '.
147
		$requete_individus_station = 'SELECT * FROM ods_individus '. 
148
		                             'AND oe.oe_espece_active = 1 '.  
148
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
149
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
149
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
150
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
150
 
151
 
151
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
152
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
152
    		
153
    		
153
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);   		
154
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);   		
154
    	}
155
    	}
155
    	
156
    	
156
    	return $liste_individus_pour_station;
157
    	return $liste_individus_pour_station;
157
    }
158
    }
158
    
159
    
159
	private function getIndividusPourStationPourEspece($params) {
160
	private function getIndividusPourStationPourEspece($params) {
160
    	
161
    	
161
    	$id_station = $params[0];
162
    	$id_station = $params[0];
162
    	$id_espece = $params[1];
163
    	$id_espece = $params[1];
163
    		    	
164
    		    	
164
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '. 
165
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '. 
165
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
166
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
166
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
167
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
167
		
168
		
168
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
169
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
169
 
170
 
170
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
171
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
171
    		
172
    		
172
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);   		
173
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);   		
173
    	}
174
    	}
174
    	
175
    	
175
    	return $liste_individus_pour_station_pour_espece;
176
    	return $liste_individus_pour_station_pour_espece;
176
    }
177
    }
177
    
178
    
178
	private function formaterTableauIndividuPourEnvoi($individu) {
179
	private function formaterTableauIndividuPourEnvoi($individu) {
179
    	
180
    	
180
    	return array( 
181
    	return array( 
181
    	    'id_individu' => $individu['oi_id_individu'],
182
    	    'id_individu' => $individu['oi_id_individu'],
182
            'id_espece' => $individu['oi_ce_espece'],
183
            'id_espece' => $individu['oi_ce_espece'],
183
            'id_station' => $individu['oi_ce_station'],
184
            'id_station' => $individu['oi_ce_station'],
184
    	    'nom' => $individu['oi_nom']
185
    	    'nom' => $individu['oi_nom']
185
        );
186
        );
186
    	
187
    	
187
    }
188
    }
188
}
189
}
189
?>
190
?>