Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 289 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 289 Rev 294
1
<?php
1
<?php
2
 
2
 
3
class OdsEspece extends OdsTriple {
3
class OdsEspece extends OdsTriple {
4
 
4
 
5
	const PREFIXE = 'get';
5
	const PREFIXE = 'get';
6
	const ABBR_LISTE_TYPE_ESPECE = 'type_espece';
6
	const ABBR_LISTE_TYPE_ESPECE = 'type_espece';
7
	
7
	
8
	/**
8
	/**
9
     * Méthode appelée avec une requête de type GET.
9
     * Méthode appelée avec une requête de type GET.
10
     *
10
     *
11
     */
11
     */
12
    function getElement($param = array()) {
12
    function getElement($param = array()) {
13
    	    	    	
13
    	    	    	
14
    	$type = $param[0];
14
    	$type = $param[0];
15
    	
15
    	
16
    	if ($type == '*' || is_numeric($type)) {
16
    	if ($type == '*' || is_numeric($type)) {
17
            $info = $this->getElementParDefaut($param);
17
            $info = $this->getElementParDefaut($param);
18
        } else {
18
        } else {
19
            $methode = self::PREFIXE.$type;
19
            $methode = self::PREFIXE.$type;
20
            if (method_exists($this, $methode)) {
20
            if (method_exists($this, $methode)) {
21
                array_shift($param);
21
                array_shift($param);
22
                $info = $this->$methode($param);
22
                $info = $this->$methode($param);
23
            } else {
23
            } else {
24
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
24
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
25
            }
25
            }
26
        }
26
        }
27
       
27
       
28
        // Envoi sur la sortie standard
28
        // Envoi sur la sortie standard
29
        $this->envoyer($info);
29
        $this->envoyer($info);
30
    }
30
    }
31
   
31
   
32
    /**
32
    /**
33
     * Méthode appelée pour ajouter un élément.
33
     * Méthode appelée pour ajouter un élément.
34
     */
34
     */
35
    public function createElement($params) {  
35
    public function createElement($params) {  
36
		// fonction devant uniquement être appelée depuis le serveur
36
		// fonction devant uniquement être appelée depuis le serveur
37
    	// lui-même, cad par l'application de saisie
37
    	// lui-même, cad par l'application de saisie
38
    	$controle = new ControleUtilisateur($this->config);
38
    	$controle = new ControleUtilisateur($this->config);
39
    	$controle->controleAppelIpAutorisee();
39
    	$controle->controleAppelIpAutorisee();
40
 
40
 
41
    	$requete = 'INSERT INTO ods_especes ';
41
    	$requete = 'INSERT INTO ods_especes ';
42
    	$champs = array('oe_id_espece');
42
    	$champs = array('oe_id_espece');
43
    	$valeurs = array("''");
43
    	$valeurs = array("''");
44
    	foreach($params as $param => $valeur) {
44
    	foreach($params as $param => $valeur) {
45
    		$champs[] = 'oe_'.$param;
45
    		$champs[] = 'oe_'.$param;
-
 
46
    		$valeur = stripslashes($valeur);
46
    		$valeurs[] = $this->proteger($valeur);
47
    		$valeurs[] = $this->proteger($valeur);
47
    	}
48
    	}
48
    	$champs[] = 'oe_ce_climat';
49
    	$champs[] = 'oe_ce_climat';
49
    	$valeurs[] = $this->proteger(0);
50
    	$valeurs[] = $this->proteger(0);
50
    	$requete .= '('.implode(', ', $champs).') VALUES ('.implode(', ', $valeurs).')';
51
    	$requete .= '('.implode(', ', $champs).') VALUES ('.implode(', ', $valeurs).')';
51
    	
52
    	
52
    	$ajout_espece = $this->executerRequeteSimple($requete);
53
    	$ajout_espece = $this->executerRequeteSimple($requete);
53
    	 
54
    	 
54
    	if(!$ajout_espece) {
55
    	if(!$ajout_espece) {
55
    		$retour['erreurs'] = 'erreur d\'ajout';
56
    		$retour['erreurs'] = 'erreur d\'ajout';
56
    	} else {
57
    	} else {
57
    		$retour = 'ok';
58
    		$retour = 'ok';
58
    	}
59
    	}
59
    	 
60
    	 
60
    	$this->envoyer($retour);
61
    	$this->envoyer($retour);
61
    }
62
    }
62
   
63
   
63
    /**
64
    /**
64
     * Méthode appelée pour mettre à jour un élément
65
     * Méthode appelée pour mettre à jour un élément
65
     */
66
     */
66
    public function updateElement($uid, $params)    {  	
67
    public function updateElement($uid, $params)    {  	
67
    	// fonction devant uniquement être appelée depuis le serveur
68
    	// fonction devant uniquement être appelée depuis le serveur
68
    	// lui-même, cad par l'application de saisie
69
    	// lui-même, cad par l'application de saisie
69
    	$controle = new ControleUtilisateur($this->config);
70
    	$controle = new ControleUtilisateur($this->config);
70
    	$controle->controleAppelIpAutorisee();
71
    	$controle->controleAppelIpAutorisee();
71
 
72
 
72
    	$requete = 'UPDATE ods_especes SET ';	
73
    	$requete = 'UPDATE ods_especes SET ';	
73
    	foreach($params as $param => $valeur) {
74
    	foreach($params as $param => $valeur) {
-
 
75
    		$valeur = stripslashes($valeur);
74
    		$requete .= 'oe_'.$param.' = '.$this->proteger($valeur).', ';
76
    		$requete .= 'oe_'.$param.' = '.$this->proteger($valeur).', ';
75
    	}
77
    	}
76
    	$requete = rtrim ($requete, ', ');
78
    	$requete = rtrim ($requete, ', ');
77
    	$requete .= ' WHERE oe_id_espece = '.$this->proteger($uid[0]);
79
    	$requete .= ' WHERE oe_id_espece = '.$this->proteger($uid[0]);
78
    	
80
    	
79
    	$modification_espece = $this->executerRequeteSimple($requete);
81
    	$modification_espece = $this->executerRequeteSimple($requete);
80
    	 
82
    	 
81
    	if(!$modification_espece) {
83
    	if(!$modification_espece) {
82
    		$retour['erreurs'] = 'erreur de modification';
84
    		$retour['erreurs'] = 'erreur de modification';
83
    	} else {
85
    	} else {
84
    		$retour = 'ok';
86
    		$retour = 'ok';
85
    	}
87
    	}
86
    	 
88
    	 
87
    	$this->envoyer($retour);
89
    	$this->envoyer($retour);
88
    }
90
    }
89
   
91
   
90
    /**
92
    /**
91
     * Méthode appelée pour supprimer un élément
93
     * Méthode appelée pour supprimer un élément
92
     */
94
     */
93
    public function deleteElement($uid) {
95
    public function deleteElement($uid) {
94
 
96
 
95
    	//TODO: méthode de suppression d'espèce spéciale aux admins
97
    	//TODO: méthode de suppression d'espèce spéciale aux admins
96
    }
98
    }
97
    
99
    
98
/** ======================= Methodes d'accès au informations ================================ */   
100
/** ======================= Methodes d'accès au informations ================================ */   
99
    
101
    
100
    private function getElementParDefaut() {
102
    private function getElementParDefaut() {
101
    	return $this->getEspecesParType();
103
    	return $this->getEspecesParType();
102
    }
104
    }
103
    
105
    
104
    private function getEspece($params) {
106
    private function getEspece($params) {
105
    	
107
    	
106
    	$id_espece = $params[0];
108
    	$id_espece = $params[0];
107
    	
109
    	
108
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
110
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
109
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
111
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
110
    	
112
    	
111
    	$informations_espece = $this->executerRequete($requete_informations_espece);
113
    	$informations_espece = $this->executerRequete($requete_informations_espece);
112
    	
114
    	
113
    	$informations_espece_formatees = array();
115
    	$informations_espece_formatees = array();
114
    	
116
    	
115
    	if(!empty($informations_espece)) {
117
    	if(!empty($informations_espece)) {
116
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
118
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
117
    	}
119
    	}
118
    	
120
    	
119
    	return $informations_espece_formatees;
121
    	return $informations_espece_formatees;
120
    }
122
    }
121
 
123
 
122
    private function getEspecesPourStation($params) {
124
    private function getEspecesPourStation($params) {
123
    	
125
    	
124
    	$id_station = $params[0];
126
    	$id_station = $params[0];
125
    	
127
    	
126
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
128
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
127
    								    'WHERE oe_id_espece IN '.
129
    								    'WHERE oe_id_espece IN '.
128
    								    	'( '.
130
    								    	'( '.
129
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
131
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
130
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
132
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
131
    										') '.
133
    										') '.
132
    									' AND oe_espece_active = 1 '. 	
134
    									' AND oe_espece_active = 1 '. 	
133
    									'ORDER BY oe_ce_type, oe_nom_vernaculaire';
135
    									'ORDER BY oe_ce_type, oe_nom_vernaculaire';
134
 
136
 
135
    	    	
137
    	    	
136
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
138
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
137
    	
139
    	
138
    	foreach($especes_pour_station as &$espece_dans_station) {
140
    	foreach($especes_pour_station as &$espece_dans_station) {
139
    		
141
    		
140
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
142
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
141
    	}
143
    	}
142
    	
144
    	
143
	    return $especes_pour_station;
145
	    return $especes_pour_station;
144
    }
146
    }
145
    
147
    
146
    private function getEspecesActivesParType() {
148
    private function getEspecesActivesParType() {
147
    	return $this->getEspecesParType(true);
149
    	return $this->getEspecesParType(true);
148
    }
150
    }
149
    
151
    
150
    private function getEspecesParType() {
152
    private function getEspecesParType() {
151
    	return $this->obtenirEspecesParType(false);
153
    	return $this->obtenirEspecesParType(false);
152
    }
154
    }
153
    
155
    
154
    private function getEspecesParTypeAdmin() {	 
156
    private function getEspecesParTypeAdmin() {	 
155
    	return $this->obtenirEspecesParType(true);
157
    	return $this->obtenirEspecesParType(true);
156
    }
158
    }
157
    
159
    
158
    private function obtenirEspecesParType($toutes_les_especes = false) {
160
    private function obtenirEspecesParType($toutes_les_especes = false) {
159
    	
161
    	
160
    	$requete_toute_espece = 'SELECT * FROM ods_especes '.
162
    	$requete_toute_espece = 'SELECT * FROM ods_especes '.
161
    							($toutes_les_especes ? '' : ' WHERE oe_espece_active = 1 ').
163
    							($toutes_les_especes ? '' : ' WHERE oe_espece_active = 1 ').
162
    	    	                'ORDER BY oe_ce_type, oe_nom_vernaculaire';
164
    	    	                'ORDER BY oe_ce_type, oe_nom_vernaculaire';
163
    	$liste_espece = $this->executerRequete($requete_toute_espece);
165
    	$liste_espece = $this->executerRequete($requete_toute_espece);
164
    	 
166
    	 
165
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
167
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
166
    	 
168
    	 
167
    	$especes_par_type = array();
169
    	$especes_par_type = array();
168
    	 
170
    	 
169
    	foreach($liste_espece as $espece) {
171
    	foreach($liste_espece as $espece) {
170
    	
172
    	
171
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
173
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
172
    	
174
    	
173
    		$type = $espece['type'];
175
    		$type = $espece['type'];
174
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
176
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
175
    	
177
    	
176
    		if(!isset($especes_par_type[$type])) {
178
    		if(!isset($especes_par_type[$type])) {
177
    			$especes_par_type[$type] = array(
179
    			$especes_par_type[$type] = array(
178
    	    				'nom' => $nom_type,
180
    	    				'nom' => $nom_type,
179
    	    				'especes' => array()
181
    	    				'especes' => array()
180
    			);
182
    			);
181
    		}
183
    		}
182
    	
184
    	
183
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;
185
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;
184
    	}
186
    	}
185
    	 
187
    	 
186
    	return $especes_par_type;
188
    	return $especes_par_type;
187
    }
189
    }
188
    
190
    
189
	public function getToutesEspeces() {
191
	public function getToutesEspeces() {
190
    	
192
    	
191
    	$requete_toute_espece = 'SELECT * FROM ods_especes WHERE oe_espece_active = 1 ORDER BY oe_nom_vernaculaire ';
193
    	$requete_toute_espece = 'SELECT * FROM ods_especes WHERE oe_espece_active = 1 ORDER BY oe_nom_vernaculaire ';
192
    	$liste_espece = $this->executerRequete($requete_toute_espece);
194
    	$liste_espece = $this->executerRequete($requete_toute_espece);
193
    	 
195
    	 
194
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
196
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
195
    	
197
    	
196
    	$especes_par_id = array();
198
    	$especes_par_id = array();
197
 
199
 
198
    	foreach($liste_espece as $espece) {
200
    	foreach($liste_espece as $espece) {
199
    		
201
    		
200
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
202
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
201
    		$especes_par_id[$espece['id_espece']] = $espece;    		
203
    		$especes_par_id[$espece['id_espece']] = $espece;    		
202
    	}
204
    	}
203
 
205
 
204
	    return $especes_par_id;
206
	    return $especes_par_id;
205
    }
207
    }
206
    
208
    
207
    private function formaterTableauEspecePourEnvoi($espece) {
209
    private function formaterTableauEspecePourEnvoi($espece) {
208
    	
210
    	
209
    	return array( 
211
    	return array( 
210
    	    'id_espece' => $espece['oe_id_espece'],
212
    	    'id_espece' => $espece['oe_id_espece'],
211
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
213
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
212
            'nom_scientifique' => $espece['oe_nom_scientifique'],
214
            'nom_scientifique' => $espece['oe_nom_scientifique'],
213
            'espece_ecole' => $espece['oe_espece_ecole'],
215
            'espece_ecole' => $espece['oe_espece_ecole'],
214
            'description' => $espece['oe_description'],
216
            'description' => $espece['oe_description'],
215
            'climat' => $espece['oe_ce_climat'],
217
            'climat' => $espece['oe_ce_climat'],
216
            'evenements' => $espece['oe_ce_evenements'],
218
            'evenements' => $espece['oe_ce_evenements'],
217
            'type' => $espece['oe_ce_type'],
219
            'type' => $espece['oe_ce_type'],
218
    		'active' => $espece['oe_espece_active']
220
    		'active' => $espece['oe_espece_active']
219
        );  	
221
        );  	
220
    }
222
    }
221
}
223
}
222
?>
224
?>