Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 31 | Rev 41 | 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
 
33 aurelien 3
class OdsEspece extends GestionTriple {
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
 
37
		//TODO: méthode de création d'espeèce spéciales aux admins
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
        //Mise à jour de la personne
46
        // Identification de l'utilisateur
47
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
48
 
49
        // Contrôle du non détournement de l'utilisateur
50
        if ($this->etreAutorise($id_utilisateur)) {
51
            try {
52
 
53
            } catch (PDOException $e) {
54
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
55
            }
56
        }
57
 
58
        $this->envoyer();
59
    }
60
 
61
    /**
62
     * Méthode appelée pour supprimer un élément
63
     */
64
    public function deleteElement($uid) {
65
        // Vérification de la présence des id passés par l'url
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.";
68
        } else {
69
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
70
 
71
            // Contrôle du non détournement de l'utilisateur
72
            if ($this->etreAutorise($id_utilisateur)) {
73
                // Récupération des id passés par l'url
74
                $identifiants = explode(',', rtrim($uid[1], ','));
75
                if (count($identifiants) == 0) {
76
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
77
                } else {
78
                    foreach ($identifiants as $id_personne) {
79
                        try {
80
                        } catch (PDOException $e) {
81
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
82
                        }
83
                    }
84
                }
85
            }
86
        }
87
 
88
        // Envoie sur la sortie standard
89
        $this->envoyer();
90
    }
91
 
92
/** ======================= Methodes privées d'accès au informations ================================ */
93
 
94
    private function getElementParDefaut() {
33 aurelien 95
    	return $this->getEspecesParType();
31 aurelien 96
    }
33 aurelien 97
 
31 aurelien 98
    private function getEspecesPourStation($params) {
99
 
100
    	$id_station = $params[0];
101
 
33 aurelien 102
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
103
    								    'WHERE oe_id_espece IN '.
104
    								    	'( '.
105
    								   			'SELECT oi_ce_espece FROM ods_individus '.
106
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
107
    										') '.
108
    									'ORDER BY oe_ce_type';
109
 
110
 
111
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
31 aurelien 112
 
33 aurelien 113
    	foreach($especes_pour_station as &$espece_dans_station) {
114
 
115
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);
116
    	}
117
 
118
	    return $especes_pour_station;
31 aurelien 119
    }
120
 
33 aurelien 121
    private function getEspecesParType() {
31 aurelien 122
 
33 aurelien 123
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type';
124
    	$liste_espece = $this->executerRequete($requete_toute_espece);
125
 
126
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
127
 
128
    	$especes_par_type = array();
129
 
130
    	foreach($liste_espece as $espece) {
131
 
132
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
133
 
134
    		$type = $espece['type'];
135
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
136
 
137
    		if(!isset($especes_par_type[$type])) {
138
    			$especes_par_type[$type] = array(
139
    				'nom' => $nom_type,
140
    				'especes' => array()
141
    			);
142
    		}
143
 
144
    		$especes_par_type[$type]['especes'][] = $espece;
145
    	}
146
 
31 aurelien 147
	    return $especes_par_type;
148
    }
33 aurelien 149
 
150
    private function formaterTableauEspecePourEnvoi($espece) {
151
 
152
    	return array(
153
    	    'id_espece' => $espece['oe_id_espece'],
154
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
155
            'nom_scientifique' => $espece['oe_nom_scientifique'],
156
            'espece_ecole' => $espece['oe_espece_ecole'],
157
            'description' => $espece['oe_description'],
158
            'climat' => $espece['oe_ce_climat'],
159
            'evenements' => $espece['oe_ce_evenements'],
160
            'type' => $espece['oe_ce_type']
161
        );
162
 
163
    }
31 aurelien 164
}
165
?>