Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 92 Rev 207
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
        //Mise à jour de la personne
45
        //Mise à jour de la personne
46
        // Identification de l'utilisateur
46
        // Identification de l'utilisateur
47
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
47
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
48
       
48
       
49
        // Contrôle du non détournement de l'utilisateur
49
        // Contrôle du non détournement de l'utilisateur
50
        if ($this->etreAutorise($id_utilisateur)) {
50
        if ($this->etreAutorise($id_utilisateur)) {
51
            try {
51
            try {
52
 
52
 
53
            } catch (PDOException $e) {
53
            } catch (PDOException $e) {
54
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
54
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
55
            }
55
            }
56
        }
56
        }
57
       
57
       
58
        $this->envoyer();      
58
        $this->envoyer();      
59
    }
59
    }
60
   
60
   
61
    /**
61
    /**
62
     * Méthode appelée pour supprimer un élément
62
     * Méthode appelée pour supprimer un élément
63
     */
63
     */
64
    public function deleteElement($uid) {
64
    public function deleteElement($uid) {
65
        // Vérification de la présence des id passés par l'url
65
        // Vérification de la présence des id passés par l'url
66
        if (!isset($uid[0]) || !isset($uid[1])) {
66
        if (!isset($uid[0]) || !isset($uid[1])) {
67
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
67
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
68
        } else {
68
        } else {
69
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
69
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
70
           
70
           
71
            // Contrôle du non détournement de l'utilisateur     
71
            // Contrôle du non détournement de l'utilisateur     
72
            if ($this->etreAutorise($id_utilisateur)) {
72
            if ($this->etreAutorise($id_utilisateur)) {
73
                // Récupération des id passés par l'url     
73
                // Récupération des id passés par l'url     
74
                $identifiants = explode(',', rtrim($uid[1], ','));
74
                $identifiants = explode(',', rtrim($uid[1], ','));
75
                if (count($identifiants) == 0) {
75
                if (count($identifiants) == 0) {
76
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
76
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
77
                } else {
77
                } else {
78
                    foreach ($identifiants as $id_personne) {
78
                    foreach ($identifiants as $id_personne) {
79
                        try {
79
                        try {
80
                        } catch (PDOException $e) {
80
                        } catch (PDOException $e) {
81
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
81
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
82
                        }
82
                        }
83
                    }
83
                    }
84
                }
84
                }
85
            }
85
            }
86
        }
86
        }
87
       
87
       
88
        // Envoie sur la sortie standard
88
        // Envoie sur la sortie standard
89
        $this->envoyer();
89
        $this->envoyer();
90
    }
90
    }
91
    
91
    
92
/** ======================= Methodes privées d'accès au informations ================================ */   
92
/** ======================= Methodes privées d'accès au informations ================================ */   
93
    
93
    
94
    private function getElementParDefaut() {
94
    private function getElementParDefaut() {
95
    	return $this->getEspecesParType();
95
    	return $this->getEspecesParType();
96
    }
96
    }
97
    
97
    
98
    private function getEspece($params) {
98
    private function getEspece($params) {
99
    	
99
    	
100
    	$id_espece = $params[0];
100
    	$id_espece = $params[0];
101
    	
101
    	
102
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
102
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
103
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
103
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
104
    	
104
    	
105
    	$informations_espece = $this->executerRequete($requete_informations_espece);
105
    	$informations_espece = $this->executerRequete($requete_informations_espece);
106
    	
106
    	
107
    	$informations_espece_formatees = array();
107
    	$informations_espece_formatees = array();
108
    	
108
    	
109
    	if(!empty($informations_espece)) {
109
    	if(!empty($informations_espece)) {
110
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
110
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
111
    	}
111
    	}
112
    	
112
    	
113
    	return $informations_espece_formatees;
113
    	return $informations_espece_formatees;
114
    }
114
    }
115
 
115
 
116
    private function getEspecesPourStation($params) {
116
    private function getEspecesPourStation($params) {
117
    	
117
    	
118
    	$id_station = $params[0];
118
    	$id_station = $params[0];
119
    	
119
    	
120
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
120
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
121
    								    'WHERE oe_id_espece IN '.
121
    								    'WHERE oe_id_espece IN '.
122
    								    	'( '.
122
    								    	'( '.
123
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
123
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
124
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
124
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
125
    										') '.
125
    										') '.
126
    									'ORDER BY oe_ce_type';
126
    									'ORDER BY oe_ce_type';
127
 
127
 
128
    	    	
128
    	    	
129
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
129
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
130
    	
130
    	
131
    	foreach($especes_pour_station as &$espece_dans_station) {
131
    	foreach($especes_pour_station as &$espece_dans_station) {
132
    		
132
    		
133
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
133
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
134
    	}
134
    	}
135
    	
135
    	
136
	    return $especes_pour_station;
136
	    return $especes_pour_station;
137
    }
137
    }
138
    
138
    
139
    private function getEspecesParType() {
139
    private function getEspecesParType() {
140
    	
140
    	
141
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type';
141
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type';
142
    	$liste_espece = $this->executerRequete($requete_toute_espece);
142
    	$liste_espece = $this->executerRequete($requete_toute_espece);
143
    	
143
    	
144
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
144
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
145
    	
145
    	
146
    	$especes_par_type = array();
146
    	$especes_par_type = array();
147
    	
147
    	
148
    	foreach($liste_espece as $espece) {
148
    	foreach($liste_espece as $espece) {
149
    		
149
    		
150
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
150
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
151
    		
151
    		
152
    		$type = $espece['type'];
152
    		$type = $espece['type'];
153
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
153
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
154
    		
154
    		
155
    		if(!isset($especes_par_type[$type])) {
155
    		if(!isset($especes_par_type[$type])) {
156
    			$especes_par_type[$type] = array(
156
    			$especes_par_type[$type] = array(
157
    				'nom' => $nom_type,
157
    				'nom' => $nom_type,
158
    				'especes' => array()
158
    				'especes' => array()
159
    			);
159
    			);
160
    		}
160
    		}
161
    		
161
    		
162
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;    		
162
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;    		
163
    	}
163
    	}
164
        	
164
        	
165
	    return $especes_par_type;
165
	    return $especes_par_type;
166
    }
166
    }
-
 
167
    
-
 
168
	public function getToutesEspeces() {
-
 
169
    	
-
 
170
    	$requete_toute_espece = 'SELECT * FROM ods_especes';
-
 
171
    	$liste_espece = $this->executerRequete($requete_toute_espece);
-
 
172
    	
-
 
173
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
-
 
174
    	
-
 
175
    	$especes_par_id = array();
-
 
176
    	
-
 
177
    	foreach($liste_espece as $espece) {
-
 
178
    		
-
 
179
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
-
 
180
    		$especes_par_id[$espece['id_espece']] = $espece;    		
-
 
181
    	}
-
 
182
        	
-
 
183
	    return $especes_par_id;
-
 
184
    }
167
    
185
    
168
    private function formaterTableauEspecePourEnvoi($espece) {
186
    private function formaterTableauEspecePourEnvoi($espece) {
169
    	
187
    	
170
    	return array( 
188
    	return array( 
171
    	    'id_espece' => $espece['oe_id_espece'],
189
    	    'id_espece' => $espece['oe_id_espece'],
172
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
190
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
173
            'nom_scientifique' => $espece['oe_nom_scientifique'],
191
            'nom_scientifique' => $espece['oe_nom_scientifique'],
174
            'espece_ecole' => $espece['oe_espece_ecole'],
192
            'espece_ecole' => $espece['oe_espece_ecole'],
175
            'description' => $espece['oe_description'],
193
            'description' => $espece['oe_description'],
176
            'climat' => $espece['oe_ce_climat'],
194
            'climat' => $espece['oe_ce_climat'],
177
            'evenements' => $espece['oe_ce_evenements'],
195
            'evenements' => $espece['oe_ce_evenements'],
178
            'type' => $espece['oe_ce_type']
196
            'type' => $espece['oe_ce_type']
179
        );
197
        );
180
    	
198
    	
181
    }
199
    }
182
}
200
}
183
?>
201
?>