Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 289 | Details | Compare with Previous | Last modification | View Log | RSS feed

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