Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 210 | Rev 284 | Go to most recent revision | 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
     */
35
    public function createElement($params) {
33 aurelien 36
 
46 aurelien 37
		//TODO: méthode de création d'espèce spéciale aux admins
33 aurelien 38
 
31 aurelien 39
    }
40
 
41
    /**
42
     * Méthode appelée pour mettre à jour un élément
43
     */
44
    public function updateElement($uid, $params)    {
45
 
215 aurelien 46
    	//TODO: méthode de modification d'espèce spéciale aux admins
31 aurelien 47
    }
48
 
49
    /**
50
     * Méthode appelée pour supprimer un élément
51
     */
52
    public function deleteElement($uid) {
215 aurelien 53
 
54
    	//TODO: méthode de suppression d'espèce spéciale aux admins
31 aurelien 55
    }
56
 
215 aurelien 57
/** ======================= Methodes d'accès au informations ================================ */
31 aurelien 58
 
59
    private function getElementParDefaut() {
33 aurelien 60
    	return $this->getEspecesParType();
31 aurelien 61
    }
41 aurelien 62
 
63
    private function getEspece($params) {
64
 
65
    	$id_espece = $params[0];
66
 
67
    	$requete_informations_espece = 'SELECT * FROM ods_especes '.
68
    								   'WHERE oe_id_espece = '.$this->proteger($id_espece);
69
 
70
    	$informations_espece = $this->executerRequete($requete_informations_espece);
71
 
72
    	$informations_espece_formatees = array();
73
 
74
    	if(!empty($informations_espece)) {
75
    		$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
76
    	}
77
 
78
    	return $informations_espece_formatees;
79
    }
33 aurelien 80
 
31 aurelien 81
    private function getEspecesPourStation($params) {
82
 
83
    	$id_station = $params[0];
84
 
33 aurelien 85
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
86
    								    'WHERE oe_id_espece IN '.
87
    								    	'( '.
88
    								   			'SELECT oi_ce_espece FROM ods_individus '.
89
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
90
    										') '.
210 aurelien 91
    									'ORDER BY oe_ce_type, oe_nom_vernaculaire';
33 aurelien 92
 
93
 
94
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
31 aurelien 95
 
33 aurelien 96
    	foreach($especes_pour_station as &$espece_dans_station) {
97
 
98
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);
99
    	}
100
 
101
	    return $especes_pour_station;
31 aurelien 102
    }
103
 
33 aurelien 104
    private function getEspecesParType() {
31 aurelien 105
 
210 aurelien 106
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type, oe_nom_vernaculaire';
33 aurelien 107
    	$liste_espece = $this->executerRequete($requete_toute_espece);
108
 
109
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
110
 
111
    	$especes_par_type = array();
112
 
113
    	foreach($liste_espece as $espece) {
114
 
115
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
116
 
117
    		$type = $espece['type'];
118
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
119
 
120
    		if(!isset($especes_par_type[$type])) {
121
    			$especes_par_type[$type] = array(
122
    				'nom' => $nom_type,
123
    				'especes' => array()
124
    			);
125
    		}
126
 
69 aurelien 127
    		$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;
33 aurelien 128
    	}
129
 
31 aurelien 130
	    return $especes_par_type;
131
    }
33 aurelien 132
 
207 aurelien 133
	public function getToutesEspeces() {
134
 
210 aurelien 135
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_nom_vernaculaire';
207 aurelien 136
    	$liste_espece = $this->executerRequete($requete_toute_espece);
137
 
138
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
139
 
140
    	$especes_par_id = array();
141
 
142
    	foreach($liste_espece as $espece) {
143
 
144
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
145
    		$especes_par_id[$espece['id_espece']] = $espece;
146
    	}
147
 
148
	    return $especes_par_id;
149
    }
150
 
33 aurelien 151
    private function formaterTableauEspecePourEnvoi($espece) {
152
 
153
    	return array(
154
    	    'id_espece' => $espece['oe_id_espece'],
155
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
156
            'nom_scientifique' => $espece['oe_nom_scientifique'],
157
            'espece_ecole' => $espece['oe_espece_ecole'],
158
            'description' => $espece['oe_description'],
159
            'climat' => $espece['oe_ce_climat'],
160
            'evenements' => $espece['oe_ce_evenements'],
161
            'type' => $espece['oe_ce_type']
162
        );
163
 
164
    }
31 aurelien 165
}
166
?>