Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 215 Rev 284
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
        
36
        
37
		//TODO: méthode de création d'espèce spéciale aux admins
37
		//TODO: méthode de création d'espèce spéciale aux admins
38
    	
38
    	
39
    }
39
    }
40
   
40
   
41
    /**
41
    /**
42
     * Méthode appelée pour mettre à jour un élément
42
     * Méthode appelée pour mettre à jour un élément
43
     */
43
     */
44
    public function updateElement($uid, $params)    {
44
    public function updateElement($uid, $params)    {
-
 
45
    	
-
 
46
    	// fonction devant uniquement être appelée depuis le serveur
-
 
47
    	// lui-même, cad par l'application de saisie
-
 
48
    	$controle = new ControleUtilisateur($this->config);
-
 
49
    	$controle->controleAppelIpAutorisee();
-
 
50
 
-
 
51
    	$requete = 'UPDATE ods_especes SET ';	
-
 
52
    	foreach($params as $param => $valeur) {
-
 
53
    		$requete .= 'oe_'.$param.' = '.$this->proteger($valeur).', ';
-
 
54
    	}
-
 
55
    	$requete = rtrim ($requete, ', ');
-
 
56
    	$requete .= ' WHERE oe_id_espece = '.$this->proteger($uid[0]);
45
 
57
    	
-
 
58
    	$modification_espece = $this->executerRequeteSimple($requete);
-
 
59
    	 
-
 
60
    	if(!$modification_espece) {
-
 
61
    		$retour['erreurs'] = 'erreur de modification';
-
 
62
    	} else {
-
 
63
    		$retour = 'ok';
-
 
64
    	}
-
 
65
    	 
46
    	//TODO: méthode de modification d'espèce spéciale aux admins
66
    	$this->envoyer($retour);
47
    }
67
    }
48
   
68
   
49
    /**
69
    /**
50
     * Méthode appelée pour supprimer un élément
70
     * Méthode appelée pour supprimer un élément
51
     */
71
     */
52
    public function deleteElement($uid) {
72
    public function deleteElement($uid) {
53
 
73
 
54
    	//TODO: méthode de suppression d'espèce spéciale aux admins
74
    	//TODO: méthode de suppression d'espèce spéciale aux admins
55
    }
75
    }
56
    
76
    
57
/** ======================= Methodes d'accès au informations ================================ */   
77
/** ======================= Methodes d'accès au informations ================================ */   
58
    
78
    
59
    private function getElementParDefaut() {
79
    private function getElementParDefaut() {
60
    	return $this->getEspecesParType();
80
    	return $this->getEspecesParType();
61
    }
81
    }
62
    
82
    
63
    private function getEspece($params) {
83
    private function getEspece($params) {
64
    	
84
    	
65
    	$id_espece = $params[0];
85
    	$id_espece = $params[0];
66
    	
86
    	
67
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
87
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
68
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
88
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
69
    	
89
    	
70
    	$informations_espece = $this->executerRequete($requete_informations_espece);
90
    	$informations_espece = $this->executerRequete($requete_informations_espece);
71
    	
91
    	
72
    	$informations_espece_formatees = array();
92
    	$informations_espece_formatees = array();
73
    	
93
    	
74
    	if(!empty($informations_espece)) {
94
    	if(!empty($informations_espece)) {
75
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
95
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
76
    	}
96
    	}
77
    	
97
    	
78
    	return $informations_espece_formatees;
98
    	return $informations_espece_formatees;
79
    }
99
    }
80
 
100
 
81
    private function getEspecesPourStation($params) {
101
    private function getEspecesPourStation($params) {
82
    	
102
    	
83
    	$id_station = $params[0];
103
    	$id_station = $params[0];
84
    	
104
    	
85
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
105
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
86
    								    'WHERE oe_id_espece IN '.
106
    								    'WHERE oe_id_espece IN '.
87
    								    	'( '.
107
    								    	'( '.
88
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
108
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
89
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
109
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
90
    										') '.
110
    										') '.
-
 
111
    									' AND oe_espece_active = 1 '. 	
91
    									'ORDER BY oe_ce_type, oe_nom_vernaculaire';
112
    									'ORDER BY oe_ce_type, oe_nom_vernaculaire';
92
 
113
 
93
    	    	
114
    	    	
94
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
115
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
95
    	
116
    	
96
    	foreach($especes_pour_station as &$espece_dans_station) {
117
    	foreach($especes_pour_station as &$espece_dans_station) {
97
    		
118
    		
98
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
119
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
99
    	}
120
    	}
100
    	
121
    	
101
	    return $especes_pour_station;
122
	    return $especes_pour_station;
102
    }
123
    }
-
 
124
    
-
 
125
    private function getEspecesActivesParType() {
-
 
126
    	return $this->getEspecesParType(true);
-
 
127
    }
103
    
128
    
-
 
129
    private function getEspecesParType() {
-
 
130
    	return $this->obtenirEspecesParType(false);
-
 
131
    }
-
 
132
    
-
 
133
    private function getEspecesParTypeAdmin() {	 
-
 
134
    	return $this->obtenirEspecesParType(true);
-
 
135
    }
-
 
136
    
104
    private function getEspecesParType() {
137
    private function obtenirEspecesParType($toutes_les_especes = false) {
-
 
138
    	
-
 
139
    	$requete_toute_espece = 'SELECT * FROM ods_especes '.
105
    	
140
    							($toutes_les_especes ? '' : ' WHERE oe_espece_active = 1 ').
106
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type, oe_nom_vernaculaire';
141
    	    	                'ORDER BY oe_ce_type, oe_nom_vernaculaire';
107
    	$liste_espece = $this->executerRequete($requete_toute_espece);
142
    	$liste_espece = $this->executerRequete($requete_toute_espece);
108
    	
143
    	 
109
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
144
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
110
    	
145
    	 
111
    	$especes_par_type = array();
146
    	$especes_par_type = array();
112
    	
147
    	 
113
    	foreach($liste_espece as $espece) {
148
    	foreach($liste_espece as $espece) {
114
    		
149
    	
115
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
150
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
116
    		
151
    	
117
    		$type = $espece['type'];
152
    		$type = $espece['type'];
118
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
153
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
119
    		
154
    	
120
    		if(!isset($especes_par_type[$type])) {
155
    		if(!isset($especes_par_type[$type])) {
121
    			$especes_par_type[$type] = array(
156
    			$especes_par_type[$type] = array(
122
    				'nom' => $nom_type,
157
    	    				'nom' => $nom_type,
123
    				'especes' => array()
158
    	    				'especes' => array()
124
    			);
159
    			);
125
    		}
160
    		}
126
    		
161
    	
127
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;    		
162
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;
128
    	}
163
    	}
129
        	
164
    	 
130
	    return $especes_par_type;
165
    	return $especes_par_type;
131
    }
166
    }
132
    
167
    
133
	public function getToutesEspeces() {
168
	public function getToutesEspeces() {
134
    	
169
    	
135
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_nom_vernaculaire';
170
    	$requete_toute_espece = 'SELECT * FROM ods_especes WHERE oe_espece_active = 1 ORDER BY oe_nom_vernaculaire ';
136
    	$liste_espece = $this->executerRequete($requete_toute_espece);
171
    	$liste_espece = $this->executerRequete($requete_toute_espece);
137
    	
172
    	 
138
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
173
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
139
    	
174
    	
140
    	$especes_par_id = array();
175
    	$especes_par_id = array();
141
    	
176
 
142
    	foreach($liste_espece as $espece) {
177
    	foreach($liste_espece as $espece) {
143
    		
178
    		
144
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
179
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
145
    		$especes_par_id[$espece['id_espece']] = $espece;    		
180
    		$especes_par_id[$espece['id_espece']] = $espece;    		
146
    	}
181
    	}
147
        	
182
 
148
	    return $especes_par_id;
183
	    return $especes_par_id;
149
    }
184
    }
150
    
185
    
151
    private function formaterTableauEspecePourEnvoi($espece) {
186
    private function formaterTableauEspecePourEnvoi($espece) {
152
    	
187
    	
153
    	return array( 
188
    	return array( 
154
    	    'id_espece' => $espece['oe_id_espece'],
189
    	    'id_espece' => $espece['oe_id_espece'],
155
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
190
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
156
            'nom_scientifique' => $espece['oe_nom_scientifique'],
191
            'nom_scientifique' => $espece['oe_nom_scientifique'],
157
            'espece_ecole' => $espece['oe_espece_ecole'],
192
            'espece_ecole' => $espece['oe_espece_ecole'],
158
            'description' => $espece['oe_description'],
193
            'description' => $espece['oe_description'],
159
            'climat' => $espece['oe_ce_climat'],
194
            'climat' => $espece['oe_ce_climat'],
160
            'evenements' => $espece['oe_ce_evenements'],
195
            'evenements' => $espece['oe_ce_evenements'],
161
            'type' => $espece['oe_ce_type']
196
            'type' => $espece['oe_ce_type'],
-
 
197
    		'active' => $espece['oe_espece_active']
162
        );
198
        );  	
163
    	
-
 
164
    }
199
    }
165
}
200
}
166
?>
201
?>