Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 41 Rev 46
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
    	
47
    	
48
    	$id_participant = $params['id_participant'];
48
    	$id_participant = $params['id_participant'];
49
    	
49
    	
50
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
50
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
51
					'(oi_ce_espece, oi_ce_station, oi_nom) '.
51
					'(oi_ce_espece, oi_ce_station, oi_nom) '.
52
					'VALUES ('.
52
					'VALUES ('.
53
							$this->proteger($params['id_espece']).','.
53
							$this->proteger($params['id_espece']).','.
54
							$this->proteger($params['id_station']).','.		
54
							$this->proteger($params['id_station']).','.		
55
							$this->proteger($params['individu_nom']).')';	
55
							$this->proteger($params['individu_nom']).')';	
56
		$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
56
		$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
-
 
57
		
57
		
58
    	
58
		if(!$creation_individu) {
59
    	if(!$creation_individu) {
-
 
60
    		$retour['erreurs'] = 'erreur d\'insertion';
-
 
61
    	} else {
59
    		// TODO: comment gère t'on les erreurs ?
62
    		$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();
60
    	}
63
    	}
61
    	
64
    	
62
    	$this->envoyer();
65
    	$this->envoyer($retour);
63
    }
66
    }
64
   
67
   
65
    /**
68
    /**
66
     * Méthode appelée pour mettre à jour un élément
69
     * Méthode appelée pour mettre à jour un élément
67
     */
70
     */
68
    public function updateElement($uid, $params)    {
71
    public function updateElement($uid, $params)    {
69
        //Mise à jour de la personne
72
        //Mise à jour de la personne
70
        // Identification de l'utilisateur
73
        // Identification de l'utilisateur
71
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
74
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
72
       
75
       
73
        // Contrôle du non détournement de l'utilisateur
76
        // Contrôle du non détournement de l'utilisateur
74
        if ($this->etreAutorise($id_utilisateur)) {
77
        if ($this->etreAutorise($id_utilisateur)) {
75
            try {
78
            try {
76
 
79
 
77
            } catch (PDOException $e) {
80
            } catch (PDOException $e) {
78
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
81
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
79
            }
82
            }
80
        }
83
        }
81
       
84
       
82
        $this->envoyer();      
85
        $this->envoyer();      
83
    }
86
    }
84
   
87
   
85
    /**
88
    /**
86
     * Méthode appelée pour supprimer un élément
89
     * Méthode appelée pour supprimer un élément
87
     */
90
     */
88
    public function deleteElement($uid) {
91
    public function deleteElement($uid) {
89
        // Vérification de la présence des id passés par l'url
92
        // Vérification de la présence des id passés par l'url
90
        if (!isset($uid[0]) || !isset($uid[1])) {
93
        if (!isset($uid[0]) || !isset($uid[1])) {
91
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
94
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
92
        } else {
95
        } else {
93
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
96
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
94
           
97
           
95
            // Contrôle du non détournement de l'utilisateur     
98
            // Contrôle du non détournement de l'utilisateur     
96
            if ($this->etreAutorise($id_utilisateur)) {
99
            if ($this->etreAutorise($id_utilisateur)) {
97
                // Récupération des id passés par l'url     
100
                // Récupération des id passés par l'url     
98
                $identifiants = explode(',', rtrim($uid[1], ','));
101
                $identifiants = explode(',', rtrim($uid[1], ','));
99
                if (count($identifiants) == 0) {
102
                if (count($identifiants) == 0) {
100
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
103
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
101
                } else {
104
                } else {
102
                    foreach ($identifiants as $id_personne) {
105
                    foreach ($identifiants as $id_personne) {
103
                        try {
106
                        try {
104
                        } catch (PDOException $e) {
107
                        } catch (PDOException $e) {
105
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
108
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
106
                        }
109
                        }
107
                    }
110
                    }
108
                }
111
                }
109
            }
112
            }
110
        }
113
        }
111
       
114
       
112
        // Envoie sur la sortie standard
115
        // Envoie sur la sortie standard
113
        $this->envoyer();
116
        $this->envoyer();
114
    }
117
    }
115
    
118
    
116
    private function getElementParDefaut($params) {
119
    private function getElementParDefaut($params) {
117
    	return $this->getInformationsIndividu($params);
120
    	return $this->getInformationsIndividu($params);
118
    }
121
    }
119
    
122
    
120
    private function getInformationsIndividu($params) {
123
    private function getInformationsIndividu($params) {
121
    	
124
    	
122
    	$id_individu = $params[0];
125
    	$id_individu = $params[0];
123
 
126
 
124
    	$requete_informations_individu = 'SELECT * FROM ods_individus '. 
127
    	$requete_informations_individu = 'SELECT * FROM ods_individus '. 
125
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
128
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
126
    	
129
    	
127
    	$informations_individu = $this->executerRequete($requete_informations_individu);
130
    	$informations_individu = $this->executerRequete($requete_informations_individu);
128
    	
131
    	
129
    	if(!empty($informations_individu)) {
132
    	if(!empty($informations_individu)) {
130
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
133
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
131
    	}
134
    	}
132
    	
135
    	
133
    	return $informations_individu_formatees;
136
    	return $informations_individu_formatees;
134
    	
137
    	
135
    }
138
    }
136
    
139
    
137
    private function getIndividusPourStation($params) {
140
    private function getIndividusPourStation($params) {
138
    	
141
    	
139
    	$id_station = $params[0];
142
    	$id_station = $params[0];
140
    		    	
143
    		    	
141
		$requete_individus_station = 'SELECT * FROM ods_individus '. 
144
		$requete_individus_station = 'SELECT * FROM ods_individus '. 
142
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
145
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
143
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
146
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
144
 
147
 
145
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
148
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
146
    		
149
    		
147
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);   		
150
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);   		
148
    	}
151
    	}
149
    	
152
    	
150
    	return $liste_individus_pour_station;
153
    	return $liste_individus_pour_station;
151
    }
154
    }
152
    
155
    
153
	private function getIndividusPourStationPourEspece($params) {
156
	private function getIndividusPourStationPourEspece($params) {
154
    	
157
    	
155
    	$id_station = $params[0];
158
    	$id_station = $params[0];
156
    	$id_espece = $params[1];
159
    	$id_espece = $params[1];
157
    		    	
160
    		    	
158
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '. 
161
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '. 
159
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
162
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
160
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
163
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
161
		
164
		
162
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
165
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
163
 
166
 
164
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
167
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
165
    		
168
    		
166
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);   		
169
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);   		
167
    	}
170
    	}
168
    	
171
    	
169
    	return $liste_individus_pour_station_pour_espece;
172
    	return $liste_individus_pour_station_pour_espece;
170
    }
173
    }
171
    
174
    
172
	private function formaterTableauIndividuPourEnvoi($individu) {
175
	private function formaterTableauIndividuPourEnvoi($individu) {
173
    	
176
    	
174
    	return array( 
177
    	return array( 
175
    	    'id_individu' => $individu['oi_id_individu'],
178
    	    'id_individu' => $individu['oi_id_individu'],
176
            'id_espece' => $individu['oi_ce_espece'],
179
            'id_espece' => $individu['oi_ce_espece'],
177
            'id_station' => $individu['oi_ce_station'],
180
            'id_station' => $individu['oi_ce_station'],
178
    	    'nom' => $individu['oi_nom']
181
    	    'nom' => $individu['oi_nom']
179
        );
182
        );
180
    	
183
    	
181
    }
184
    }
182
}
185
}
183
?>
186
?>